ASP.NET DataList 分页之PagedDataSource
第一次发文章,请大家多多包含,后面会陆续发出其他分页方式。
DataList控件的灵活性简直无可挑剔了,但是没有把分页像Gridview那样封装进去,下面和大家一起分享一下用 PagedDataSource的分页....
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataList.aspx.cs" Inherits="DataList" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <div style="text-align: center"> <asp:DataList ID="DataList1" runat="server" RepeatColumns="1" Width="190px"> <ItemTemplate> <table border="1" bordercolor="blue" style="width: 721px"> <tr> <td style="width: 100px; text-align: right;"> BookMarkID:</td> <td style="width: 100px"> <asp:Label ID="BookMarkIDLabel" runat="server" Text='<%# Eval("BookMarkID") %>'> </asp:Label></td> </tr> <tr> <td style="width: 100px; text-align: right;"> BookMarkName: </td> <td style="width: 100px"> <asp:Label ID="BookMarkNameLabel" runat="server" Text='<%# Eval("BookMarkName") %>'> </asp:Label></td> </tr> <tr> <td style="width: 100px; text-align: right;"> BookMarkDesc: </td> <td style="width: 100px"> <asp:Label ID="BookMarkDescLabel" runat="server" Text='<%# Eval("BookMarkDesc") %>'> </asp:Label></td> </tr> <tr> <td style="width: 100px; text-align: right;"> BookMarkText:</td> <td style="width: 100px"> <asp:Label ID="BookMarkTextLabel" runat="server" Text='<%# Eval("BookMarkText") %>'> </asp:Label></td> </tr> </table> <br /> </ItemTemplate> </asp:DataList> 第<asp:Label ID="Label1" runat="server"></asp:Label>页 <asp:HyperLink ID="HyperLink1" runat="server" OnDataBinding="Page_Load">首页</asp:HyperLink> <asp:HyperLink ID="HyperLink2" runat="server" OnDataBinding="Page_Load">上一页</asp:HyperLink> <asp:HyperLink ID="HyperLink3" runat="server" OnDataBinding="Page_Load">下一页</asp:HyperLink> <asp:HyperLink ID="HyperLink4" runat="server" OnDataBinding="Page_Load">末页</asp:HyperLink> 共<asp:Label ID="Label2" runat="server"></asp:Label>页 </div> </form> </body> </html>
后台代码:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; public partial class DataList : System.Web.UI.Page { SqlConnection sqlcon = new SqlConnection("server=.;Database=DBDemo;user id=sa;pwd=123"); public string strsql = "SELECT * FROM BookMarks"; protected void Page_Load(object sender, EventArgs e) { //设置数据源 PagedDataSource page = new PagedDataSource(); SqlDataAdapter adp = new SqlDataAdapter(strsql, sqlcon); sqlcon.Open(); DataSet dst = new DataSet(); adp.Fill(dst, "table"); DataTable tab = new DataTable(); tab=dst.Tables["table"]; page.DataSource = tab.DefaultView; //分页实现 page.PageSize = 3; page.AllowPaging = true; int CurPage; if (Request.QueryString["Page"] != null) { CurPage = Int32.Parse(Request.QueryString["Page"]); } else CurPage = 1; page.CurrentPageIndex = CurPage - 1; this.Label1.Text = CurPage.ToString(); this.Label2.Text = page.PageCount.ToString(); if (!page.IsFirstPage && CurPage > 1) { this.HyperLink2.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1); } if (!page.IsLastPage && CurPage < page.PageCount) { this.HyperLink3.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1); } this.HyperLink1.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1"; this.HyperLink4.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(page.PageCount.ToString()); DataList1.DataSource = page; DataList1.DataBind(); sqlcon.Close(); } }