Repeater分页
//ASP.NET中的DataList和Repeater提供了簡(jiǎn)單快速的方法來(lái)顯示,其間,我們可以使用<ItemTemplate>更是使我們能隨心所欲的控制數(shù)據(jù)的排放樣式!
//.可惜的是它們不像Datagrid那樣,有內(nèi)置的分頁(yè)功能。
//
//如何解決呢?
//
//其實(shí)我們可以用【PagedDataSource】 類(lèi)來(lái)解決分頁(yè)的問(wèn)題。
//
//PagedDataSource類(lèi)的屬性:
//
//
//DataSource -數(shù)據(jù)源
//
//AllowPaging - true 是否允許分頁(yè).
//PageSize - 每頁(yè)項(xiàng)目數(shù)量
//PageCount - 總頁(yè)數(shù)
//
//CurrentPageIndex - 當(dāng)前所在的頁(yè)索引
//以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 的摘要說(shuō)明。
?/// </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)
??{
//???數(shù)據(jù)源
???PagedDataSource Pgds=new PagedDataSource();
//???????
???Pgds.DataSource=CreateDataSource().DefaultView;
//??????? 設(shè)置允許分頁(yè)
???Pgds.AllowPaging=true;
//??????? 每頁(yè)顯示為6行
???Pgds.PageSize=6;
//??????? 顯示總共頁(yè)數(shù)
//
???lblTotalPage.Text=Pgds.PageCount.ToString();
//??????? 當(dāng)前頁(yè)
???int CurrentPage;
//??????? 請(qǐng)求頁(yè)碼為不為null設(shè)置當(dāng)前頁(yè),否則為第一頁(yè)
???if(Request.QueryString["Page"] != null)
???{
????
????CurrentPage = Convert.ToInt32(Request.QueryString["Page"]);
???}
???else
???{
????CurrentPage = 1;
???}
//???當(dāng)前頁(yè)所引為頁(yè)碼-1
???Pgds.CurrentPageIndex = CurrentPage - 1;
//???顯示當(dāng)前頁(yè)碼
???lblCurrentPage.Text = CurrentPage.ToString();
//???如果不是第一頁(yè),通過(guò)參數(shù)Page設(shè)置上一頁(yè)為當(dāng)前頁(yè)-1,否則不顯示連接
???if(!Pgds.IsFirstPage)
???{
????//??????????? Request.CurrentExecutionFilePath為當(dāng)前請(qǐng)求虛擬路徑
????lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage - 1);
???}
//??????? End If
//???如果不是最后一頁(yè),通過(guò)參數(shù)Page設(shè)置下一頁(yè)為當(dāng)前頁(yè)+1,否則不顯示連接
???if(!Pgds.IsLastPage)
???{
//????Request.CurrentExecutionFilePath為當(dāng)前請(qǐng)求虛擬路徑
????lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage + 1);
???}
//???模板綁定數(shù)據(jù)源??
???Repeater1.DataSource = Pgds;
???Repeater1.DataBind();
??}
??/// <summary>
??/// 生成數(shù)據(jù)源(一個(gè)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")));
?//填充數(shù)據(jù)
?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 窗體設(shè)計(jì)器生成的代碼
??override protected void OnInit(EventArgs e)
??{
???//
???// CODEGEN: 該調(diào)用是 ASP.NET Web 窗體設(shè)計(jì)器所必需的。
???//
???InitializeComponent();
???base.OnInit(e);
??}
??
??/// <summary>
??/// 設(shè)計(jì)器支持所需的方法 - 不要使用代碼編輯器修改
??/// 此方法的內(nèi)容。
??/// </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">上頁(yè)</asp:hyperlink>
//???? <asp:hyperlink id="lnkNext" runat="server">下頁(yè)</asp:hyperlink>第
//???????????????????<asp:label id="lblCurrentPage" runat="server"></asp:label>
//???? 頁(yè) 共
//????? <asp:label id="lblTotalPage" runat="server"></asp:label>頁(yè)
//???????????????????? </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
轉(zhuǎn)載于:https://www.cnblogs.com/zhangjidong/archive/2005/06/14/174106.html
總結(jié)
以上是生活随笔為你收集整理的Repeater分页的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用VC++修改注册表----让我们踏出第
- 下一篇: PDG转PDF的方法