數據分頁一直以來是比較頭疼的問題,不少的分頁控件也隨之產生。但是我用過的幾個控件,本身都要執行SQL,對存儲過程支持不好,為了方便,特別寫了個通用分頁類,利用PagedDataSource來實現DataGrid,DataList,Repeater的分頁。完成上一頁,下一頁, 最后一頁,最前一頁,總頁數,當前頁數,跳轉這些基本的功能。
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;
namespace aspnetpager { /// /// netpager-本類提供datagrid,datalist,repeater的通用分頁---jierry 04-7-19 /// public class netpager: System.Web.UI.Page { private System.Web.UI.WebControls.DataGrid datagrid=null; private System.Web.UI.WebControls.DataList datalist=null; private System.Web.UI.WebControls.Repeater repeater=null; private System.Web.UI.WebControls.HyperLink lnknext; private System.Web.UI.WebControls.HyperLink lnkprev; private System.Web.UI.WebControls.HyperLink lnkfist; private System.Web.UI.WebControls.HyperLink lnklast; private System.Web.UI.WebControls.HyperLink lnkjump; private System.Web.UI.WebControls.Label pagenum; private System.Web.UI.WebControls.Label pagecount; private System.Web.UI.WebControls.DropDownList list; public netpager() { // // TODO: 在此處添加構造函數邏輯 // }
public System.Web.UI.WebControls.DataGrid Datagrid { get { return this.datagrid; } set { this.datagrid=value; } }
public System.Web.UI.WebControls.DataList Datalist { get { return this.datalist; } set { this.datalist=value; } }
public System.Web.UI.WebControls.Repeater Repeater { get { return this.repeater; } set { this.repeater=value; } }
public System.Web.UI.WebControls.HyperLink Lnkprev { get { return this.lnkprev; } set { this.lnkprev=value; } }
public System.Web.UI.WebControls.HyperLink Lnknext { get { return this.lnknext; } set { this.lnknext=value; } }
public System.Web.UI.WebControls.HyperLink Lnkfist { get { return this.lnkfist; } set { this.lnkfist=value; } }
public System.Web.UI.WebControls.HyperLink Lnklast { get { return this.lnklast; } set { this.lnklast=value; } }
public System.Web.UI.WebControls.HyperLink Lnkjump { get { return this.lnkjump; } set { this.lnkjump=value; } }
public System.Web.UI.WebControls.Label Pagenum { get { return this.pagenum; } set { this.pagenum=value; } }
public System.Web.UI.WebControls.Label Pagecount { get { return this.pagecount; } set { this.pagecount=value; } }
public System.Web.UI.WebControls.DropDownList List { get { return this.list; } set { this.list=value; } }
public void datapage(DataSet ds,int pagenum) { PagedDataSource objPds = new PagedDataSource(); objPds.AllowPaging =true; //每頁顯示數目 objPds.PageSize =pagenum; //指定數據源 objPds.DataSource = ds.Tables[0].DefaultView; int CurPage; //綁定dropdownlist數據 for(int i=1;i<=objPds.PageCount;i++) { this.list.Items.Add(i.ToString()); } this.list.Items.Insert(0,new ListItem("頁數","")); //確定當前頁數 if (System.Web.HttpContext.Current.Request.Params["Page"] != null) { CurPage=Convert.ToInt32(System.Web.HttpContext.Current.Request.Params["Page"]); } else { CurPage=1; }
objPds.CurrentPageIndex = CurPage-1; //顯示當前頁數 this.pagenum.Text="頁數:"+CurPage.ToString(); //顯示總共頁數 this.pagecount.Text="共有"+objPds.PageCount+"頁";
//下一頁 if (!objPds.IsLastPage) { lnknext.NavigateUrl=System.Web.HttpContext.Current.Request.CurrentExecutionFilePath+"?Page=" + Convert.ToString(CurPage+1); } //上一頁 if(!objPds.IsFirstPage) { lnkprev.NavigateUrl=System.Web.HttpContext.Current.Request.CurrentExecutionFilePath+"?Page="+Convert.ToString(CurPage-1); } //第一頁 if(CurPage!=1) { lnkfist.NavigateUrl=System.Web.HttpContext.Current.Request.CurrentExecutionFilePath+"?Page="+Convert.ToString(1); } //最后一頁 if(CurPage!=objPds.PageCount) { lnklast.NavigateUrl=System.Web.HttpContext.Current.Request.CurrentExecutionFilePath+"?Page="+Convert.ToString(objPds.PageCount); } //綁定datagrid if(this.datagrid!=null) { datagrid.DataSource=objPds; datagrid.DataBind(); } //綁定datalist if(this.datalist!=null) { datalist.DataSource=objPds; datalist.DataBind(); } //綁定repeater if(this.repeater!=null) { repeater.DataSource=objPds; repeater.DataBind(); } }
//dropdownlist選擇改變 public void select() { this.lnkjump.NavigateUrl=System.Web.HttpContext.Current.Request.CurrentExecutionFilePath+"?Page="+Convert.ToString(this.list.SelectedItem.Value); }
} }
使用方法: 1.在引用里添加aspnetpager.dll的引用 2.using aspnetpager; 3.private netpager pager; 4. page_load() if(!IsPostBack) { pager=new netpager(); pager.Datagrid=this.DataGrid1; pager.Datalist=this.DataList1; pager.Repeater=this.Repeater1; pager.Lnknext=this.HyperLink1; pager.Lnkprev=this.lnkprev; pager.Lnklast=this.lnklast; pager.Lnkfist=this.lnkfist; pager.Pagenum=this.Label1; pager.Pagecount=this.Label2; pager.List=this.DropDownList1; DataSet ds=new DataSet(); ds.ReadXml(Server.MapPath("test.xml")); pager.datapage(ds,5); } 5.private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e) { pager=new netpager(); pager.List=this.DropDownList1; pager.Lnkjump=this.HyperLink3; pager.select(); }
|