关于AspNetPager 采用URL分页时 执行两次绑定的解决办法
2010-08-19 11:59
381 查看
先看代码:
在Page_Load 和 AspNetPager 的OnPageChanged 的事件中都绑定的话,会执行两次查询。
原因是 采用URL分页时 在页面加载时AspNetPager会自动执行 OnPageChanged事件
解决方法:
一、 首先在Page_Load 中获取数据数 用于初始化AspNetPager,然后仅在AspNetPager 的OnPageChanged 的事件中进行数据绑定就可以了,
详细: /article/4655211.html
二、大多数分页存储过程都是数据和统计一起返回到,所以第一种方法比较麻烦,经过测试发现了第二种方法。
获取page参数并在绑定代码中初始化AspNetPager的CurrentPageIndex,数据绑定操作只需要在Page_Load或者AspNetPager 的OnPageChanged中绑定一次就可以了,
上边的代码中的page参数是在基类WebBase.Data中获取赋给一个CurrentPageIndex 属性
修改后
<abw:AspNetPager ID="AspNetPager1" class="pager" runat="server" AlwaysShow="true" PageSize="2" OnPageChanged="AspNetPager1_PageChanged" UrlPaging="True" NextPageText="Next>>" PrevPageText="<<Prev" ShowFirstLast="False" ShowPageIndexBox="Never" CurrentPageButtonStyle="margin-right:2px;" PagingButtonSpacing=""> </abw:AspNetPager>
using System; using System.Collections.Generic; using System.Web.UI; using AutoBuildWeb.Service; namespace AutoBuildWeb.Web.Manage.WebData.ArticleManage { public partial class News : WebBase.Data { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ArticlesInit(); } } /// <summary> /// 初始化文章列表 /// </summary> private void ArticlesInit() { int recordsCount; string category = Request.QueryString["category"], key = Request.QueryString["key"]; int categoryId = string.IsNullOrEmpty(category) ? 0 : Convert.ToInt32(category); if (!string.IsNullOrEmpty(key)) { txtKeywords.Text = key; } IList<Object[]> list = ArticleSrv.GetArticles(categoryId, key, AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex, false, out recordsCount); AspNetPager1.RecordCount = recordsCount; rptArticle.DataSource = list; rptArticle.DataBind(); } protected void AspNetPager1_PageChanged(object sender, EventArgs e) { ArticlesInit(); } } }
在Page_Load 和 AspNetPager 的OnPageChanged 的事件中都绑定的话,会执行两次查询。
原因是 采用URL分页时 在页面加载时AspNetPager会自动执行 OnPageChanged事件
解决方法:
一、 首先在Page_Load 中获取数据数 用于初始化AspNetPager,然后仅在AspNetPager 的OnPageChanged 的事件中进行数据绑定就可以了,
详细: /article/4655211.html
二、大多数分页存储过程都是数据和统计一起返回到,所以第一种方法比较麻烦,经过测试发现了第二种方法。
获取page参数并在绑定代码中初始化AspNetPager的CurrentPageIndex,数据绑定操作只需要在Page_Load或者AspNetPager 的OnPageChanged中绑定一次就可以了,
上边的代码中的page参数是在基类WebBase.Data中获取赋给一个CurrentPageIndex 属性
修改后
<abw:AspNetPager ID="AspNetPager1" class="pager" runat="server" AlwaysShow="true" PageSize="2" UrlPaging="True" NextPageText="Next>>" PrevPageText="<<Prev" ShowFirstLast="False" ShowPageIndexBox="Never" CurrentPageButtonStyle="margin-right:2px;" PagingButtonSpacing=""> </abw:AspNetPager>
using System; using System.Collections.Generic; using System.Web.UI; using AutoBuildWeb.Service; namespace AutoBuildWeb.Web.Manage.WebData.ArticleManage { public partial class News : WebBase.Data { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ArticlesInit(); } } /// <summary> /// 初始化文章列表 /// </summary> private void ArticlesInit() { int recordsCount; string category = Request.QueryString["category"], key = Request.QueryString["key"]; int categoryId = string.IsNullOrEmpty(category) ? 0 : Convert.ToInt32(category); if (!string.IsNullOrEmpty(key)) { txtKeywords.Text = key; } IList<Object[]> list = ArticleSrv.GetArticles(categoryId, key, AspNetPager1.PageSize, CurrentPageIndex, false, out recordsCount); AspNetPager1.RecordCount = recordsCount; AspNetPager1.CurrentPageIndex = CurrentPageIndex; rptArticle.DataSource = list; rptArticle.DataBind(); } } }
相关文章推荐
- spring MVC中一次url请求却执行目标action两次的解决办法
- (转载)js(jquery)的on绑定点击事件执行两次的解决办法
- Struts2中Action的@BeforeResult方法被执行两次或多次解决办法
- 关于AS3代码异步执行问题的个人常用解决办法
- 网页中的数据提交后,在数据库执行两次的解决办法
- 关于个推“证书只能绑定一个bundleId”问题的解决办法
- 关于android SDK安装Failed to fetch URL出错解决办法
- RichEditControl控件的ContentChanged事件执行两次的解决办法
- 关于Spring2.X AOP采用Annotation方式不支持JDK1.6的解决办法
- Struts2中Action的@BeforeResult方法被执行两次或多次解决办法
- 关于执行Oracle下Sql语句中遇到的特殊字符问题解决办法。
- 关于 URL中包含%2F(/)或者%5C(\)无法访问到服务器的解决办法
- iOS 长按手势执行两次解决办法
- 关于执行free函数的时候提示” double free or corruption“错误的解释和解决办法
- oc中关于延迟执行代码的一点解决办法
- 关于url,js中文传参的解决办法,亲测有效
- 绑定微信公众平台提示“请求URL超时”解决办法
- 关于JAVA中URL传递中文参数,取值是乱码的解决办法
- 三种关于Linux执行.sh文件,提示No such file or directory错误的解决办法
- spring 定时任务执行两次解决办法