repeater控件實現分頁


repeater控件實現排序的方法,今天我再向大家介紹repeater控件如何實現分頁的效果。

分頁分為真分頁和假分頁。

真分頁:控件上一頁需要顯示多少數據,就從數據庫取出並綁定多少數據,每次換頁時都需要訪問數據庫。

假分頁:從數據庫一次性取出所有數據綁定到控件上,再將所有數據根據一頁顯示多少條而分頁。

從以上二者的概念上我們可以看出,區別在於分頁時從數據庫讀取信息的方式,真分頁的效率無疑是最高的。假分頁在首次頁面加載的時候會比較慢(如果數據量較多)。

二者其實各有各的優缺點,可根據需要來自行選擇(比如數據量較多時,先用真分頁;想減少與后台的交互,可以使用假分頁)。

下面我就介紹repeater控件基於以上兩種方法的分頁:

 

無論真分頁還是假分頁,前台分頁按鈕代碼都可以類似以下的方式:

<table>

   <tr>

      <td align="center"> 
             <asp:LinkButton ID="lbtnFirstPage" runat="server" OnClick="lbtnFirstPage_Click">頁首</asp:LinkButton>
             <asp:LinkButton ID="lbtnpritPage" runat="server" OnClick="lbtnpritPage_Click">上一頁</asp:LinkButton> 
             <asp:LinkButton ID="lbtnNextPage" runat="server" OnClick="lbtnNextPage_Click">下一頁</asp:LinkButton>
             <asp:LinkButton ID="lbtnDownPage" runat="server" OnClick="lbtnDownPage_Click">頁尾</asp:LinkButton><br />
             第<asp:Label ID="labPage" runat="server" Text="Label"></asp:Label>頁/共<asp:Label ID="LabCountPage" runat="server" Text="Label"></asp:Label>頁

      </td>

  </tr>

</table>

 

1. 假分頁

protected void Page_Load(object sender, EventArgs e)

{

    if (!IsPostBack)

    {

         this.labPage.Text = "1";
             this.contrlRepeater();

    }

}

//獲取指字符個數的字符

public string cuts(string aa,int bb)

{

    if (aa.Length <= bb)

    {

        return aa;

    }

 

else

    {

        return aa.Substring(0, bb);

    }

}

 

//Repeater分頁控制顯示方法

public void contrlRepeater()

{

     DataTable dt = '連接數據庫並查詢'

     PagedDataSource pds = new PagedDataSource();

     pds.DataSource = dt.DefaultView;

     pds.AllowPaging = true;

     pds.PageSize = 2;

     pds.CurrentPageIndex = Convert.ToInt32(this.labPage.Text) - 1;

     Repeater1.DataSource = pds;

     LabCountPage.Text = pds.PageCount.ToString();

     labPage.Text = (pds.CurrentPageIndex + 1).ToString();

     this.lbtnpritPage.Enabled = true;

 

    this.lbtnFirstPage.Enabled = t

 

this.lbtnNextPage.Enabled = true;

     this.lbtnDownPage.Enabled = true;

     if(pds.CurrentPageIndex<1)

     {

          this.lbtnpritPage.Enabled = false;

          this.lbtnFirstPage.Enabled = false;

     }

     if (pds.CurrentPageIndex == pds.PageCount-1)

     {

          this.lbtnNextPage.Enabled = false;

          this.lbtnDownPage.Enabled = false;

     }

     Repeater1.DataBind();

}

 

protected void lbtnpritPage_Click(object sender, EventArgs e)

{

     this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) - 1);

     this.contrlRepeater();

}

 

protected void lbtnFirstPage_Click(object sender, EventArgs e)

{

     this.labPage.Text = "1";

     this.contrlRepeater();

}

 

protected void lbtnDownPage_Click(object sender, EventArgs e)

{

     this.labPage.Text =this.LabCountPage.Text;

     this.contrlRepeater();

}

 

protected void lbtnNextPage_Click(object sender, EventArgs e)

{

     this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) + 1);

     this.contrlRepeater();

}

 

 

2. 真分頁

真分頁主要實現在於sql語句上:

select   top  每頁顯示的記錄數 *  from  topic  where  id  not   in  ( select   top  (當前的頁數-1)*每頁顯示的記錄數 id  from  topic  order   by  id  desc )  order   by  id  desc

再查詢出總記錄數來計算總頁數pageCount

int pageCount = (int)Math.Ceiling((double)查詢出的總記錄數個數/ (double)每頁顯示的記錄數)

之后將返回的數據表直接綁定到repeater控件上,再將當前頁數、總頁數利用以上我給出的假分頁套上就行了。

有了思路和主要代碼, 相信大家自己應該能套上,我就不再重復寫代碼了。

 

轉:http://blog.csdn.net/dfdj1010/article/details/5783317


免責聲明!

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



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