📄 getsearchpage.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 System.Web;
namespace Club.Common
{
/// <summary>
/// 分页控件
/// </summary>
[ToolboxData("<{0}:GetSearchPage runat=server></{0}:GetSearchPage>")]
public class GetSearchPage : System.Web.UI.WebControls.Panel,System.Web.UI.INamingContainer
{
public GetSearchPage()
{
base.Width=Unit.Parse("100%");
}
#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;
private int pageIndex = 1;
private string pageUrlFormatString="?PageIndex={0}";
private string countFormatString="共{0}条 {1}条/页 {2}/{3}页";
private int recordCount=0;
private int pageSize=0;
private int pageButtonCount=10;
private object dataSource=null;
private string numberButtonFormatString=" {0} ";
/// <summary>
/// 页面索引
/// </summary>
public int PageIndex
{
get
{
return this.pageIndex;
}
set
{
this.pageIndex=value;
}
}
/// <summary>
/// 页面地址格式化字符串
/// </summary>
public string PageUrlFormatString
{
get
{
return this.pageUrlFormatString;
}
set
{
this.pageUrlFormatString=value;
}
}
/// <summary>
/// 统计格式字符
/// </summary>
public string CountFormatString
{
get
{
return this.countFormatString;
}
set
{
this.countFormatString=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
{
return this.recordCount;
}
set
{
this.recordCount=value;
}
}
/// <summary>
/// 页面尺寸
/// </summary>
public int PageSize
{
get
{
return this.pageSize;
}
set
{
this.pageSize=value;
}
}
/// <summary>
/// 按钮数
/// </summary>
public int PageButtonCount
{
get
{
return this.pageButtonCount;
}
set
{
this.pageButtonCount=value;
}
}
/// <summary>
/// 数字按钮格式化字符串
/// </summary>
public string NumberButtonFormatString
{
get
{
return this.numberButtonFormatString;
}
set
{
this.numberButtonFormatString=value;
}
}
/// <summary>
/// 需分页的数据集
/// </summary>
public object DataSource
{
get
{
return this.dataSource;
}
set
{
this.dataSource=value;
}
}
#endregion
#region 绑定数据
protected override void OnDataBinding(EventArgs e)
{
base.CreateChildControls ();
if(this.FindControl("pageButton")!=null)
{
Panel _page=(Panel)this.FindControl("pageButton");
}
if(HttpContext.Current.Request.QueryString["PageIndex"]!=null)
{
this.PageIndex = int.Parse(HttpContext.Current.Request.QueryString["PageIndex"]);
}
if(this.FindControl("dataList")!=null)
{
this.dataList=this.FindControl("dataList");
}
GetMyDsBind();
GetMyButton();
this.FindControl("pageButton").Visible=true;
}
private void GetMyDsBind()
{
if(this.dataSource==null)
{
return ;
}
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 创建按钮
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;
}
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
#region 隐藏标记
public override void RenderBeginTag(System.Web.UI.HtmlTextWriter writer) {}
public override void RenderEndTag(System.Web.UI.HtmlTextWriter writer) {}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -