📄 datagridnavigation.ascx.cs
字号:
namespace ZHENGYI {
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
/// <summary>
/// 实现DataGrid控件的分页显示
/// </summary>
public delegate void BindDataDelegate();//事件委托
public partial class DataGridNavigation : System.Web.UI.UserControl {
protected System.Web.UI.WebControls.Button Go;
private BindDataDelegate BindData;
private DataGrid _dg;
//要操作的DataGrid控件
private int pagesize=1;//默认的分页数
#region Web Form Designer generated code
override protected void OnInit(EventArgs e) {
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// 设计器支持所需的方法 - 不要使用
/// 代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent() {
this.Next.Click += new System.Web.UI.ImageClickEventHandler(this.Next_Click);
this.Lastly.Click += new System.Web.UI.ImageClickEventHandler(this.Lastly_Click);
this.ImageButton1.Click += new System.Web.UI.ImageClickEventHandler(this.Go_Click);
}
#endregion
protected void Page_Load(object sender, System.EventArgs e) {
}
/// <summary>
/// 主方法
/// </summary>
/// <param name="adg">DataGrid控件名</param>
/// <param name="NewBind">数据绑定事件委托</param>
/// <param name="iPageSize">每页显示数</param>
public void SetTarget(DataGrid adg,BindDataDelegate NewBind,int iPageSize) {
_dg=adg;
BindData=new BindDataDelegate(NewBind);
this.First.Click+= new System.Web.UI.ImageClickEventHandler(this.NavigationButton_Click);
this.Previous.Click += new System.Web.UI.ImageClickEventHandler(this.NavigationButton_Click);
this.Next.Click += new System.Web.UI.ImageClickEventHandler(this.NavigationButton_Click);
this.Lastly.Click += new System.Web.UI.ImageClickEventHandler(this.NavigationButton_Click);
_dg.DataBinding += new System.EventHandler(this.BeforeDataBinding);
_dg.AllowPaging = true;
_dg.AllowCustomPaging = false;
_dg.PagerStyle.Visible = false;
pagesize=iPageSize;
_dg.PageSize = pagesize;
_dg.PagerStyle.Mode = PagerMode.NumericPages;
_dg.PagerStyle.HorizontalAlign = HorizontalAlign.Right;
}
/// <summary>
/// 主方法
/// </summary>
/// <param name="adg">DataGrid控件名</param>
/// <param name="NewBind">数据绑定事件委托</param>
public void SetTarget(DataGrid adg,BindDataDelegate NewBind) {
_dg=adg;
BindData=new BindDataDelegate(NewBind);
this.First.Click += new System.Web.UI.ImageClickEventHandler(this.NavigationButton_Click);
this.Previous.Click += new System.Web.UI.ImageClickEventHandler(this.NavigationButton_Click);
this.Next.Click += new System.Web.UI.ImageClickEventHandler(this.NavigationButton_Click);
this.Lastly.Click += new System.Web.UI.ImageClickEventHandler(this.NavigationButton_Click);
_dg.DataBinding += new System.EventHandler(this.BeforeDataBinding);
_dg.AllowPaging = true;
_dg.AllowCustomPaging = false;
_dg.PagerStyle.Visible = false;
_dg.PageSize = pagesize;
_dg.PagerStyle.Mode = PagerMode.NumericPages;
_dg.PagerStyle.HorizontalAlign = HorizontalAlign.Right;
}
//分页按钮事件
private void NavigationButton_Click(object sender, System.Web.UI.ImageClickEventArgs e) {
string strCommandName=((ImageButton)sender).ID;//取得事件的对象名
switch(strCommandName) {
case "First":
_dg.CurrentPageIndex=0;//跳转到首页
PageOperate();
break;
case "Previous":
_dg.CurrentPageIndex=Math.Max(_dg.CurrentPageIndex-1,0);//跳转到上一页
PageOperate();
break;
case "Next":
_dg.CurrentPageIndex=Math.Min(_dg.CurrentPageIndex+1,_dg.PageCount-1);//跳转到下一页
PageOperate();
break;
case "Lastly":
_dg.CurrentPageIndex=_dg.PageCount-1;//跳转到最后一页
PageOperate();
break;
}
BindData();//绑定数据
}
//页次显示改变
private void PageOperate() {
PageNumber.Text=(_dg.CurrentPageIndex+1).ToString() + "/" + _dg.PageCount.ToString();//页次
PageBulk.Text=pagesize.ToString();
}
//页面跳转
private void Go_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
if(SelectPage.Text.Trim()!="")
{
int iPage=int.Parse(SelectPage.Text.Trim()) - 1;
if(iPage>=0 && iPage<=_dg.PageCount-1)
{
_dg.CurrentPageIndex=iPage;
PageOperate();
BindData();
}
else if (iPage>_dg.PageCount-1)
{
_dg.CurrentPageIndex=_dg.PageCount-1;
BindData();
}
else
_dg.CurrentPageIndex=0;
BindData();
}
else
ImageButton1.EnableViewState=true;
}
/// <summary>
/// DataGrid数据邦定前,设置导航条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BeforeDataBinding(object sender, System.EventArgs e) {
int newCount = 0;
int PageCount = 0;
if (_dg.DataSource.GetType().ToString().ToLower() == "system.data.datatable") {
newCount = ((DataTable)_dg.DataSource).Rows.Count;
}
else if(_dg.DataSource.GetType().ToString().ToLower() == "system.data.dataview") {
newCount = ((DataView)_dg.DataSource).Table.Rows.Count;
}
else if(_dg.DataSource.GetType().ToString().ToLower() == "system.data.dataset") {
newCount = ((DataSet)_dg.DataSource).Tables[0].Rows.Count;
}
PageCount = (int)((newCount-1) / pagesize + 1);
PageNumber.Text=(_dg.CurrentPageIndex + 1).ToString() + "/" + PageCount.ToString();
PageBulk.Text=pagesize.ToString();
RecordNumber.Text=newCount.ToString();
}
private void Next_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
}
private void Lastly_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -