今天做網(wǎng)站的時(shí)候,用到了分頁(yè)技術(shù),我把使用方法記錄下來(lái),以便日后查閱以及幫助新手朋友們。
DataList控件可以按照列表的形式顯示數(shù)據(jù)表中的多行記錄,但是被顯示的多行記錄沒(méi)有分頁(yè)功能,使用起來(lái)不太方便。因此需要借助PagedDataSource類來(lái)實(shí)現(xiàn)分頁(yè),該類封裝了數(shù)據(jù)控件的分頁(yè)屬性,其常用屬性及說(shuō)明如下表所示。
| 屬 性 | 說(shuō) 明 |
| AllowPaging | 獲取或設(shè)置是否啟用分頁(yè) |
| AllowCustomPaging | 獲取或設(shè)置是否啟用自定義分頁(yè) |
| CurrentPageIndex | 獲取或設(shè)置當(dāng)前顯示頁(yè)的索引 |
| DataSource | 獲取或設(shè)置用于填充控件中項(xiàng)的源數(shù)據(jù) |
| PageSize | 獲取或設(shè)置要在數(shù)據(jù)綁定控件的每頁(yè)上顯示的項(xiàng)數(shù) |
| PageCount | 獲取顯示數(shù)據(jù)綁定控件中各項(xiàng)所需的總頁(yè)數(shù) |
| FirstIndexPage | 獲取頁(yè)中的第一個(gè)索引 |
| IsFirstPage | 獲取一個(gè)值,該值指示當(dāng)前頁(yè)是否是首頁(yè) |
| IsLastPage | 獲取一個(gè)值,該值指示當(dāng)前頁(yè)是否是最后一頁(yè) |
| DataKeyField | 獲取或設(shè)置由DataSource屬性指定的數(shù)據(jù)源中的鍵字段 |
| DataKeys | 獲取存儲(chǔ)在數(shù)據(jù)列表控件中的每個(gè)記錄的鍵值 |
大致實(shí)現(xiàn)效果圖如下:

具體代碼如下:
前臺(tái)(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="當(dāng)前第"></asp:Label> <asp:Label ID="labPage" runat="server" Text="1"></asp:Label> 頁(yè) <asp:Label ID="labTP" runat="server" Text="共"></asp:Label> <asp:Label ID="labBackPage" runat="server"></asp:Label> 頁(yè) <asp:LinkButton ID="lnkbtnOne" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnOne_Click">第一頁(yè)</asp:LinkButton> <asp:LinkButton ID="lnkbtnUp" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnUp_Click">上一頁(yè)</asp:LinkButton> <asp:LinkButton ID="lnkbtnNext" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnNext_Click">下一頁(yè)</asp:LinkButton> <asp:LinkButton ID="lnkbtnBack" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnBack_Click">尾頁(yè)</asp:LinkButton> </td> </tr> </table> </div>
后臺(tái)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(); //政務(wù)公開(kāi) ZWGK.DataSource = CC.GetDataSet("SELECT * FROM News WHERE Style = '政務(wù)公開(kāi)' order by Time Desc", "News"); ZWGK.DataKeyField = "id"; ZWGK.DataBind(); } protected void bind() { //取得當(dāng)前頁(yè)的頁(yè)碼 int curpage = Convert.ToInt32(this.labPage.Text); //使用PagedDataSource類實(shí)現(xiàn)DataList控件的分頁(yè)功能 PagedDataSource ps = new PagedDataSource(); //獲取數(shù)據(jù)集 DataSet ds = CC.GetDataSet("select * from News where style='政務(wù)公開(kāi)' order by Time Desc", "News"); ps.DataSource = ds.Tables["News"].DefaultView; //是否可以分頁(yè) ps.AllowPaging = true; //顯示的數(shù)量 ps.PageSize = 15; //取得當(dāng)前頁(yè)的頁(yè)碼 ps.CurrentPageIndex = curpage - 1; this.lnkbtnUp.Enabled = true; this.lnkbtnNext.Enabled = true; this.lnkbtnBack.Enabled = true; this.lnkbtnOne.Enabled = true; if (curpage == 1) { //不顯示第一頁(yè)按鈕 this.lnkbtnOne.Enabled = false; //不顯示上一頁(yè)按鈕 this.lnkbtnUp.Enabled = false; } if (curpage == ps.PageCount) { //不顯示下一頁(yè) this.lnkbtnNext.Enabled = false; //不顯示最后一頁(yè) this.lnkbtnBack.Enabled = false; } //顯示分頁(yè)數(shù)量 this.labBackPage.Text = Convert.ToString(ps.PageCount); //綁定DataList控件 this.ZWGK.DataSource = ps; this.ZWGK.DataKeyField = "id"; this.ZWGK.DataBind(); } //第一頁(yè) protected void lnkbtnOne_Click(object sender, EventArgs e) { this.labPage.Text = "1"; this.bind(); } //上一頁(yè) protected void lnkbtnUp_Click(object sender, EventArgs e) { this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) - 1); this.bind(); } //下一頁(yè) protected void lnkbtnNext_Click(object sender, EventArgs e) { this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) + 1); this.bind(); } //最后一頁(yè) 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>"); }}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注