什么是DataList我想应该不需要解释了,接下来分享本人在项目里使用到的通过DataList进行分页展示方法。
首先在ASPX页面添加一个DataList(后面都简称DL)控件,示例代码如下:
1 <asp:DataList ID="DL_BadReason" runat="server" Width="100%" 2 ////////////////////中间嵌套你需要展示出来的数据和方法的ID//////// 3 </asp:DataList>
此例中展示的风格是通过下拉列表来进行分页跳转(当然,这样做是无法和高大上的Ajax来进行分页来的给力,后面有时间虾哥将会再写一个AJAX分页DEMO分享给码友们)
在前台页面再添加一个DropList控件来绑定页数,以便进行分页跳转,示例代码如下:
1 <asp:DropDownList ID="YourName" runat="server" AutoPostBack="true" OnSelectedIndexChanged="YourName"> 2 </asp:DropDownList>
前台搞定!接下来就是后台代码实现了,代码逻辑很简单,这里就不多注释太多了。示例代码如下:
1 if (dtBadReason.Rows.Count > 0) //这里的dtBadReason是你从数据库查询出来的数据源 2 { 3 try 4 { 5 //DL:DataList 6 7 this.DL.DataSource = dvBadReason; 8 DL.DataBind(); 9 DL.HorizontalAlign = HorizontalAlign.Center; 10 11 //使用PageDataSource 12 PagedDataSource PgB = new PagedDataSource(); 13 PgB.DataSource = dvBadReason; 14 //设定条数 15 PgB.PageSize = 15; 16 PgB.AllowPaging = true; 17 18 //分页设定 19 int CurrentPage = Get_CurrentPage(); 20 PgB.CurrentPageIndex = CurrentPage - 1; 21 lbPage.Text = String.Format("{2} {0} {4} , {3} {1} {4}" 22 , CurrentPage.ToString() 23 , PgB.PageCount.ToString() 24 , "第" 25 , "共" 26 , "页"); 27 28 DL_BadReason.DataSource = PgB; 29 DL_BadReason.DataBind(); 30 31 ddlPage.Items.Clear(); 32 ddlPage.Items.Add("请跳页"); 33 ListItem oItm = new ListItem(); 34 for (int i = 0; i < PgB.PageCount; i++) 35 { 36 int iPage = i + 1; 37 oItm.Text = String.Format("{1}{0}{2}", iPage.ToString(), "第", "页"); 38 oItm.Value = iPage.ToString(); 39 ddlPage.Items.Add(new ListItem(oItm.Text.Trim(), oItm.Value)); 40 } 41 42 43 } 44 catch (Exception ex) 45 { 46 Response.Write("<b>Error Message-- </b>" + ex.Message.ToString()); 47 } 48 }
虽然这种分页方法远没有我们自己手写个存储过程再结合AJAX来进行分页爽,而且性能不高,用户体验效果也不理想。但这恰恰却适用于一些只需要用来展示数据的项目。当然,这比Repter好多了!
最终分页效果如下: