zoukankan      html  css  js  c++  java
  • 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——支持多种数据库。让分页更加简单。



    分页控件的源代码下载网址:http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html
    (在网页的下面

    下载文件里面由一个测试网页:http://localhost:5561/test/Testlist.aspx?fid=1
    请注意后面的参数。
    在webconfig里面修改连接字符串和数据库类型。DataType ---- 1: MS SQL ;2:Oledb;3:ODBC。
    <appSettings>
        
    <add key="DataType" value ="1"/>
      
    </appSettings>
        
    <connectionStrings>
            
    <add name="ConnStr" connectionString="Data Source=.;Initial Catalog=*** ;persist security info=False;user id=sa;pwd=;" providerName="System.Data.SqlClient"/>
        
    </connectionStrings>


    环境说明:

    IDE:vs2008。

    Framework:.net 2.0。

    数据源:各种数据库。

    形式:服务器控件,引用DLL即可。


    功能说明:


    分页的方式显示提取数据。包括UI的绘制、分页算法(根据属性组合成SQL语句)、提取数据、绑定控件、计算总记录数(可以自动保存,以提高效率)

    两种分页方式 PostBack 和 URL。(暂时只支持Postback分页。)


    贴两个图先:




    优点:

    1、支持多重数据库

           这个要感谢 数据访问函数库(其实是ADO.net2.0),还有就是 PageSQL 这个类。

    2、使用简单,能在控件内部实现的都实现了,外面只需要设置属性就可以实现分页的功能,不需要处理翻页时产生的事件。

    最少只需要写四行代码就可以搞定。

     myPage.ControlGridID = GV.ID;    //设置显示数据的控件的ID值。
    myPage.TableName = " TableName";    //表名或者字段名
    myPage.TableOrderColumns = "OrderByColumns";    //排序字段
    myPage.BindFirstPage();                         //显示第一页的数据

    3、两种分页方式 PostBack 和 URL,可以随时切换。

    4、不使用存储过程,便于分页算法的升级。还可以灵活设置查询条件。(不使用存储过程也可以达到很高的效率)

     
            分页控件终于升级到了.net2.0,虽然功能上没有增加,但是修改了大部分的内部代码。原先的是基于 .net1.1 的,升级后基于 .net2.0。虽然现在 .net3.5都出来了,但是为了能够更“兼容”一些,所以还是采用了.net2.0。

            原来的代码是写在了一个.cs文件里面,看起来比较混乱,层次不够分明,在想扩展的时候就比较麻烦,现在按照“职责”分成了几块,每一块负责一个功能。

    PageSQL 负责生成分页用的 SQL语句,
    PageGetData 负责到数据库里(通过数据访问函数库)提取数据,然后填充到集合(比如DataTable)里面,
    PageUI 负责UI的绘制。

    这样就分工明确,便于替换,比如现在的分页控件默认的数据库是 SQL Server2005,那么目前提供的分页算法是利用Row_Number()来实现的,而 SQL Server2000 里没有这个函数,那么就要换一个分页算法,这时就可以继承PageSQL类,实现一个针对SQL Server2000的分页算法(难道是传说中的多态)。这样就可以很方便的更换数据库和分页算法(同一种数据库,多种分页算法)(难道是传说中的对修改关闭?)。

     
    使用方法和常用的属性说明

    public partial class TestList : BaseClass.BasePageList 
        
    {
            
    protected void Page_Load(object sender, EventArgs e)
            
    {
                myPage.ControlGridID 
    = GV.ID;       //设置显示数据的控件的ID值。

                
    if (!Page.IsPostBack)
                
    {
                    
    //属性会保存在ViewState里面,所以在第一次访问的时候赋值就可以了。
                    SetPageInfo();
                }

            }


            
    private void SetPageInfo()
            
    {
                myPage.TableName 
    = " TableName";                //表名或者字段名
                
    //myPage.TableShowColumns = "*";                //显示的字段
                
    //myPage.TableIDColumns = "MasteID";            //主键
                myPage.TableOrderColumns = "OrderByColumns";    //排序字段
                myPage.PageSize = 10;                           //一页的记录数
                myPage.NaviCount = 5;                           //页号导航的数量
                myPage.TableQuery = "";                         //查询条件

                myPage.BindFirstPage();                         
    //显示第一页的数据
            }

        }


    缺点:

    由于时间仓储,有些功能还不完善。提供源代码,感兴趣的话,欢迎一起讨论:)

     直接看源码:

    http://www.cnblogs.com/jyk/archive/2008/06/25/1229967.html 

    http://www.cnblogs.com/jyk/archive/2008/06/25/1229973.html 

    目前使用的分页算法

     set nocount on;
                with t_pager as (
                   select *,rn = ROW_NUMBER() OVER (ORDER BY id desc) FROM test_indexorder
                 )
                SELECT id,name,content,co1,co2,co3,co4,co5 from t_rn WHERE rn between 19007 and 19057;

     

  • 相关阅读:
    [HEOI2016/TJOI2016]树
    luogu P4198 楼房重建
    [USACO11DEC]Umbrellas for Cows
    luogu P2700 逐个击破
    一、MegaCli命令介绍
    dmidecode -t1 | egrep "Manufacturer|Product Name"
    IPMITOOL常用操作指令V1.0
    CentOS 7上的性能监控工具
    Could not open device at /dev/ipmi0
    n95医用口罩(常见型号1860 或者9132)防水无呼吸阀
  • 原文地址:https://www.cnblogs.com/jyk/p/1229958.html
Copyright © 2011-2022 走看看