• 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.3 【增加了使用说明】


    ================================

    欢迎转载,但是请注明出处。本文出自博客园 。谢谢合作!

    ================================

    最新版本:V2.0.0.7 。http://www.cnblogs.com/jyk/archive/2008/07/28/1255101.html

    下载:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html

    ================================


        增加了几个属性、两个事件、修改了一下内部的代码。分页控件的大体结构终于确定下来了。详细说明一下功能吧。

    1、基本信息
        控件名称:QuickPager ASP.Net2.0 分页控件。
        版本:V2.0.0.3。
        IDE:vs2005、vs2008。
        语言:C#
        Framework:.net 2.0。

    2、两种分页方式: PostBack 和 URL。目前URL的分页方式不太完善。

    3、两种数据提取方式
            a、自动。由分页控件负责UI的绘制、计算总记录数、总页数、提取数据、事件的处理和绑定控件等功能。
            b、自定义。有调用控件者提供总记录数、数据的处理和控件绑定等,分页控件仅负责UI的绘制、计算页数和事件的触发(不对事件作具体的处理,仅通知调用者)。
        
    4、数据源:自定义数据提取方式不限制数据库,自动分页方式目前支持SQL 2000、SQL2005,下一个版本会支持Access、Excell。
     

        目前可以选择的分页算法:Row_Number(仅支持SQL2005)、表变量(支持SQL 2000 、SQL2005)。

    5、支持的显示数据的控件:DataGrid、GridView、DataList、Repeater等。只要有DataSource、DataBind的控件都可以。

    6、功能:分页。包括UI的绘制、分页算法(根据属性组合成SQL语句)、提取数据、绑定控件、计算总记录数(可以保存以提高效率)
    服务器控件,引用DLL即可。


    7、2.0.0.3新增加了两个事件:
        PageChanged 在页号改变的时候触发,可以使用这个事件达到自定义提取数据的目的。
        GridBinded 在绑定控件后出发,采用自动提取数据的方式的时候可以修饰一下GridView控件。

    8、新增了三个属性
        SetGetDataKind 提取数据的方式,myPageGetDataKind.Customer 自定义;myPageGetDataKind.Auto 自动。
        SetUIKind 分页方式,myPageUIKind.PostBack myPageUIKind.URL
        SetPageRecordCount = 200; 在采用自定义方式提取数据的时候,必须设置总记录数。
        SetSQLKind 可以选择的分页算法,myPageSQLKind.TableVar 表变量,myPageSQLKind.Row_Number 。以后还会增加几个。(这个属性以前的版本就有了。)

    9、结构图:



    在项目里添加控件地方法:http://www.cnblogs.com/jyk/archive/2008/07/05/1231337.html

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

    一会写一下详细的使用说明。

    关于自定义事件的问题,十分感谢园子里的兄弟,帮了很大的忙。

    QuickPager v2.0.0.3的使用方法:

        老规矩,先修改 web.config里面的连接字符串的设置。demo使用的是 SQL 2000里面的 northwind数据库,
    sa ,admin。如果您的环境是一样的话,那就可以下不用修改了。

        另外由于分页控件改了一下名称,所以如果您的工具箱里添加了以前版本的分页控件,那么还得麻烦一下,先把原来的删除掉,在重新添加一下。工具箱里添加控件的方法:myPage —— asp.net分页控件的使用示例。基本应用和查询功能

    1、自定义提取数据 + PostBack分页
        有兄弟说我的分页控件“管得太多”了,数据处理的不应该包含在分页控件里面,如果您还有更好的处理数据地方法,或者分页控件自带的提取数据的方法不能满足您的需求(比如您相对XML进行分页)的话,可以使用这种方法。这个应该和吴旗娃的分页控件的使用方式是一样的。采用这种方法,分页控件只负责UI的绘制,页数的计算(需要设置总记录数和一页的记录数)和翻页时触发事件,其他的事情就要自行处理了。
        代码:
        

    protected void Page_Load(object sender, EventArgs e)
        
    {
            
    if (!Page.IsPostBack)
                ShowData();
        }


        
    private void ShowData()
        
    {
            
    //给分页控件赋值
            
    //自定义提取数据的方式
            myPage1.SetGetDataKind = JYK.Controls.Page.myPageGetDataKind.Customer;

            myPage1.PageSize 
    = 15;      //一页显示的记录数。
            myPage1.NaviCount = 8;      //页号导航的个数。
            myPage1.SetPageRecordCount = 1000;      //直接设置总记录数。获取总记录数方式自由发挥:)

            
    //ok。
            
    //提取数据就自己写了,因为这里是自定义提取数据的演示。
        }


        
    protected void myPage1_PageChanged(object sender, JYK.Controls.Page.PageArgs e)
        
    {
            
    //页号改变时触发的事件
            Response.Write(e.CurrentPageIndex);     //要翻到的页号

            
    //由于我不会自己提取数据,我都是用分页控件的,所以这里的实现代码您自己写吧。
            
    //如果您也不熟的话,建议采用自动获取数据的方式。
        }



    2、自定义提取数据 + URL分页的演示
        这个和上面的类似,如何处理数据还是要自己处理的。
        代码:

     protected void Page_Load(object sender, EventArgs e)
        
    {
            ShowData();
        }


        
    private void ShowData()
        
    {
            
    //给分页控件赋值

            
    //自定义提取数据的方式
            myPage1.SetGetDataKind = JYK.Controls.Page.myPageGetDataKind.Customer;

            
    //URL的分页方式
            myPage1.SetUIKind = JYK.Controls.Page.myPageUIKind.URL;

            myPage1.PageSize 
    = 15;      //一页显示的记录数。
            myPage1.NaviCount = 8;      //页号导航的个数。
            myPage1.SetPageRecordCount = 1000;      //直接设置总记录数。获取总记录数方式自由发挥:)

            
    string tmpPageIndex = Request.QueryString["pageno"];
            
    if (!Functions.IsInt(tmpPageIndex))
            
    {
                tmpPageIndex 
    = "1";
            }


            Int32 pageIndex 
    = Int32.Parse(tmpPageIndex);

            
    if (pageIndex > myPage1.PageCount)
                pageIndex 
    = myPage1.PageCount;


            
    //显示第 pageIndex 页的数据,自定义提取数据的方式,所以请自己处理,呵呵。
            Response.Write(pageIndex);

            myPage1.PageIndex 
    = pageIndex;  //设置页号。URL的方式还没有优化

            
    //ok。
            
    //提取数据就自己写了,因为这里是自定义提取数据的演示。
        }



    3、自动提取数据 + PostBack分页的演示
        这个就是原先版本的方法,只是有一点变化,原来的 BindFirstPage() 方法不用再写了,又少了一行代码,呵呵。
        代码:请注意事件的应用。

     private DateTime dt1;
        
    private DateTime dt2;

        
    protected void Page_Load(object sender, EventArgs e)
        
    {
            Response.Cache.SetNoStore();

            dt1 
    = DateTime.Now;
            dt2 
    = DateTime.Now;

            
    if (!Page.IsPostBack)
            
    {
                setPageInfo();
            }

        }


        
    设置分页控件的属性

        
    protected void myPage1_PageChanged(object sender, JYK.Controls.Page.PageArgs e)
        
    {
            
    //页号改变时触发的事件,在自动获取数据的情况下,可以不处理这个事件。
            
    //e.CurrentPageIndex     //要翻到的页号

            
    //这里用作计时。
            TimeSpan ts = DateTime.Now - dt1;
            Lbl_msg.Text 
    = "组合SQL需要的时间:" + ts.Seconds + "" + ts.Milliseconds + "毫秒<BR>";
            
        }

        
    protected void myPage1_GridBinded(object sender, JYK.Controls.Page.PageArgs e)
        
    {
            
    //绑定GridView后触发的事件,在自动获取数据的情况下,可以不处理这个事件。
            TimeSpan ts = DateTime.Now - dt2;
            Lbl_msg.Text 
    += "组合SQL和提取数据、绑定控件需要的时间:" + ts.Seconds + "" + ts.Milliseconds + "毫秒<BR>";

        }



    4、自动提取数据 + URL分页的演示
        这个还有点小问题,将在下一个版本里修改,这里就先不说了。
        
    5、同一个页面使用两个分页控件的演示(仅限PostBack分页)
        有的时候我们需要在同一个网页对多个表(或者多表联合)进行分页,就是说一个页面需要放两个(或多个)不同的分页控件,那么要怎么设置呢?其实也很简单,分页控件和GridView对应正确就可以了。目前仅限于PostBack的分页方式。

        稍微修改一下就可以实现一个页面,多个数据库的分页了。这个在下一个版本里说明。
        代码:

    private DateTime dt1;
        
    private DateTime dt2;

        
    protected void Page_Load(object sender, EventArgs e)
        
    {
            Response.Cache.SetNoStore();

            dt1 
    = DateTime.Now;
            dt2 
    = DateTime.Now;

            Lbl_msg.Text 
    = "";

            
    if (!Page.IsPostBack)
            
    {
                setPageInfo1();
                setPageInfo2();
            }

        }


        
    设置分页控件的属性

        
    设置分页控件的属性

        
    protected void myPage1_PageChanged(object sender, JYK.Controls.Page.PageArgs e)
        
    {
            
    //这里用作计时。
            TimeSpan ts = DateTime.Now - dt1;
            Lbl_msg.Text 
    += "[控件1]组合SQL需要的时间:" + ts.Seconds + "" + ts.Milliseconds + "毫秒<BR>";

        }

        
    protected void myPage1_GridBinded(object sender, JYK.Controls.Page.PageArgs e)
        
    {
            
    //绑定GridView后触发的事件,在自动获取数据的情况下,可以不处理这个事件。
            TimeSpan ts = DateTime.Now - dt2;
            Lbl_msg.Text 
    += "[控件1]组合SQL和提取数据、绑定控件需要的时间:" + ts.Seconds + "" + ts.Milliseconds + "毫秒<BR>";

        }

        
    protected void myPager2_GridBinded(object sender, JYK.Controls.Page.PageArgs e)
        
    {
            TimeSpan ts 
    = DateTime.Now - dt1;
            Lbl_msg.Text 
    += "[控件2]组合SQL需要的时间:" + ts.Seconds + "" + ts.Milliseconds + "毫秒<BR>";

        }

        
    protected void myPager2_PageChanged(object sender, JYK.Controls.Page.PageArgs e)
        
    {
            TimeSpan ts 
    = DateTime.Now - dt2;
            Lbl_msg.Text 
    += "[控件2]组合SQL和提取数据、绑定控件需要的时间:" + ts.Seconds + "" + ts.Milliseconds + "毫秒<BR>";

        }


    温馨提示:
    SetGetDataKind 数据提取方式(默认:自动提取)
    SetSQLKind 分页算法 (默认:表变量)
    SetUIKind 分页方式 (默认:PostBack)
    这三个属性在控件的属性窗口设置更为方便。

    分页控件的demo下载网址:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html

  • 相关阅读:
    根据CPU核数合理设置线程池大小
    jvm类加载的过程
    springboot2.x整合redis实现缓存(附github链接)
    记录一次坎坷的debug之旅,NUXT框架页面多开假死现象,NUXT刚开始可以访问,突然就访问无响应,并且前后端均未出现任何报错提示:现在是早晨4点35分
    hibernate用Query.setFirstResult和Query.setMaxResults分页时,传入的manresults不能为0,否则解析后的sql会去查全表数据
    工作时发现oracle的分页查询的数据会重复,进行分析并给出解决方式
    看别人的代码是进步最快的方式
    关于电磁炉使用时造成的电磁场导致洗衣机等电器失效的情况总结
    关于在项目中创建一个新的线程之后需要将线程持有的数据库连接对象归还的思考
    Oracle分页和mysql分页的区别
  • 原文地址:https://www.cnblogs.com/jyk/p/1236692.html
Copyright © 2020-2023  润新知