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>

<%@ Page Language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="false" Inherits="comeday.Result" %>

DataList同理。

 

转载于:https://www.cnblogs.com/angelasp/p/3501527.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值