【自然框架】QuickPager分页控件,新增一种分页方式——伪URL分页(Postback版)

 
适用场景

  先说一下伪URL分页的适用场景。在网站的网页里实现查询功能,如果查询条件比较少的话,还比较好办,把查询条件放到URL里面传递即可。但是如果查询条件过多,就会照成URL的长度过长。既不好看,编写起来也很麻烦。如果查询条件是汉字的话,还有一个编码的问题。

 

Postback分页

 

  再看看现有的几种分页方式。Postback分页方式可以利用ViewState来很方便的保存查询条件,但是由于采用表单提交的方式实现,搜索引擎不能识别。这个对于网站来说,是一个很难接受的。

 

URL分页

  这个是通过URL里的参数来分页,搜索引擎可以识别,而且还能使用URL重写的方式。但是要保留查询条件就比较麻烦了,一般是通过把查询条件放到URL里面来传递,但是编写起来比较复杂。当然还有其他的方法来实现。

 

可能的方法

 

  您可能会说,对于一般的不用查询的分页显示数据的需求,可以URL分页来实现。而对于需要查询的需求,我们在换成Postback的分页方式。

 

  这个是可以的,但是也不太方便。

 

  那么能不能方便的把Postback分页和URL分页的优点结合起来呢?自然框架里的QuickPager分页控件新增了一种“伪URL分页”的方式(不知道有没有其他人也是实现了类似的方法)。这种新的方式结合了Postback分页和URL分页的优点。

 

伪URL分页

 

  看起来像URL分页,当鼠标放在“下一页”(其他也类似)上面,会显示xxx.aspx?page=3这类的信息。但是实际上他是Postback的分页。

 

 

伪URL分页的连接方式:

 

<a  href="PsotURL.aspx?page=7" onclick="javascript:__doPostBack('Pager1',7);return false;">下一页</a>

 

 

Postback的连接方式:

<a  href="javascript:__doPostBack('Pager1',2)">下一页</a>

 

 

 

  对比看一下就可以发现原理。其实也很简单,postback是在href里面调用js函数,而伪URL改成了在onclick里面调用js函数,这样herf就可以“节省”出来,我们“伪装”一下,加上页号的参数即可。然后在onclick里面写上return false,“禁用”herf。

 

  您可能会问了,如果直接在地址栏里面输入“PsotURL.aspx?page=7”会如何?当然是显示第7页的数据了(前提是有第七页)。如果做不到这一点的话,也就无法“欺骗”搜索引擎了。

 

  另外伪URL分页还可以保留URL里面的参数,比如需要按照商品分类显示数据,URL里要有kind=3这样的参数,那么可以直接加在URL里面,连接里会自动加上kind=3的。

 

思维扩展

  这种方式也可以变成伪URL分页ajax版。就是说实质上用的ajax分页,但是为了照顾搜索引擎,可以加上一个连接给搜索引擎看。至于URL重写,可不可以,我还没有考虑好。

 

  在线演示:http://demo.naturefw.com/Nonline/QuickPager/default.aspx

 

    源代码和演示的代码 下载地址:http://www.naturefw.com/nature/down.aspx

 

补充:

代码编写也是非常简单的,和Postback分页相比,只是多了一个属性的设置,把Pager1.PagerTurnKind 这个属性为PagerTurnKind.PostBackURL 。

其他的完全可以按照postback分页的方式和习惯来做。 

 

 

代码

/// <summary>
    /// 伪URL分页
    /// </summary>
    public partial class PsotURL : System.Web.UI.Page
    {
        #region 初始化
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            //数据访问函数库的实例 
            Pager1.DAL = Data.DALFactory.CreateDAL();

            //设置显示数据的控件
            Pager1.ShowDataControl = this.GV;

            //定义QuickPager_SQL,设置Page属性
            Pager1.PagerSQL.Page = this;
            
            //设置成PostBackURL的分页方式
            this.Pager1.PagerTurnKind = PagerTurnKind.PostBackURL;

        }
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                SetPagerInfo();         //设置表名、字段名等
            }

        }

        #region 给QuickPager_SQL 设置属性,以便拼接SQL
        private void SetPagerInfo()
        {
            Pager1.PagerSQL.TableName = "Person_User_ViewLog";              //表名或者视图名称
            Pager1.PagerSQL.TableShowColumns = "UserCode as 用户,substring(IP,0,6) + '...' as IP ,访问时间,URL as 访问页面";    //需要显示的字段
            Pager1.PagerSQL.TablePKColumn = "LogID";             //主键名称,不支持复合主键
            Pager1.PagerSQL.TableOrderByColumns = "LogID desc "; //排序字段,根据分页算法而定,可以支持多个排序字段
            Pager1.PagerSQL.TableQuery = "";                      //查询条件

            Pager1.PageSize = 4;                                  //一页显示的记录数
            Pager1.NaviCount = 8;

            //设置分页方式
            Pager1.PagerSQL.SetPagerSQLKind = PagerSQLKind.Max_TopTop;

        }
        #endregion
    }

 

 

