【自然框架】QuickPager分页控件的总体介绍和在线演示

  

QuickPager分页控件的特点

 

  1.  两种运行方式:自动运行、手动运行。前者便捷,后者灵活。
  2.  多种分页方式:Postback、Postback伪URL、URL、URL重写、Ajax For服务器控件伪URL。
  3.  多种分页算法:Max、颠倒Top(优化版)、Row_Number、自动适应等。可以应对多种数据库和各种需求。
  4.  支持多种数据显示控件:GridView、DataList、Repeater等控件。有DataSource和DataBind()的控件都支持。
  5.  不需要存储过程,但是仍然可以保证高效率!
  6.  分页方式、分页算法、显示数据控件,都可以通过属性来“一键”切换。
  7.  URL分页方式里支持直接提取记录集,目前支持DataTable和WebList2(一个固定的实体类)。
  8.  Postback分页方式,支持直接通过URL参数(?page=3)访问指定页号(比如第3页)的记录。
  9.  URL分页方式,支持自定义URL参数,直接添加即可,不用设置属性。 
  10.  生成SQL的类库(QuickPagerSQL)。
  11.  自动运行方式里,可以通过实现接口的方式更换其他的“数据访问类库”。

 

 

下面是详细介绍和在线演示地址

运行方式——自动运行

 

  这个就好比自动洗衣机,放好衣物、洗衣粉,做好选项,然后启动洗衣机。洗衣机就会自动按照步骤来洗衣服了,我们可以忙其他的事情了。很方便和节省时间。

QuickPager分页控件的自动运行方式也是一样,设置好属性就可以了,数据提取、数据绑定、回发事件处理,都可以不用去管。非常便捷,这个在一起也介绍过了。

QuickPager分页控件也设置了两个事件,在控件绑定前和绑定后触发,以方便我们实现一些特殊需求。如果只是一般的分页的话,那么就不用去管这两个事件了。

 

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

 

 

运行方式——手动运行

 

  自动运行方式很方便,但是也失去了一些灵活性,而且给人一种“高耦合”、违反单一职责的感觉。这个确实是确定。

那么怎么办呢?我们可以选择“手动运行”。这种方式下,分页控件只负责页面的显示(上一页、下一页、页号导航、记录数、页数等)和事件的触发(还有其他的一些,比如URL的参数处理等)。其他的功能都可以按照您喜欢的方式来处理。比如如何提取数据,提取哪里的数据,如何绑定等等。这样就增加了QuickPager分页控件的灵活性。

 

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

 

分页方式——Postback

 

  这个适合后台管理类的项目,比如网站后台管理、OA、CRM等。一个最大的优点就是可以很方便的保留用的输入的查询条件。

支持直接获取指定页号的记录。

  可能您认为使用postback分页,第一次访问只能看到第一页的数据,想在第一次访问就看到其他页的数据就实现不了的。这是个误区,其实是可以实现的,只是QuickPager是可以实现的。通过list.aspx?page=3 这样的连接,就可以看到第三页的记录。当然进入后还是可以正常翻页,看其他的页面。

 

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

 

 

分页方式——Postback伪URL

  如果在网页里面使用Postback来分页的话,那么对于搜索引擎就很不友好了。那么怎么办呢?除了可以采用URL的方式来分页之外,还可以用这种伪URL的分页方式。

  我们可以对比一下两个连接方式。

Postback的连接:

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

 

 

伪URL的连接:

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

 

 

  原理也很简单,就是把原来放在href里的js函数,放在了onclick事件里面,然后加上return false。再把href里的连接按照URL的方式来写就可以了。

  这样对于搜索引擎来说,是一个可以访问的连接。对于用户来说,起作用的是那个js函数。这样即可以照顾搜索引擎,又可以利用Postback的保留查询条件的优势了。

  当然这个并不是一个很好的解决方法,更好的是ajax伪URL,不过这个难度要高一点。Postback伪URL,完全可以用Postback的方式来写,对于习惯这种方式的人来说,就比较舒服了。

 

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

 

 

