自家用的DataReapter分页代码


还没写完善的东西。所以直接在里面修改参数。
使用时

DataTabel dt =...
PageReapter pr = new PageReapter();
pr.DataSource = dt.DefaultView;
Repeater1.DataSource = pr.PagedData;
Repeater1.DataBind();
ltrDLPageText.Text = pr.DefaultText;

using System;
using System.Web;
using System.Data;
using System.Text;
namespace RMB.BLL
{
    
/// <summary>
    
/// PageReapter 的摘要说明。
    
/// </summary>
    public class PageReapter
    {

        
private int _pagesize = 15;        
        
private int _curpage;
                
        
private int prvpage,nextpage;
        
private string urlparams;
        
private System.Web.UI.WebControls.PagedDataSource _objpds;

        
public System.Web.UI.WebControls.PagedDataSource PagedData
        {
            
get
            {
                
return _objpds;
            }
        }
        
        
public DataView DataSource
        {
            
set
            {    
                _objpds 
= new System.Web.UI.WebControls.PagedDataSource();
                _objpds.DataSource 
= value;
                _objpds.AllowPaging 
= true;
                _objpds.PageSize 
= _pagesize;
                
if(System.Web.HttpContext.Current.Request.QueryString["page"!= null)
                {
                    
try
                    {
                        _curpage 
= Convert.ToInt32(System.Web.HttpContext.Current.Request.QueryString["page"]);
                    }
                    
catch
                    {
                        _curpage 
= 1;
                    }
                    
if(_curpage < 1)
                        _curpage 
= 1;
                    
if(_curpage > _objpds.PageCount)
                        _curpage 
= _objpds.PageCount;
                }
                
else
                {
                    _curpage 
= 1;
                }
                
                
                
if(_curpage > 0)
                    prvpage 
= _curpage - 1;                    
                
else
                    prvpage 
= 1;

                
if(_objpds.PageCount - _curpage > 0)
                    nextpage 
= _curpage + 1;
                
else
                    nextpage 
= _curpage;

                _objpds.CurrentPageIndex 
= _curpage - 1;

                urlparams 
= this.GetUrlParams();
            }
        }
        
public string DefaultText
        {
            
get
            {
                StringBuilder objSb 
= new StringBuilder();                
                
if(_curpage > 1)
                {
                    objSb.Append(
"<a href=\"?"+ urlparams +"1\">首页</a>&nbsp;");
                    objSb.Append(
"<a href=\"?"+ urlparams + prvpage +"\">上一页</a>");
                }
                
else
                {
                    objSb.Append(
"首页 上一页");                    
                }

                objSb.Append(
"\n"+ this.SelectText +"\n");
                
if(_objpds.PageCount - _curpage > 0)
                {
                    objSb.Append(
"<a href=\"?"+ urlparams + nextpage +"\">下一页</a>&nbsp;");
                    objSb.Append(
"<a href=\"?"+ urlparams + _objpds.PageCount +"\">尾页</a>");
                }
                
else
                {
                    objSb.Append(
"下一页 尾页");                    
                }
                objSb.Append(
"\n "+_objpds.DataSourceCount+"条记录 每页"+ _pagesize +"条记录");
                objSb.Append(
" 共"+ _objpds.PageCount +"页\n");
                
return objSb.ToString();
            }
        }
        
public string SelectText
        {
            
get
            {
                StringBuilder objSb 
= new StringBuilder();
                objSb.Append(
"<select name=\"page\" style=\"font-size:10px;\" onChange=\"javascript:location.href='?'+this.options[selectedIndex].value\">\n");
                
for(int i=1; i<_objpds.PageCount + 1; i++)
                {
                    objSb.Append(
"<option value=\""+ urlparams + i +"\"");
                    
if(_curpage == i)
                        objSb.Append(
"selected");
                    objSb.Append(
">"+ i +"</option>\n");
                }
                objSb.Append(
"</select>\n");
                
return objSb.ToString();
            }
        }
        
private string GetUrlParams()
        {
            
string searchKey = "page=";
            
string urlParams = System.Web.HttpContext.Current.Request.QueryString.ToString();
            
if(urlParams == null && urlParams.Length < 1)
                
return searchKey;
            urlParams 
= urlParams.Replace("&page=""page=");
            
if(urlParams.IndexOf("page="> 0)
                urlParams 
= urlParams.Substring(0,urlParams.IndexOf("page="));
            
return urlParams + "&" + searchKey;
        }
        
public int PageSize
        {
            
get
            {
                
return _pagesize;
            }
            
set
            {
                _pagesize 
= value;
            }
        }
        
    }
}
原文地址:https://www.cnblogs.com/zkxp/p/363767.html