时间: 2024-08-22 15:03:14

【自然框架】QuickPager分页控件,新增一种分页方式——伪URL分页(Postback版)的相关文章

Android开发之基本控件和四种布局方式详解_Android

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

Android开发之基本控件和四种布局方式详解

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

QuickPager asp.net 分页控件、表单控件等自定义控件下载 和介绍 【2009.09.07更新】

    最新下载地址: 自然框架的源代码.Demo.数据库.配置信息管理程序下载(2010.01.25更新)     QuickControl web控件集包含的控件 QuickControl web控件集--基本控件: 控件名称 说明 详细介绍 MyTextBox  继承TextBox,增加了几个属性,继承IControlMgr接口 进入 MyDropDownList  继承DropDownList,增加了几个属性,继承IControlMgr接口 进入 MyCheckBoxList  继承Ch

分页控件 实战 Post篇

前言: 分页,大伙并不陌生 也许你正用着:DataGrid/GridView自带的分页 也许你正用着:网上流传较广的AspnetPager分页控件 也许你正用着:其它同事写的分页控件 又也许:你正是那个写分页控件的人,如果是,现在的你是否回头看过自己当初的源码?感觉?   附言: 昨夜,花了两个小时左右,把一个2007年那会写的分页控件,重新优化改造了一下: cs代码大小从原来的14K,缩减到4K. 原来的分页控件源码:点击下载   在看以下正文之前,还是希望能看一下原来的分页控件的源码,这样才

用javascript实现的分页控件

  随着Ajax的应用越来越多,经常需要在前台去加载数据,这样可以减少页面加载的时间,同时也改善了用户的体验性,所以结合实际的项目需要我写了一个javascript的分页控件,用于绑定table,实现类似datagrid分页控件的功能.以下为调用Js分页控件的代码. var rows; var tab = document.getElementById("table1");//table对象 var _total=0;//数据总数 var pager;//分页对象 function p

Winform分页控件使用详细介绍

自从上篇随笔<Winform分页控件最新版本发布,并提供基于DotNetBar界面的版本>介绍了最新版本的分页控件,并提供下载使用后,很多人对分页控件非常感兴趣(毕竟Winform数据分页是很常见的),并关注该分页控件应该如何使用,其实分页控件在之前很多篇随笔中断断续续都有介绍,为了使大家对分页控件有个系统的认识,本篇详细介绍分页控件的一些属性设置及相关使用注意事项,使大家对该分页控件有一个更深的了解.跟系统的认识,以便在相关的项目开发中熟练使用.分页控件效果     实现步骤  1.在Vis

ASP.Net分页控件发布

asp.net|分页|控件 由于.net自带的分页功能极其死板,自定义性不强不能满足需求,俺花了一个多星期的时间 写成的一个.net分页控件. 特性: 1.支持datagrid,datalist等分种数据显示控件,理论上只要有datasource的控件都可以 2.支持url方式分页,url分页的每一页都可以被搜索引擎搜到,并且支持url重写 3.控件样式可自定义 4.封装完全,使用过程序只需写一行代码   1 /******************************************

打造通用ASP.NET数据分页控件

asp.net|分页|控件|数据 对于几乎所有的数据表现Web应用来说,组织好数据的显示方式.避免给用户带来混乱的感觉就是最主要的目标之一.每个页面显示20条记录当然是可以接受的,但每页显示10000条记录就很容易给用户带来不便了.将数据分成多个页面显示,即对数据进行分页,是解决此类问题的最常见的办法. 一.慨述 ASP.NET本身只提供了一个支持数据分页的控件,即DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataGrid分页控件提供的功能似

完善自定义分页控件

上一篇写了一个简单的自定义分页控件,当时写的不够完善,不能自定义控件的样式.现在完善了,望同 大家共同探讨. 现在已经在网上发布的分页控件特别多,而且大多都功能特别强,但是之所以选择自己写,主要是因为自 己写可以根据自己的要求来设计,不用的功能就功能免了. 本控件可以自定义样式,而且传入的参数和其它常用的分页控件差不多,记录总数和一页的数量,是否自 定义样式,当页面数量特别多的时候,可以在分页信息栏中显示前几页和后几页. 具体代码如下: using System;using System.Col