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;
using System.Data.SqlClient;
namespace note
{
/// <summary>
/// DataList 的摘要说明。
/// </summary>
public class DataList : System.Web.UI.Page
{
int PageSize,CurrentPage,RecordCount,PageCount;
SqlConnection conn;
protected System.Web.UI.WebControls.Panel PNPage;
protected System.Web.UI.WebControls.LinkButton lbNextPage;
protected System.Web.UI.WebControls.LinkButton lbFirstPage;
protected System.Web.UI.WebControls.LinkButton lbPreviousPage;
protected System.Web.UI.WebControls.LinkButton lbLastPage;
protected System.Web.UI.WebControls.Label lblPageCount;
protected System.Web.UI.WebControls.Label lblCurrentPage;
protected System.Web.UI.WebControls.Label lblPageSize;
protected System.Web.UI.WebControls.DataList dList;
private void Page_Load(object sender, System.EventArgs e)
{
PageSize = 10;
this.lblPageSize.Text=PageSize.ToString();
conn=new SqlConnection("server=.;uid=sa;pwd=;database=pubs");
RecordCount=this.GetRecordCount();
PageCount = (RecordCount%PageSize)>0?(RecordCount/PageSize)+1:(RecordCount/PageSize);
this.lblPageCount.Text=PageCount.ToString();
if(!this.IsPostBack)
{
CurrentPage=0;
this.lblCurrentPage.Text=Convert.ToString(CurrentPage+1);
this.BindToGrid();
}
}
public int GetRecordCount()
{
conn.Open();
SqlCommand cmd=new SqlCommand("select count(*) as cnt from employee",conn);
int TotalCount=int.Parse(cmd.ExecuteScalar().ToString());
cmd.Dispose();
conn.Close();
return TotalCount;
}
private IList DataSource()
{
int StartIndex;
StartIndex = CurrentPage*PageSize;
string strSql = "select * from employee";
DataSet ds = new DataSet();
if(conn.State==ConnectionState.Closed)
{
conn.Open();
}
SqlDataAdapter da = new SqlDataAdapter(strSql,conn);
da.Fill(ds,StartIndex,PageSize,"mfblog");
return ds.Tables["mfblog"].DefaultView;
}
private void BindToGrid()
{
dList.DataSource=(DataView)DataSource();
dList.DataBind();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.lbNextPage.Command += new System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
this.lbFirstPage.Command += new System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
this.lbPreviousPage.Command += new System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
this.lbLastPage.Command += new System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Page_OnClick(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{
CurrentPage =int.Parse(this.lblCurrentPage.Text.Trim())-1;
PageCount =int.Parse(this.lblPageCount.Text.Trim());
string cnstr = e.CommandName;
switch(cnstr)
{
case "first":
CurrentPage=0;
break;
case "next":
if(CurrentPage<(PageCount-1)) CurrentPage++;
break;
case "previous":
if(CurrentPage>0) CurrentPage--;
break;
case "last":
CurrentPage=PageCount-1;
break;
}
this.lblCurrentPage.Text=Convert.ToString(CurrentPage+1);
this.BindToGrid();
}
}
}