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 DataListPager
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
///
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataList dlMessage;
protected System.Web.UI.WebControls.Label lblCurPage;
protected System.Web.UI.WebControls.HyperLink lnkPrev;
protected System.Web.UI.WebControls.HyperLink lnkNext;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button Button2;
DAL.DAL dal=new DAL.DAL();
System.Web.UI.WebControls.PagedDataSource page=new PagedDataSource();
private void Page_Load(object sender, System.EventArgs e)
{
if ( ! Page.IsPostBack)
{
Bind();
}
}
/*
* 首先创建一个分页类的实例
* 再设置其数据源-DataSource属性(原来也有DataSource属性)sh
*
* 和DataGrid一样要设置一些属性
* 设置允许分页 AllowPaging属性
* 设置每页显示的项数 PageSize属性
*
* 设置索引
* a.定义一变量存放当前页索引
* b.设置索引的默认值
* b.1 先判断页面是否有页面跳转请求
* b.2 有则索引的值为跳转是的参数(Requst["Page"]),否则值为1.
* c.可以显示以下状态信息-即分页信息.
* d.判断是不是首页,否则link的url为 Request.CurrentExecutionFilePath + "?Page=" +Convert.ToString(curPage-1);
* CurrentExecutionFilePath 当前页面所在的虚拟路径(相对路径)--\DataListPager\WebForm1.aspx
* (原来Request还可这样用,这么多微不足道,举足轻重的东西实在太多了)
* */
private void Bind()
{
string strSql = "Select * from message";
DataSet ds = new DataSet();
ds = dal.GetDataSet(strSql);
/* 创建分页类*/
//System.Web.UI.WebControls.PagedDataSource page=new PagedDataSource();
/* 设置数据原*/
page.DataSource=ds.Tables[0].DefaultView;
/* 设置分页属性*/
page.AllowPaging=true;//允许分页
page.PageSize=8;//设置每页显示的项数(记录数)
/* 下面是重要部分,分页的实现*/
int curPage;//存放当前页索引
if(Request["Page"] != null)//是否有页面跳转请求
{
curPage = Convert.ToInt32(Request["Page"]);
}
else
{
curPage = 1;
}
page.CurrentPageIndex = curPage-1;//设置当前页的索引
//显示状态信息
lblCurPage.Text = "当前页:第" + curPage.ToString()+"页";
if(!page.IsFirstPage)//如果不是当前页,link可用。
{
this.lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" +Convert.ToString(curPage-1);
}
if( ! page.IsLastPage)
{
this.lnkNext.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" +Convert.ToString(curPage+1);
}
if(page.FirstIndexInPage==0)
{
this.Button1.Enabled=false;
}
if(page.CurrentPageIndex==ds.Tables[0].Rows.Count/page.PageSize)
{
this.Button2.Enabled=false;
}
this.dlMessage.DataSource = page;
this.dlMessage.DataBind();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
}