今天做網站的時候,用到了分頁技術,我把使用方法記錄下來,以便日後查閱以及幫助新手朋友們。 DataList控制項可以按照列表的形式顯示數據表中的多行記錄,但是被顯示的多行記錄沒有分頁功能,使用起來不太方便。因此需要藉助PagedDataSource類來實現分頁,該類封裝了數據控制項的分頁屬性,其常用屬性
今天做網站的時候,用到了分頁技術,我把使用方法記錄下來,以便日後查閱以及幫助新手朋友們。
DataList控制項可以按照列表的形式顯示數據表中的多行記錄,但是被顯示的多行記錄沒有分頁功能,使用起來不太方便。因此需要藉助PagedDataSource類來實現分頁,該類封裝了數據控制項的分頁屬性,其常用屬性及說明如下表所示。
屬 性 | 說 明 |
AllowPaging |
獲取或設置是否啟用分頁 |
AllowCustomPaging | 獲取或設置是否啟用自定義分頁 |
CurrentPageIndex | 獲取或設置當前顯示頁的索引 |
DataSource |
獲取或設置用於填充控制項中項的源數據 |
PageSize |
獲取或設置要在數據綁定控制項的每頁上顯示的項數 |
PageCount |
獲取顯示數據綁定控制項中各項所需的總頁數 |
FirstIndexPage |
獲取頁中的第一個索引 |
IsFirstPage |
獲取一個值,該值指示當前頁是否是首頁 |
IsLastPage |
獲取一個值,該值指示當前頁是否是最後一頁 |
DataKeyField |
獲取或設置由DataSource屬性指定的數據源中的鍵欄位 |
DataKeys |
獲取存儲在數據列表控制項中的每個記錄的鍵值 |
大致實現效果圖如下:
具體代碼如下:
前臺(aspx)代碼:
<div class="you_align"> <table style="width:450px" cellpadding="0" cellspacing="0" align="center" > <tr><td> </td></tr> <tr> <td style="width: 600px; text-align: align; font-size: 9pt; height: 15px;" > <asp:Label ID="labCP" runat="server" Text="當前第"></asp:Label> <asp:Label ID="labPage" runat="server" Text="1"></asp:Label> 頁 <asp:Label ID="labTP" runat="server" Text="共"></asp:Label> <asp:Label ID="labBackPage" runat="server"></asp:Label> 頁 <asp:LinkButton ID="lnkbtnOne" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnOne_Click">第一頁</asp:LinkButton> <asp:LinkButton ID="lnkbtnUp" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnUp_Click">上一頁</asp:LinkButton> <asp:LinkButton ID="lnkbtnNext" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnNext_Click">下一頁</asp:LinkButton> <asp:LinkButton ID="lnkbtnBack" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnBack_Click">尾頁</asp:LinkButton> </td> </tr> </table> </div>
後臺aspx.cs代碼如下:
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; public partial class zwgk : System.Web.UI.Page { CommonClass CC = new CommonClass(); protected void Page_Load(object sender, EventArgs e) { bind(); //政務公開 ZWGK.DataSource = CC.GetDataSet("SELECT * FROM News WHERE Style = '政務公開' order by Time Desc", "News"); ZWGK.DataKeyField = "id"; ZWGK.DataBind(); } protected void bind() { //取得當前頁的頁碼 int curpage = Convert.ToInt32(this.labPage.Text); //使用PagedDataSource類實現DataList控制項的分頁功能 PagedDataSource ps = new PagedDataSource(); //獲取數據集 DataSet ds = CC.GetDataSet("select * from News where style='政務公開' order by Time Desc", "News"); ps.DataSource = ds.Tables["News"].DefaultView; //是否可以分頁 ps.AllowPaging = true; //顯示的數量 ps.PageSize = 15; //取得當前頁的頁碼 ps.CurrentPageIndex = curpage - 1; this.lnkbtnUp.Enabled = true; this.lnkbtnNext.Enabled = true; this.lnkbtnBack.Enabled = true; this.lnkbtnOne.Enabled = true; if (curpage == 1) { //不顯示第一頁按鈕 this.lnkbtnOne.Enabled = false; //不顯示上一頁按鈕 this.lnkbtnUp.Enabled = false; } if (curpage == ps.PageCount) { //不顯示下一頁 this.lnkbtnNext.Enabled = false; //不顯示最後一頁 this.lnkbtnBack.Enabled = false; } //顯示分頁數量 this.labBackPage.Text = Convert.ToString(ps.PageCount); //綁定DataList控制項 this.ZWGK.DataSource = ps; this.ZWGK.DataKeyField = "id"; this.ZWGK.DataBind(); } //第一頁 protected void lnkbtnOne_Click(object sender, EventArgs e) { this.labPage.Text = "1"; this.bind(); } //上一頁 protected void lnkbtnUp_Click(object sender, EventArgs e) { this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) - 1); this.bind(); } //下一頁 protected void lnkbtnNext_Click(object sender, EventArgs e) { this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) + 1); this.bind(); } //最後一頁 protected void lnkbtnBack_Click(object sender, EventArgs e) { this.labPage.Text = this.labBackPage.Text; this.bind(); } protected void ZWGK_ItemCommand(object source, DataListCommandEventArgs e) { int id = Convert.ToInt32(ZWGK.DataKeys[e.Item.ItemIndex].ToString()); Response.Write("<script language=javascript>location='show_News.aspx?id=" + id + "'</script>"); } }