Repeater分页
//ASP.NET中的DataList和Repeater提供了簡單快速的方法來顯示,其間,我們可以使用<ItemTemplate>更是使我們能隨心所欲的控制數據的排放樣式!
//.可惜的是它們不像Datagrid那樣,有內置的分頁功能。
//
//如何解決呢?
//
//其實我們可以用【PagedDataSource】 類來解決分頁的問題。
//
//PagedDataSource類的屬性:
//
//
//DataSource -數據源
//
//AllowPaging - true 是否允許分頁.
//PageSize - 每頁項目數量
//PageCount - 總頁數
//
//CurrentPageIndex - 當前所在的頁索引
//以Repeater為例 代碼如下:
==========================================================================
//Result.aspx.cs 文件
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace comeday
{
?/// <summary>
?/// Result 的摘要說明。
?/// </summary>
?public class Result : System.Web.UI.Page
?{
??protected System.Web.UI.WebControls.HyperLink lnkPrev;
??protected System.Web.UI.WebControls.HyperLink lnkNext;
??protected System.Web.UI.WebControls.Label lblCurrentPage;
??protected System.Web.UI.WebControls.Label lblTotalPage;
??protected System.Web.UI.WebControls.Repeater Repeater1;
?
??private void Page_Load(object sender, System.EventArgs e)
??{
//???數據源
???PagedDataSource Pgds=new PagedDataSource();
//???????
???Pgds.DataSource=CreateDataSource().DefaultView;
//??????? 設置允許分頁
???Pgds.AllowPaging=true;
//??????? 每頁顯示為6行
???Pgds.PageSize=6;
//??????? 顯示總共頁數
//
???lblTotalPage.Text=Pgds.PageCount.ToString();
//??????? 當前頁
???int CurrentPage;
//??????? 請求頁碼為不為null設置當前頁,否則為第一頁
???if(Request.QueryString["Page"] != null)
???{
????
????CurrentPage = Convert.ToInt32(Request.QueryString["Page"]);
???}
???else
???{
????CurrentPage = 1;
???}
//???當前頁所引為頁碼-1
???Pgds.CurrentPageIndex = CurrentPage - 1;
//???顯示當前頁碼
???lblCurrentPage.Text = CurrentPage.ToString();
//???如果不是第一頁,通過參數Page設置上一頁為當前頁-1,否則不顯示連接
???if(!Pgds.IsFirstPage)
???{
????//??????????? Request.CurrentExecutionFilePath為當前請求虛擬路徑
????lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage - 1);
???}
//??????? End If
//???如果不是最后一頁,通過參數Page設置下一頁為當前頁+1,否則不顯示連接
???if(!Pgds.IsLastPage)
???{
//????Request.CurrentExecutionFilePath為當前請求虛擬路徑
????lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage + 1);
???}
//???模板綁定數據源??
???Repeater1.DataSource = Pgds;
???Repeater1.DataBind();
??}
??/// <summary>
??/// 生成數據源(一個Datatable)
??/// </summary>
??/// <returns></returns>
public DataTable CreateDataSource()
{
??DataTable dt;
??DataRow dr;
??dt=new DataTable();
?//添加列
??????? dt.Columns.Add(new DataColumn("IntegerValue", System.Type.GetType("System.Int32")));
??????? dt.Columns.Add(new DataColumn("StringValue", System.Type.GetType("System.String")));
??????? dt.Columns.Add(new DataColumn("DateTimeValue", System.Type.GetType("System.DateTime")));
??????? dt.Columns.Add(new DataColumn("BoolValue", System.Type.GetType("System.Boolean")));
?//填充數據
?for( int i=0;i<50;i++)
?{
??dr = dt.NewRow();
??dr[0] = i;
??dr[1] = "Item " + i.ToString();
??dr[2] = DateTime.Now.ToShortTimeString();
??if(i%2!=0)
??{
???dr[3] = true;
??}
??else
??{
???dr[3] = false;
??}
??dt.Rows.Add(dr);
?}
?return dt;
}
??#region Web 窗體設計器生成的代碼
??override protected void OnInit(EventArgs e)
??{
???//
???// CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
???//
???InitializeComponent();
???base.OnInit(e);
??}
??
??/// <summary>
??/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
??/// 此方法的內容。
??/// </summary>
??private void InitializeComponent()
??{???
???this.Load += new System.EventHandler(this.Page_Load);
??}
??#endregion
?}
}
===========================================================================
Result.aspx文件
//<%@ Page Language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="false" Inherits="comeday.Result" %>
//<%@ import Namespace="System.Data" %>
//<HTML>
//<HEAD>
//<title>DataRepeater</title>
//<style type="text/css">
//
//BODY
//{
//?FONT: 10px Verdana, Arial, Helvetica, "sans serif"; COLOR: #000000 }
//
//.txt { FONT-SIZE: 12px }
//
//</style>
//</HEAD>
//<body>
//<form id="Form2" name="form1" method="post" runat="server">
//<table class="txt" width="100%" border="0">
//???? <tbody>
//???? <tr>
//???? <td>
//???? <asp:hyperlink id="lnkPrev" runat="server">上頁</asp:hyperlink>
//???? <asp:hyperlink id="lnkNext" runat="server">下頁</asp:hyperlink>第
//???????????????????<asp:label id="lblCurrentPage" runat="server"></asp:label>
//???? 頁 共
//????? <asp:label id="lblTotalPage" runat="server"></asp:label>頁
//???????????????????? </td>
//???? </tr>
//???? </tbody>
//???? </table>
//???? <asp:repeater id="Repeater1" runat="server">
//???? <ItemTemplate>
//???? <hr align="left" width="60%" size="1">
//???? <table class="txt" width="100%" border="0">
//?????? <tr>
//?????? <td>
//?????? Order Date:
//?????? <%# DataBinder.Eval(Container.DataItem, "DateTimeValue", "{0:d}") %>
//?????? </td>
//?????? <tr>
//?????? <td>
//?????? Quantity:
//?????? <%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:N2}") %>
//?????? </td>
//?????? <tr>
//?????? <td>
//?????? Item:
//?????? <%# DataBinder.Eval(Container.DataItem, "StringValue") %>
//?????? </td>
//?????? <tr>
//?????? <td>
//?????? Order Date:
//?????? <asp:checkbox id=chk1 checked='<%# DataBinder.Eval(Container.DataItem, "BoolValue") %>' runat="server"/>
//?????? </td>
//?????? </tr>
//?????? </table>
//?????? </ItemTemplate>
//?????? </asp:repeater>
//?????? <hr hight="1">
//???????? </form>
//???????? </body>
//???????? </HTML>
DataList同理。
原文出處:http://dev.csdn.net/develop/article/30/30318.shtm
轉載于:https://www.cnblogs.com/zhangjidong/archive/2005/06/14/174106.html
總結
以上是生活随笔為你收集整理的Repeater分页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用VC++修改注册表----让我们踏出第
- 下一篇: PDG转PDF的方法