使用DataList實現數據分頁的技術


今天做網站的時候,用到了分頁技術,我把使用方法記錄下來,以便日后查閱以及幫助新手朋友們。

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>&nbsp;</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> &nbsp;頁
                  <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>&nbsp;
                  <asp:LinkButton ID="lnkbtnBack" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnBack_Click">尾頁</asp:LinkButton>&nbsp;&nbsp;
               </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>");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM