分享一个更好用的分页控件——QuickPager asp.net2.0 分页控件(总体介绍。这个控件都能做什么呢?up有分) QuickPager分页控件的特点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用前,需要在web.config里面注册控件和链接字符串 <?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> Postback最简单的设置/// <summary> /// postback 的最简单的分页设置 /// </summary> public partial class Simpleness : BaseWebPage { #region 初始化 protected override void OnInit(EventArgs e) { base.OnInit(e); //数据访问函数库的实例,使用基类里定义的。 Pager1.DAL = base.Dal ; //设置显示数据的控件 Pager1.ShowDataControl = this.GV; //定义QuickPager_SQL,设置Page属性 Pager1.PagerSQL.Page = this; //默认是PostBack的分页方式 } #endregion protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { SetPagerInfo(); //设置表名、字段名等 } } #region 给QuickPager_SQL 设置属性,以便拼接SQL private void SetPagerInfo() { //表名或者视图名,必须设置 Pager1.PagerSQL.TableName = "Manage_FunListCol"; //表名或者视图名称 //一些分页算法必须设置主键。 Pager1.PagerSQL.TablePKColumn = "ListColID"; //主键名称,不支持复合主键 //排序字段也是必须设置的,否则就无法准确分页 Pager1.PagerSQL.TableOrderByColumns = "ListColID desc "; //排序字段,根据分页算法而定,可以支持多个排序字段 //默认TableShowColumns是 * ,可以不设置 //Pager1.PagerSQL.TableShowColumns = "*"; //需要显示的字段 //没有查询条件,那就不用设置了嘛。 //Pager1.PagerSQL.TableQuery = ""; //查询条件 //默认一页20条记录 //Pager1.PageSize = 4; //一页显示的记录数 //设置分页方式,默认是Max_TopTop //Pager1.PagerSQL.SetPagerSQLKind = PagerSQLKind.Max_TopTop; } #endregion }URL 手动运行的基本设置/// <summary> /// URL 的完全自定义分页 /// </summary> public partial class URL01 : System.Web.UI.Page { protected override void OnInit(EventArgs e) { base.OnInit(e); //设置为URL方式分页 //Pager1.PagerTurnKind = PagerTurnKind.URL; //设置为自定义分页 //Pager1.PagerRunKind = PagerRunKind.Customer; //以上两个属性可以在前面通过属性面板来设置,也可以在这里设置。 //本demo是在前台通过属性来设置的。 } protected void Page_Load(object sender, EventArgs e) { //设置必要的属性 setPagerInfo(); //获取指定的页号。 string str = "用户要看第{0}页的记录。"; this.lbl_Msg.Text = string.Format(str, this.Pager1.PageIndex.ToString()); } private void setPagerInfo() { //设置总记录数。您可以用您自己喜欢的方式来获取 Pager1.PageCount = 102; //每页记录数 Pager1.PageSize = 10; //设置导航页号的数量 Pager1.NaviCount = 5; } } 对了,忘记说了,样式可以通过css来修改。上一页、下一页等,都可以通过属性来修改。 能想aspnetpager那样css不?没细看 可以设置css。显示数据的部分,比如GridView的设置,<table>的设置,和本控件没有关系,本控件只负责绑定控件。<table>的列 <tr>如何设置,也是和本控件无关的。 不错好像还是只能单字段排序如果是JQUERY无刷新翻页pagination不错这个给LZ参考一下 可以根据生成的html里的ID来设置css,每个都有单独的ID只是现在的ID设置还是不太规范。需要修改一下。现在有一个比较简陋的jQuery的ajax分页,基本功能实现了,只是还不够完善。 用过jqgrid分页还可以。真正的无刷新吧。列宽可以拖东的 同样呀,你说的似乎也不是大众的吧。到底大众的想法是什么样子的呢?至少这么设置,想更新的话可以更新,不想更新的话,就不去点,没有大碍。如果没有连接,这个时候又想更新怎么办呢?按F5?做个控件也不容易,只考虑大众也不行,还有小众呢。对了,想起来一个例子,就是csdn的。csdn的论坛,回复一次就会被提到第一页,那么第一页的更新速度是很快的。几分钟就会更新一次,甚至更短。打开第一页,选择几个感兴趣的贴子,打开看看,然后呢?你们会做什么?我会再点一下第一页,这时候第一页的贴子就会有些变化。只是我是点的左面的树里的节点。 谢谢找bug。马上考虑修改。 http://demo.naturefw.com/Nonline/QuickPager/PostBack/Simpleness.aspx直接点第四页,在点上一页,点2下后就会页面无法显示还有就是输入大于总页数时是不是跳到最后一页更好呢哈哈 1、我按照你的操作,试了一下,没有出现问题。网站的IIS数只有200 。可能是同时访问人数过多,造成的页面无法显示。请问,你说的页面无法显示,是asp.net的那种错误信息吗?还是其他的错误?2、当输入的页号大于总页数的时候,是会跳到最后一页的。但是这个页号必须是整数。不知道你测试的时候是不是输入的小数。如果页号是小数的话,会认定为不正确的页号,从而跳到第一页。谢谢你的测试。 服务器空间的IIS数太少了,很容易出现无法访问的问题。 仔细看看,我现在还在用jons的字符串 替大家说句:请把控件独立出来,不要让人家下你一大堆dll. 可以考虑把QuickPager分页控件独立出来。不过似乎我要维护两套程序了。 你说的数据绑定指的是什么呢?1 楼有代码。如果你说的是控件的绑定,比如GV.DataBind()的话,那么完全不用操心,您根本不需要写这个代码,只需要 //设置显示数据的控件 Pager1.ShowDataControl = this.GV;只需要把控件ID设置给ShowDataControl 属性即可。如果是说数据如何显示的话,也就是GridView等控件的列、模板如何设置,那这个就和分页控件没有关系了。=============关于数据如何显示的问题,如果是后台的数据列表,那么可以用我的“数据显示控件”,这个不用写代码,只需要设置元数据即可。但是前台网页的话,那就只有手动写代码了,因为页面里的列表实在是太灵活了。 我先收藏下,回头看看,找找Bug! 怎么把分页算法写成一个公共的方法来调用啊 弹出确认对话框的奇怪问题,不知大家有没有遇到过; 如何把视图中一行的某个字段的值赋给一个变量的呀 怎么刷新不提交数据 如何在asp.net中实现“验证码”的功能 奇怪的问题,帮忙!! 为什么有的页面要清空缓存??? 关于webcontrols,请大家帮忙!! 鄙人初到武汉,哪位朋友能告诉我有没有招b/s或web开发的公司呢? 欢迎大家来探讨CodeBhind的问题: 关于asp.net ajax提交数据返回json数据的问题 IIS下关于fullscreen的问题!
<?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>
Postback最简单的设置/// <summary>
/// postback 的最简单的分页设置
/// </summary>
public partial class Simpleness : BaseWebPage
{
#region 初始化
protected override void OnInit(EventArgs e)
{
base.OnInit(e); //数据访问函数库的实例,使用基类里定义的。
Pager1.DAL = base.Dal ; //设置显示数据的控件
Pager1.ShowDataControl = this.GV; //定义QuickPager_SQL,设置Page属性
Pager1.PagerSQL.Page = this;
//默认是PostBack的分页方式 }
#endregion protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
SetPagerInfo(); //设置表名、字段名等
} } #region 给QuickPager_SQL 设置属性,以便拼接SQL
private void SetPagerInfo()
{
//表名或者视图名,必须设置
Pager1.PagerSQL.TableName = "Manage_FunListCol"; //表名或者视图名称
//一些分页算法必须设置主键。
Pager1.PagerSQL.TablePKColumn = "ListColID"; //主键名称,不支持复合主键
//排序字段也是必须设置的,否则就无法准确分页
Pager1.PagerSQL.TableOrderByColumns = "ListColID desc "; //排序字段,根据分页算法而定,可以支持多个排序字段
//默认TableShowColumns是 * ,可以不设置
//Pager1.PagerSQL.TableShowColumns = "*"; //需要显示的字段
//没有查询条件,那就不用设置了嘛。
//Pager1.PagerSQL.TableQuery = ""; //查询条件 //默认一页20条记录
//Pager1.PageSize = 4; //一页显示的记录数 //设置分页方式,默认是Max_TopTop
//Pager1.PagerSQL.SetPagerSQLKind = PagerSQLKind.Max_TopTop;
}
#endregion
}
URL 手动运行的基本设置/// <summary>
/// URL 的完全自定义分页
/// </summary>
public partial class URL01 : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//设置为URL方式分页
//Pager1.PagerTurnKind = PagerTurnKind.URL;
//设置为自定义分页
//Pager1.PagerRunKind = PagerRunKind.Customer; //以上两个属性可以在前面通过属性面板来设置,也可以在这里设置。
//本demo是在前台通过属性来设置的。 } protected void Page_Load(object sender, EventArgs e)
{
//设置必要的属性
setPagerInfo(); //获取指定的页号。
string str = "用户要看第{0}页的记录。";
this.lbl_Msg.Text = string.Format(str, this.Pager1.PageIndex.ToString()); } private void setPagerInfo()
{
//设置总记录数。您可以用您自己喜欢的方式来获取
Pager1.PageCount = 102; //每页记录数
Pager1.PageSize = 10;
//设置导航页号的数量
Pager1.NaviCount = 5; }
}
没细看
不错好像还是只能单字段排序如果是JQUERY无刷新翻页pagination不错这个给LZ参考一下
同样呀,你说的似乎也不是大众的吧。到底大众的想法是什么样子的呢?至少这么设置,想更新的话可以更新,不想更新的话,就不去点,没有大碍。如果没有连接,这个时候又想更新怎么办呢?按F5?做个控件也不容易,只考虑大众也不行,还有小众呢。
对了,想起来一个例子,就是csdn的。csdn的论坛,回复一次就会被提到第一页,那么第一页的更新速度是很快的。几分钟就会更新一次,甚至更短。打开第一页,选择几个感兴趣的贴子,打开看看,然后呢?你们会做什么?我会再点一下第一页,这时候第一页的贴子就会有些变化。只是我是点的左面的树里的节点。
谢谢找bug。马上考虑修改。
还有就是输入大于总页数时是不是跳到最后一页更好呢哈哈
1、我按照你的操作,试了一下,没有出现问题。网站的IIS数只有200 。可能是同时访问人数过多,造成的页面无法显示。请问,你说的页面无法显示,是asp.net的那种错误信息吗?还是其他的错误?2、当输入的页号大于总页数的时候,是会跳到最后一页的。但是这个页号必须是整数。不知道你测试的时候是不是输入的小数。如果页号是小数的话,会认定为不正确的页号,从而跳到第一页。谢谢你的测试。
可以考虑把QuickPager分页控件独立出来。不过似乎我要维护两套程序了。
你说的数据绑定指的是什么呢?1 楼有代码。如果你说的是控件的绑定,比如GV.DataBind()的话,那么完全不用操心,您根本不需要写这个代码,只需要 //设置显示数据的控件
Pager1.ShowDataControl = this.GV;
只需要把控件ID设置给ShowDataControl 属性即可。
如果是说数据如何显示的话,也就是GridView等控件的列、模板如何设置,那这个就和分页控件没有关系了。
=============关于数据如何显示的问题,如果是后台的数据列表,那么可以用我的“数据显示控件”,这个不用写代码,只需要设置元数据即可。但是前台网页的话,那就只有手动写代码了,因为页面里的列表实在是太灵活了。