【开源】QuickPager ASP.NET2.0分页控件V2.0.0.3 即原来的myPage。带使用说明、源码下载

自然框架 2008-07-06 11:26:18
增加了几个属性、两个事件、修改了一下内部的代码。分页控件的大体结构终于确定下来了。详细说明一下功能吧。

1、基本信息
控件名称:QuickPager ASP.Net2.0 分页控件。
版本:V3.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分页的演示
这个和上面的类似,如何处理数据还是要自己处理的。


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的分页方式。

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

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

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


详细说明
...全文
274 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
aspnetswggws 2011-03-20
  • 打赏
  • 举报
回复
sarsico 2008-07-09
  • 打赏
  • 举报
回复
mark
pdsnet 2008-07-08
  • 打赏
  • 举报
回复
顶 .............
自然框架 2008-07-08
  • 打赏
  • 举报
回复
想就参加呀,至少我还不会mySQL呢。
编程有钱人了 2008-07-08
  • 打赏
  • 举报
回复
我是想啊
谁叫俺菜呢!~没那水平!~~~
大家都是高手,我就不班门弄斧了-_-!

等我有了经验说不定也.....那是后话了
呵呵
sxmonsy 2008-07-07
  • 打赏
  • 举报
回复
顶呀顶,努力顶
自然框架 2008-07-07
  • 打赏
  • 举报
回复
你只有等待吗?不想参与进来吗?目前我还没有用到MYsql,所以。。。
chocolee 2008-07-07
  • 打赏
  • 举报
回复
mark
wfcfan 2008-07-07
  • 打赏
  • 举报
回复
only like aspnetpager

Adechen 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Jinglecat 的回复:]
You're my hero!
[/Quote]
编程有钱人了 2008-07-07
  • 打赏
  • 举报
回复
jyk 上次我问你的分页支持mysql的问题解决了吗??

急啊!~~~~
编程有钱人了 2008-07-07
  • 打赏
  • 举报
回复
看了下详细说明.....
目前还不支持mysql
等待后续版本吧.....
wxdxy 2008-07-07
  • 打赏
  • 举报
回复
嗯,好的,支持lz,
自然框架 2008-07-07
  • 打赏
  • 举报
回复
>>大致看了下,你的这个分页控件和aspnetpager这个控件的区别就是加入了数据库元素.不知理解是否正确

可以这么理解,

还有和aspnetpager相比,缺少了对ajax的支持,页面自定义上也是弱了一点(但不是不能自定义)。

但是强就强在了分页算法(数据库元素不是太准确)上,可以方便的更换分页算法,不同的情况、不同的条件选择适应的分页算法,这个是最方便的地方。

还有就是对查询的支持,可以很灵活的添加查询条件。

提取数据方面,不用在自己写代码了呀,这个在使用方面就简单多了。而且可以保证效率,有好多分页算法可以选择的。
ssuunnbbiirrdd 2008-07-07
  • 打赏
  • 举报
回复
大致看了下,你的这个分页控件和aspnetpager这个控件的区别就是加入了数据库元素.不知理解是否正确
Jinglecat 2008-07-06
  • 打赏
  • 举报
回复
You're my hero!
a11377815 2008-07-06
  • 打赏
  • 举报
回复
mark,学习了!!!!
gbfxixi 2008-07-06
  • 打赏
  • 举报
回复
学习中。
收藏一下,3Qlz.
自然框架 2008-07-06
  • 打赏
  • 举报
回复
谢谢

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