📄 requestpager.cs
字号:
//Copyright (C) 2006 dooogo.com
//Author:benben
//www.aspxclub.com
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using Club.Framework.Data;
using Club.Framework;
namespace Club.Common
{
/// <summary>
/// 分页控件
/// </summary>
[ToolboxData("<{0}:GetRequestPage runat=server></{0}:GetRequestPage>")]
public class GetRequestPage : System.Web.UI.WebControls.Panel,System.Web.UI.INamingContainer
{
#region 属性
private Control dataList=null;
private HyperLink first=null;
private HyperLink end = null;
private HyperLink next=null;
private HyperLink pre = null;
private Label showCount=null;
/// <summary>
/// 页面索引
/// </summary>
public int PageIndex
{
get
{
if(this.ViewState["PageIndex"]==null)
{
return 1;
}
return (int)this.ViewState["PageIndex"];
}
set
{
this.ViewState["PageIndex"]=value;
}
}
public string TableName
{
get
{
if(this.ViewState["TableName"]==null)
{
return string.Empty;
}
return (string)this.ViewState["TableName"];
}
set
{
this.ViewState["TableName"]=value;
}
}
public string Fields
{
get
{
if(this.ViewState["Fields"]==null)
{
return string.Empty;
}
return (string)this.ViewState["Fields"];
}
set
{
this.ViewState["Fields"]=value;
}
}
public string WhereString
{
get
{
if(this.ViewState["WhereString"]==null)
{
return string.Empty;
}
return (string)this.ViewState["WhereString"];
}
set
{
this.ViewState["WhereString"]=value;
}
}
/// <summary>
/// 页面地址格式化字符串
/// </summary>
public string PageUrlFormatString
{
get
{
if(this.ViewState["PageUrlFormatString"]==null)
{
return "?PageIndex={0}";
}
return (string)this.ViewState["PageUrlFormatString"];
}
set
{
this.ViewState["PageUrlFormatString"]=value;
}
}
/// <summary>
/// 统计格式字符
/// </summary>
public string CountFormatString
{
get
{
if(this.ViewState["CountFormatString"]==null)
{
return "共{0}条 {1}条/页 {2}/{3}页";
}
return (string)this.ViewState["CountFormatString"];
}
set
{
this.ViewState["CountFormatString"]=value;
}
}
/// <summary>
/// 排列顺序,默认为降序
/// </summary>
public bool OrderType
{
get
{
if(this.ViewState["OrderType"]==null)
{
return true;
}
return (bool)this.ViewState["OrderType"];
}
set
{
this.ViewState["OrderType"]=value;
}
}
/// <summary>
/// 排列字段
/// </summary>
public string OrderField
{
get
{
if(this.ViewState["OrderField"]==null)
{
return string.Empty;
}
return (string)this.ViewState["OrderField"];
}
set
{
this.ViewState["OrderField"]=value;
}
}
/// <summary>
/// 页面统计
/// </summary>
public int PageCount
{
get
{
if((this.RecordCount%this.PageSize)>0)
{
return (this.RecordCount/this.PageSize)+1;
}
else
{
return this.RecordCount/this.PageSize;
}
}
}
/// <summary>
/// 记录统计
/// </summary>
public int RecordCount
{
get
{
if(this.ViewState["RecordCount"]==null)
{
return 0;
}
return (int)this.ViewState["RecordCount"];
}
set
{
this.ViewState["RecordCount"]=value;
}
}
/// <summary>
/// 页面显示数
/// </summary>
public int PageSize
{
get
{
if(this.ViewState["PageSize"]==null)
{
return 10;
}
return (int)this.ViewState["PageSize"];
}
set
{
this.ViewState["PageSize"]=value;
}
}
/// <summary>
/// 按钮数
/// </summary>
public int PageButtonCount
{
get
{
if(this.ViewState["PageButtonCount"]==null)
{
return 10;
}
return (int)this.ViewState["PageButtonCount"];
}
set
{
this.ViewState["PageButtonCount"]=value;
}
}
/// <summary>
/// 数字按钮格式化字符串
/// </summary>
public string NumberButtonFormatString
{
get
{
if(this.ViewState["NumberButtonFormatString"]==null)
{
return " {0} ";
}
return (string)this.ViewState["NumberButtonFormatString"];
}
set
{
this.ViewState["NumberButtonFormatString"]=value;
}
}
/// <summary>
/// 是否DataSet直接分页
/// </summary>
public bool IsDataSetPage
{
get
{
if(this.ViewState["IsDataSetPage"]==null)
{
return false;
}
return (bool)this.ViewState["IsDataSetPage"];
}
set
{
this.ViewState["IsDataSetPage"]=value;
}
}
/// <summary>
/// 需分页的数据集
/// </summary>
public DataSet DataSource
{
get
{
if(this.ViewState["DataSource"]==null)
{
return null;
}
return (DataSet)this.ViewState["DataSource"];
}
set
{
this.ViewState["DataSource"]=value;
}
}
#endregion
public GetRequestPage()
{
//base.BackColor = Color.WhiteSmoke;
base.Width = new Unit("100%");
}
#region 绑定数据
protected override void OnDataBinding(EventArgs e)
{
base.OnDataBinding (e);
if(Page.Request.QueryString["PageIndex"]!=null)
{
this.PageIndex = int.Parse(Page.Request.QueryString["PageIndex"]);
}
if(this.FindControl("dataList")!=null)
{
this.dataList=this.FindControl("dataList");
}
if(this.IsDataSetPage)
{
GetSqlDsBind();
}
else
{
GetMyDsBind();
}
GetMyButton();
}
/// <summary>
///
/// </summary>
protected override void CreateChildControls()
{
base.CreateChildControls ();
}
private void GetSqlDsBind()
{
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = this.DataSource.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize =this.PageSize;
objPds.CurrentPageIndex =this.PageIndex-1;
this.RecordCount=objPds.DataSourceCount;
if(this.dataList!=null)
{
if(this.dataList is BaseDataList)
{
BaseDataList _baseDataList=(BaseDataList)this.dataList;
_baseDataList.DataSource= objPds;
_baseDataList.DataBind();
}
else if(this.dataList is Repeater)
{
Repeater _repeater=(Repeater)this.dataList;
_repeater.DataSource= objPds;
_repeater.DataBind();
}
else
{
throw new System.Exception("列表控件类型不正确!请重新设置内部ID为dataList的列表控件!");
}
}
else
{
throw new System.Exception("没有找到内部ID为dataList的列表控件!");
}
}
private void GetMyDsBind()
{
int rowCount;
this.DataSource=Globals.DbProvider.SelectPageByDataSet(this.TableName,this.Fields,this.OrderField,this.PageSize,this.PageIndex,true,this.OrderType,this.WhereString,out rowCount);
this.RecordCount=rowCount;
if(this.dataList!=null)
{
if(this.dataList is BaseDataList)
{
BaseDataList _baseDataList=(BaseDataList)this.dataList;
_baseDataList.DataSource= this.DataSource;
_baseDataList.DataBind();
}
else if(this.dataList is Repeater)
{
Repeater _repeater=(Repeater)this.dataList;
_repeater.DataSource= this.DataSource;
_repeater.DataBind();
}
else
{
throw new System.Exception("列表控件类型不正确!请重新设置内部ID为dataList的列表控件!");
}
}
else
{
throw new System.Exception("没有找到内部ID为dataList的列表控件!");
}
}
#endregion
#region 隐藏标记
public override void RenderBeginTag(System.Web.UI.HtmlTextWriter writer) {}
public override void RenderEndTag(System.Web.UI.HtmlTextWriter writer) {}
#endregion
#region 创建按钮
private void GetMyButton()
{
if(this.FindControl("FirstLink")!=null)
{
this.first=(HyperLink)this.FindControl("FirstLink");
this.first.NavigateUrl = string.Format(this.PageUrlFormatString,"1");
if(this.PageIndex==1)
{
this.first.Enabled=false;
}
else
{
this.first.Enabled=true;
}
}
if(this.FindControl("EndLink")!=null)
{
this.end=(HyperLink)this.FindControl("EndLink");
this.end.NavigateUrl = string.Format(this.PageUrlFormatString,this.PageCount);
if(this.PageIndex>=this.PageCount)
{
this.end.Enabled=false;
}
else
{
this.end.Enabled=true;
}
}
if(this.FindControl("PreLink")!=null)
{
this.pre=(HyperLink)this.FindControl("PreLink");
this.pre.NavigateUrl = string.Format(this.PageUrlFormatString,this.PageIndex>1?this.PageIndex-1:this.PageIndex);
}
if(this.PageIndex==1)
{
this.pre.Enabled=false;
}
else
{
this.pre.Enabled=true;
}
if(this.FindControl("IndexLink")!=null)
{
Control indexButton=this.FindControl("IndexLink");
//indexButton.Controls.Clear();
int startIndex;
int endIndex;
int currentButtonCount = this.PageButtonCount-1;
startIndex = this.PageIndex-(currentButtonCount/2);
startIndex = startIndex>0?startIndex:1;
endIndex = this.PageIndex+(currentButtonCount/2);
if((endIndex-startIndex)<currentButtonCount)
{
endIndex = startIndex+currentButtonCount;
}
endIndex = endIndex<this.PageCount?endIndex:this.PageCount;
if((endIndex-startIndex)<currentButtonCount)
{
startIndex= endIndex - currentButtonCount;
}
startIndex = startIndex>0?startIndex:1;
if(indexButton.Controls.Count==0)
{
for(int i=startIndex;i<=endIndex;i++)
{
HyperLink lb=new HyperLink();
lb.Text = string.Format(NumberButtonFormatString,i.ToString());
lb.NavigateUrl = string.Format(this.PageUrlFormatString,i);
if(this.PageIndex==i)
{
lb.Enabled=false;
lb.CssClass="a_curr";
}
indexButton.Controls.Add(lb);
}
}
}
if(this.FindControl("NextLink")!=null)
{
this.next=(HyperLink)this.FindControl("NextLink");
this.next.NavigateUrl = string.Format(this.PageUrlFormatString,this.PageIndex<this.PageCount?this.PageIndex+1:this.PageIndex);
}
if(this.PageIndex>=this.PageCount)
{
this.next.Enabled=false;
}
else
{
this.next.Enabled=true;
}
if(this.FindControl("ShowCount")!=null)
{
this.showCount = (Label)this.FindControl("ShowCount");
this.showCount.Text = string.Format(this.CountFormatString,this.RecordCount,this.PageSize,this.PageIndex,this.PageCount);
}
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -