Repeater 分页 实现
ASP.NET中的DataList和Repeater提供了简单快速的方法來显示,其间,我们可以使用
可惜的是它们不像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
{
///
/// Result 的摘要说明。
///
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();
}
///
/// 生成数据源(一个Datatable)
///
///
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);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
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" %>
//
//
//
//
//
//
//
//
//
DataList同理。
原文出处:http://dev.csdn.net/develop/article/30/30318.shtm
<%@ Page Language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="false" Inherits="comeday.Result" %>
转载于:https://www.cnblogs.com/101rico/archive/2013/01/19/2867350.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
