//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;} // 当前页所引为页码-1Pgds.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" %> DataRepeater
<%@ Page Language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="false" Inherits="comeday.Result" %>
DataList同理。