分页方式——URL

 

  这个适合在网页里使用,优点是搜索引擎可以识别,当然收不收录是另一个话题了,至少是可以识别的。

QuickPager分页控件在URL分页方式里有一个很方便的地方——可以自动保留URL里面的参数。实现这个功能并不需要设置什么属性,完全自动的。比如 list.aspx?page=2&kind=3&area=10 。在翻页的时候,kind=3、area=10这类的参数都会被自动保留(传递下去)。当然其他的参数也都可以。如果感兴趣的话,您可以通过下面的连接地址自己测试一下。

 

  请注意:page 这个参数是分页控件专用的,您自己的参数请使用其他的名称。

 

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

分页方式——URL重写

 

  这个是完全为了搜索引擎而做的。有人说,这么做并不会给收录带来什么好处,完全是一样的。但是现在比较流行这个,有一些人喜欢,那么作为一个分页控件来说,支持这种分页方式也就是必须的了。

 

  可以通过属性来设置页面名称,默认是list{0}.aspx ,{0}代表页号。您可以设置成list_{0}.html 等方式。

 

在线演示:http://demo.naturefw.com/QuickPager/URL/list1.aspx 

 

 

分页方式——Ajax For服务器控件伪URL

 

  这个名称比较长。Ajax是刚加入的一个功能,目前还不太完善。这个是针对postback的分页方式,也就是针对服务器控件来做的。基于jQuery.ajax实现,没有用asp.net 的ajax控件。还有一个优点就是可以通过修改属性,切换成其他的分页方式。

  如果您的程序里使用服务器控件(GridView)来显示数据,老板(客户)听说了Ajax,于是要求项目里都要改成ajax的方式。那么您就可以采用这种方式了。原来的程序不用改,只需要换成QuickPager分页控件,选择AjaxForWebControl方式即可,其他的代码就不用改了。除了GridView控件之外,其他控件也是支持的。

  当然,这个也不是很好的方案,只是一个比较应付的,暂时顶一会的方法。

 

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

 

分页方式 —— 一键切换

  这么多的分页方式,看起来有点乱,其实是很方便管理的。可以通过修改PagerTurnKind属性来切换分页方式,其他属性的设置都是一样的。

 

分页算法:

  分页算法,就是提取分页数据用的SQL。因为一些数据库不能通过一条简单的SQL来获取指定页号的记录,所以需要一些小技巧。我习惯上把这种SQL就叫做分页算法了。也不知道这种叫法是否正确。
  分页算法是通过属性设置,在运行是动态拼接出来的。不需要存储过程。有多种分页算法可供选择,多种分页算法可以支持不同的数据库和不同的需求。比如如果是SQL Server2005,那么就可以选择Row_number的分页算法,SQL Server2000就不能选择这个算法了。MySQL可以选择limit,只是其他数据库就不支持了。提供了 多种算法就可以应对不同的数据库了。

 

Max:
  这个比较常见了,优点是写起来比较简单,缺点是子能单字段排序,不能多字段排序。

 

颠倒Top(优化版):


  颠倒Top,虽然写起来比较复杂,但是效率并不是像想象中的那么差,他的优点是支持多字段排序,效率也不错。而且QuickPager采用的颠倒Top还做了优化,效率更佳。同时修改了一个bug,即显示最后一页多记录的情况。

 

Row_Number:
  这个是针对SQL Server2005的,不多说了。

 

 

自动适应:
  Max只能是单字段排序,颠倒Top支持多字段排序,但是如果单字段排序的话,就有点浪费了。如果一开始是单字段排序,后来变成了多字段排序,怎么办?自动适应就是解决这样的问题,设置后,会根据排序字段的数量来选择是Max还是颠倒Top。这样就更方便了。

 

分页算法 —— 一键切换
  同上,只需要修改SetPagerSQLKind属性即可切换分页算法,其他的属性设置都是一样的。

 

分页算法的在线演示:http://demo.naturefw.com/Nonline/QuickPager/PagerSQL/PagerSQLPage.aspx

 

 

多种数据显示控件

  后台管理里常见的就是GridView了,以前是DataGrid。前台网页里是Repeater和DataList。还有。Net2.0里的DetailsView、FormView也是支持的,理论上DropDownList、ListBox等也是支持的,只是似乎这些控件不需要分页。

 

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

 

 

无需存储过程

  一提到分页,您可能想到的是   存储过程,(其实是吴旗娃的那个分页控件吧)。可是大多数情况都是在存储过程里面拼接SQL来实现分页功能的,这样做存储过程的优势就一点都优势都体现不出来了。预编译、缓存执行计划这两个是存储过程的优势,但那是对在存储过程里面直接写SQL来说的。

  所以与其在存储过程里面拼接SQL,不如写个类库来管理。QuickPagerSQL就是这样的类库。上面说的几种分页算法,他都可以根据属性,在运行时动态拼接出来。这样我们只需要关心表名/视图名、排序字段、查询条件等就可以了,至于什么样的分页算法,让QuickPagerSQL来生成就可以了。

  URL分页里,可以直接获取DataTable,这样我们可以直接在页面里遍历DataTable了。当然如果你不喜欢可以不用的。我是比较喜欢这种方式的。

另外还可以直接获取一个实体类——WebList2。这个是我自定义的一个类,他是根据众多列表页面的特点而设计的。这里就先不详细说了,以后在细说。

 

一个接口

 

  在自定运行方式下,会使用QuickPagerSQL来生成需要的SQL,然后通过DataAccessLibrary来提交给数据库。如果你不喜欢这个数据访问函数库,那么怎么办呢?您可以实现这个接口,换成你自己的数据访问方式。

  有了这个接口,至少在理论上支持更换其他的数据访问类库了。

  您可能会问了,QuickPagerSQL有没有接口?目前还没有设计这方面的接口,因为目前还没有发现有类似功能的类库,设计了也没得可换。当然也可能是我孤陋寡闻了。

 

 

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

 

源码下载:http://www.naturefw.com/ 

 

 

使用前,需要在web.config里面注册控件和链接字符串

 

代码

<?xml version="1.0"?>
<configuration>
  <!--URL重写的设置,居然必须是第一个-->
  <configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  </configSections>
  
  <appSettings>
    <add key="DataBaseType" value="1"/>
    <add key="PagerSQLKey" value="63432870"/>
  </appSettings>
  <connectionStrings>
    <add name="ConnectionString" connectionString="Data Source=.;Initial Catalog=Nature_Demo;persist security info=False;user id=sa;pwd=admin;" providerName="System.Data.SqlClient"/>
  </connectionStrings>

  <!--重写规则-->
  <RewriterConfig>
    <Rules>
      <!--URL重写的演示-->
      <RewriterRule>
        <LookFor>~/QuickPager/URL/list(\d+)\.aspx</LookFor>
        <SendTo>~/Nonline/QuickPager/URL/URLRewriter.aspx?page=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

 
  <system.web>
    <!--URL重写的设置-->
    <httpHandlers>
      <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
    </httpHandlers>

    <pages>
      <!--注册自定义控件-->
      <controls>
        <add assembly="Nature.WebControls" namespace="Nature.WebControls" tagPrefix="Nature"/>
      </controls>
    </pages>

        <compilation debug="true" tempDirectory="t:\" />
        <authentication mode="Windows"/>
      </system.web>
  </configuration>

 

 

 

 

 

时间: 2024-09-20 08:05:25

【自然框架】QuickPager分页控件的总体介绍和在线演示的相关文章

【视频】自然框架之分页控件的使用方法(一) PostBack方式的一般分页方式

  前言:分页控件的优点   1. 按需所取 -- 需要几条记录就从数据库里提取几条记录,不会多取. 2. 使用简单 -- 设置几个属性就可以实现分页的功能. 3. 多种分页算法 -- (即分页用的SQL语句)可以根据不同的需求灵活选择 4. 支持多种数据库 -- 用不同的分页算法对应不同的数据库.     第一章:PostBack分页   目录: 1.1:分页效果 1.2:属性,如何实现一般的分页效果 1.3:如何实现查询功能 1.4:事件,分页控件的两个事件 1.5:方法,数据绑定的三种方式

【视频】自然框架之分页控件的使用方法(二) 下载、DLL说明和web.config的设置

    上次说的是QuickPager分页控件的PostBack的使用方式,也提供了源码下载.但是有些人下载之后发现有一大堆的文件夹,还有一大堆的DLL,到底要用哪个呀?不会都要用吧.   当然不需要全都引用了,只需要引用三个DLL就可以了.下载压缩包解压后,打开 \_WebControls\bin 这个文件夹.需要用到这里的三个DLL.   \_WebControls\bin\Nature.DataAccessLibrary.dll 数据访问函数库,和数据库打交道的\_WebControls\

【自然框架】QuickPager分页控件的单独的源码 V2.0.4.2。

   QuickPager的源码分离出来之后由两个项目组成,一个是QuickPager.另一个是QuickPagerSQL.分页控件的演示也独立了出来.   如图1 .   QuickPager是分页控件的项目,负责UI的绘制,即上一页.下一页.页号导航等的绘制,还有事件的触发,控件绑定等功能. QuickPagerSQL是生产分页用的SQL的项目,这个也是独立的,可以单独调用这个dll. QuickPager项目里引用的DLL: 1. Nature.CommonFunction 这里除了常用函

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

 适用场景 先说一下伪URL分页的适用场景.在网站的网页里实现查询功能,如果查询条件比较少的话,还比较好办,把查询条件放到URL里面传递即可.但是如果查询条件过多,就会照成URL的长度过长.既不好看,编写起来也很麻烦.如果查询条件是汉字的话,还有一个编码的问题.   Postback分页   再看看现有的几种分页方式.Postback分页方式可以利用ViewState来很方便的保存查询条件,但是由于采用表单提交的方式实现,搜索引擎不能识别.这个对于网站来说,是一个很难接受的.   URL分页 这

Winform分页控件使用详细介绍

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

【自然框架】js版的QuickPager分页控件 V2.0

优点: 1.  通过更换模板可以控制各个分页元素(比如首页.末页,页号导航等)的位置和是否显示. 2.  通过更换css可以实现各种UI风格和效果.(附带24套css效果) 3.  Js的方式创建分页UI,不占用服务器资源. 4.  可以通过插件的方式更换各部分js代码.如果自带的js代码不能满足您的需求,那么您自己写的插件实现需要的效果. 5.  Ajax的方式获取记录集,减轻网络负担. 6.  多种调用方式,让"偷懒"和灵活共存. 缺点: 1.  不支持SEO.因为用js和ajax

【开源】QuickPager 分页控件的内部结构,和OO原则与设计模式

  关键字:提出需求.需求分析.原则.设计模式.索引        先说一下讨论的范围:使用数据库保存信息的项目,b/s结构,asp.net编写.请不要讨论这个范围之外的事情哦,谢谢!        这里想说的并不仅限于一个控件,而是一个关于分页的解决方案.信息都是放在数据库里的,在b/s结构里面一次提取所有的数据显示并不是一个好的方法,所以就需要一个把数据分成多个页的形式来显示.关于分页的解决方案有多种,一种实现方式可以用一个"分页控件"(我的解决方案),也可以用其他的方式来体现(比

QuickPager分页控件,最简单的设置代码

代码 /// <summary>    /// postback 的最简单的分页设置    /// </summary>    public partial class PostSimpleness : BaseWebPage    {        #region 初始化        protected override void OnInit(EventArgs e)        {            base.OnInit(e);             //数据访问

【自然框架】QuickPager asp.net 分页控件的Ajax分页方式。

  上次比较匆忙,Ajax的分页方式仅实现了基本功能,或者说只是验证了我的想法.现在对Ajax分页有做了一些调整,现在可以正式用了.   使用方法还是非常简单,可以完全按照URL分页方式来做,只需要把PagerTurnKind 属性 设置为:PagerTurnKind.AjaxForWebControl;就可以了.   然后前台需要引用jquery-1.4.2.min.js和QuickPager-1.0.js.QuickPager-1.0.js是QuickPager需要用的一个js脚本,Demo