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

简介: ================================ 欢迎转载,但是请注明出处。本文出自博客园 。谢谢合作! ================================   最新版本:V2.0.0.7 。

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

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

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

 

最新版本: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();
        }

    }


    
设置分页控件的属性 #region 设置分页控件的属性
    
private void setPageInfo()
    
{
        
//以下三个属性必须赋值
        this.myPage1.ControlGridID = this.GV.ID;

        
this.myPage1.TableName = " Products";      //表名或者视图名
        this.myPage1.TableOrderColumns = "ProductName,ProductID ";  //排序字段,可以写多个字段

        
//以下属性可以不赋值
        
//采用表变量的分页算法(默认值)
        this.myPage1.SetSQLKind = JYK.Controls.Page.myPageSQLKind.TableVar;

        
this.myPage1.TableShowColumns = "*";    //显示的字段,可以不填,默认为 *
        this.myPage1.PageSize = 5;              //一页显示的记录数,默认一页显示20条记录
        this.myPage1.TableQuery = "";           //查询条件,不包含 where 
        this.myPage1.NaviCount = 8;             //页号导航的数量,默认10个

        
this.myPage1.TableIDColumns = "ProductID";       //主键
        
        
//this.myPage1.SetSQLKind = JYK.Controls.Page.myPageSQLKind.Row_Number;
        
//this.myPage1.SetSQLKind = JYK.Controls.Page.myPageSQLKind.TableVar ;

        
//原先的 BindFirstPage() 可以不必执行了。

    }

    
#endregion


    
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();
        }

    }


    
设置分页控件的属性 #region 设置分页控件的属性
    
private void setPageInfo1()
    
{
        
//以下三个属性必须赋值
        this.myPage1.ControlGridID = this.GV.ID;

        
this.myPage1.TableName = " Products";      //表名或者视图名
        this.myPage1.TableIDColumns = "ProductID";       //主键
        this.myPage1.TableShowColumns = "*";    //显示的字段,可以不填,默认为 *
        this.myPage1.TableOrderColumns = "ProductName,ProductID ";  //排序字段,可以写多个字段
        this.myPage1.TableQuery = "";           //查询条件,不包含 where 
         
        
this.myPage1.PageSize = 5;              //一页显示的记录数,默认一页显示20条记录
        this.myPage1.NaviCount = 8;             //页号导航的数量,默认10个


    }

    
#endregion


    
设置分页控件的属性 #region 设置分页控件的属性
    
private void setPageInfo2()
    
{
        
//以下三个属性必须赋值
        this.myPage2.ControlGridID = this.GV2.ID;

        
this.myPage2.TableName = " [Orders Qry]";      //视图名
        this.myPage2.TableIDColumns = "OrderID";       //主键
        this.myPage2.TableShowColumns = "*";    //显示的字段,可以不填,默认为 *
        this.myPage2.TableOrderColumns = "OrderID ";  //排序字段,可以写多个字段
        this.myPage2.TableQuery = "";           //查询条件,不包含 where 

        
this.myPage2.PageSize = 10;              //一页显示的记录数,默认一页显示20条记录
        this.myPage2.NaviCount = 10;             //页号导航的数量,默认10个

    }

    
#endregion


    
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

相关文章
|
2月前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
|
2月前
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
51 0
|
2月前
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
50 0
|
2月前
|
JavaScript C#
【傻瓜级JS-DLL-WINCC-PLC交互】2.wincc使用C#开发的.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】2.wincc使用C#开发的.net控件
56 0
|
2月前
|
JavaScript Linux C#
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
87 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
100 0
|
2月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
40 0
|
2月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
161 5
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
|
11月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
137 0