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

简介: QuickPager分页控件的特点    两种运行方式:自动运行、手动运行。前者便捷,后者灵活。 多种分页方式:Postback、Postback伪URL、URL、URL重写、Ajax For服务器控件伪URL。

  

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里面注册控件和链接字符串

 

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
<? 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 >

 

 

 

 

 

相关文章
|
6月前
|
Web App开发 JSON 前端开发
SAP UI5 进阶 - JSON 模型字段里的值,显示在最终 UI5 界面上的奥秘分析试读版
SAP UI5 进阶 - JSON 模型字段里的值,显示在最终 UI5 界面上的奥秘分析试读版
30 0
|
缓存 前端开发 JavaScript
React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发
在日常开发中,特别是内部使用的后台系统时,我们常常会需要用表格来展示数据,同时提供一些操作用于操作表格内的数据。简单的表格直接用原生 HTML table 就好,但如果要在 React 中实现一个功能丰富的表格,其实是非常不容易的。在本站之前的文章《最好的 6 个 React Table 组件详细亲测推荐》 中有提到过 react-table 这个库,如果对这个库不太了解的同学可以先了解一下,这里不再赘述。简而言之,react-table 是一个非常强大的库,它与常见的表格组件不同,它不负责渲染 HTML 和 CSS,而是提供了一系列的 hooks 让我们可以灵活地构建功能强大的表格组件。
1179 0
|
4月前
|
存储 JSON 程序员
C#实现数据导出任一Word图表的通用呈现方法及一些体会
C#实现数据导出任一Word图表的通用呈现方法及一些体会
|
4月前
|
前端开发 Java UED
通用分页集模糊,全部查询,分页查询为一体(2)演示,优化上篇通用查询分页
通用分页集模糊,全部查询,分页查询为一体(2)演示,优化上篇通用查询分页
|
7月前
|
Web App开发 前端开发 JavaScript
SAP UI5 应用开发教程之九十二 - 基于 SAP UI5 JSONModel 客户端模型的列表分页显示(Table Pagination)前提试读版
SAP UI5 应用开发教程之九十二 - 基于 SAP UI5 JSONModel 客户端模型的列表分页显示(Table Pagination)前提试读版
31 0
|
缓存 前端开发 数据可视化
前端基础向--空表格处理与分页调整,优化用户体验
前端基础向--空表格处理与分页调整,优化用户体验
153 0
|
前端开发 JavaScript Java
|
XML SQL 缓存
Android MVVM框架使用(十二)记事本功能增强:视图类型、批量删除、搜索笔记
Android MVVM框架使用(十二)记事本功能增强:视图类型、批量删除、搜索笔记
243 0
Android MVVM框架使用(十二)记事本功能增强:视图类型、批量删除、搜索笔记
|
Python
保姆级别操作掌握UI布局,Python简化的UI应用展示【建议收藏】
正式的Python专栏第6篇,同学站住,别错过这个从0开始的文章!
288 0
保姆级别操作掌握UI布局,Python简化的UI应用展示【建议收藏】
如何使用配置的方式修改SAP C4C UI的字段标签,以及背后的工作原理
I was asked by one partner that it is expected to adapt the label of “New” button into “Add”, and change the text of first menu item from “Add” to “From Contact”.
如何使用配置的方式修改SAP C4C UI的字段标签,以及背后的工作原理