ASP.NET GridView,DataList,Repeater的通用分页


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace ustonetdonet.DotNetPagedData
{
    
///  <summary>
    
///  本类提供GridView,DataList,Repeater的通用分页
    
///  参考了NetFire(Fire.Rolland.Han)http://netfire.my.gsdn.net/2005/04/04/2945/
    
///  
    
///  
    
///     使用方法:
    
///     1.在引用里添加dll的引用
    
///  2.using ustonetdonet.DotNetPagedData;
    
///  3.private DotNetPagedData pager;
    
///  4.page_load()
    
///  if(!IsPostBack)   
    
///  {    
    
///     pager=new DotNetPagedData();
    
///     pager.PagedPanel=this.pagedPanel;    
    
///     pager.GridView = this.GridView1;  //如果是DataGrid则添加此项
    
///     pager.Datalist=this.DataList1;    //如果是DataList则添加此项  
    
///     pager.Repeater=this.Repeater1;    //如果是Repeater则添加此项  
    
///     pager.Lnknext=this.lnkNext;    
    
///        pager.Lnkprev=this.lnkPrev;    
    
///        pager.Lnklast=this.lnklast;    
    
///        pager.Lnkfist=this.lnkfist;    
    
///        pager.Pagenum=this.Pagenum;    
    
///        pager.Pagecount=this.Pagecount;    
    
///        pager.List=this.ddl_jump; 
    
///        //简单示例定义DataSet外部定义,同样也可以采用执行sqlstr,并填充给DataSet,本类也重载了datapage(),详细信息可查看详细代码       
    
///     DataSet ds=new DataSet();    
    
///     ds.ReadXml(Server.MapPath("test.xml"));    
    
///     pager.datapage(ds,5);   
    
///  }  
    
///  
    
///  // DropDownList必须设定为AutoPostBack,下面添加它的事件
    
///  5.private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)  
    
///  {      
    
///     pager=new DotNetPagedData();   
    
///     pager.List=this.DropDownList1;   
    
///     pager.Lnkjump=this.HyperLink3;   
    
///     pager.select();              
    
///  }
    
///  </summary>



    
public class DotNetPagedData : System.Web.UI.Page
    
{
        
private System.Web.UI.WebControls.GridView gridview = 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.Panel pagedPanel;
        
private System.Web.UI.WebControls.DropDownList list;

        
public DotNetPagedData()
        
{
            
//  
            
// TODO: 在此处添加构造函数逻辑   
            
//  
        }


        
public System.Web.UI.WebControls.GridView GridView
        
{
            
get
            
{
                
return this.gridview;
            }

            
set
            
{
                
this.gridview = 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 System.Web.UI.WebControls.Panel PagedPanel
        
{
            
get
            
{
                
return this.pagedPanel;
            }

            
set
            
{
                
this.pagedPanel = value;
            }

        }


        
//针对一般数据邦定,不执行sqlstr
        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(0new 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;
            
if (objPds.PageCount > 1)
            
{
                pagedPanel.Visible 
= true;
            }

            
else
            
{
                pagedPanel.Visible 
= false;
            }

            
//显示当前页数   
            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);
            }

            
//绑定gridview   
            if (this.gridview != null)
            
{
                gridview.DataSource 
= objPds;
                gridview.DataBind();
            }

            
//绑定datalist   
            if (this.datalist != null)
            
{
                datalist.DataSource 
= objPds;
                datalist.DataBind();
            }

            
//绑定repeater   
            if (this.repeater != null)
            
{
                repeater.DataSource 
= objPds;
                repeater.DataBind();
            }

        }


        
//重载,针对执行sqlstr
        public void datapage(string sqlcon, string sqlstr, int pagenum)
        
{
            SqlConnection objConn 
= new SqlConnection(sqlcon);
            SqlDataAdapter objCommand 
= new SqlDataAdapter(sqlstr, objConn);
            DataSet ds 
= new DataSet();
            objCommand.Fill(ds);
            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(0new 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;
            
if (objPds.PageCount > 1)
            
{
                pagedPanel.Visible 
= true;
            }

            
else
            
{
                pagedPanel.Visible 
= false;
            }

            
//显示当前页数   
            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);
            }

            
//绑定gridview   
            if (this.gridview != null)
            
{
                gridview.DataSource 
= objPds;
                gridview.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);
        }


    }

}
原文地址:https://www.cnblogs.com/jiangyuxuan/p/842349.html