文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>关于AspNetPager 采用URL分页时 执行两次绑定的解决办法

关于AspNetPager 采用URL分页时 执行两次绑定的解决办法

时间:2010-08-19  来源:彭白洋

 先看代码:

 

代码
1 <abw:AspNetPager ID="AspNetPager1" class="pager"  runat="server" 
2 AlwaysShow="true" PageSize="2"
3 UrlPaging="True" NextPageText="Next&amp;gt;&amp;gt;" PrevPageText="&amp;lt;&amp;lt;Prev"
4 ShowFirstLast="False" ShowPageIndexBox="Never"
5 CurrentPageButtonStyle="margin-right:2px;" PagingButtonSpacing=""
6 onpagechanged="AspNetPager1_PageChanged">
7 </abw:AspNetPager>

 

代码
 1 namespace AutoBuildWeb.Web.Manage.WebData.ArticleManage
2 {
3 public partial class News : WebBase.Data
4 {
5 protected void Page_Load(object sender, EventArgs e)
6 {
7 if (!IsPostBack)
8 {
9 ArticlesInit();
10 //AspNetPager1.RecordCount = 4;
11 }
12 }
13
14 /// <summary>
15 /// 初始化文章列表
16 /// </summary>
17 private void ArticlesInit()
18 {
19 int recordsCount;
20 string category = Request.QueryString["category"], key = Request.QueryString["key"];
21 int categoryId = string.IsNullOrEmpty(category) ? 0 : Convert.ToInt32(category);
22
23 if (!string.IsNullOrEmpty(key))
24 {
25 txtKeywords.Text = key;
26 }
27
28 IList<Object[]> list = ArticleSrv.GetArticles(categoryId, key, AspNetPager1.PageSize,
29 AspNetPager1.CurrentPageIndex, false, out recordsCount);
30
31 AspNetPager1.RecordCount = recordsCount;
32
33 rptArticle.DataSource = list;
34 rptArticle.DataBind();
35 }
36
37 protected void AspNetPager1_PageChanged(object sender, EventArgs e)
38 {
39 //ArticlesInit();
40 }
41 }
42 }
43

 

在Page_Load 和 AspNetPager 的OnPageChanged 的事件中都绑定的话,会执行两次查询。

原因是 采用URL分页时 在页面加载时AspNetPager会自动执行 OnPageChanged事件

 

解决方法:

一、 首先在Page_Load 中获取数据数 用于初始化AspNetPager,然后仅在AspNetPager 的OnPageChanged 的事件中进行数据绑定就可以了,

    详细:  http://www.cnblogs.com/Leo_wl/archive/2010/06/22/1762966.html 

二、大多数分页存储过程都是数据和统计一起返回到,所以第一种方法比较麻烦,经过测试发现了第二种方法。

  获取page参数并在绑定代码中初始化AspNetPager的CurrentPageIndex,数据绑定操作只需要在Page_Load或者AspNetPager 的OnPageChanged中绑定一次就可以了,

  上边的代码中的page参数是在基类WebBase.Data中获取赋给一个CurrentPageIndex 属性

 

  修改后

  

1 <abw:AspNetPager ID="AspNetPager1" class="pager"  runat="server" 
2 AlwaysShow="true" PageSize="2"
3 UrlPaging="True" NextPageText="Next&amp;gt;&amp;gt;" PrevPageText="&amp;lt;&amp;lt;Prev"
4 ShowFirstLast="False" ShowPageIndexBox="Never"
5 CurrentPageButtonStyle="margin-right:2px;" PagingButtonSpacing="">
6 </abw:AspNetPager>
 1 namespace AutoBuildWeb.Web.Manage.WebData.ArticleManage
2 {
3 public partial class News : WebBase.Data
4 {
5 protected void Page_Load(object sender, EventArgs e)
6 {
7 if (!IsPostBack)
8 {
9 ArticlesInit();
10 //AspNetPager1.RecordCount = 4;
11 }
12 }
13
14 /// <summary>
15 /// 初始化文章列表
16 /// </summary>
17 private void ArticlesInit()
18 {
19 int recordsCount;
20 string category = Request.QueryString["category"], key = Request.QueryString["key"];
21 int categoryId = string.IsNullOrEmpty(category) ? 0 : Convert.ToInt32(category);
22
23 if (!string.IsNullOrEmpty(key))
24 {
25 txtKeywords.Text = key;
26 }
27
28 IList<Object[]> list = ArticleSrv.GetArticles(categoryId, key, AspNetPager1.PageSize,
29 CurrentPageIndex, false, out recordsCount);
30
31 AspNetPager1.RecordCount = recordsCount;
32 AspNetPager1.CurrentPageIndex = CurrentPageIndex;
33 rptArticle.DataSource = list;
34 rptArticle.DataBind();
35 }
36

47 }
48 }
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载