datagrid翻页功能的自定义控件

namespace XXXX.UserControl
{
  using System;
  using System.Data;
  using System.Drawing;
  using System.Web;
  using System.Web.UI.WebControls;
  using System.Web.UI.HtmlControls;
  using System.Data.SqlClient;

 /// <summary>
 ///  pagemanager 的摘要说明。
 /// </summary>
 public class pagemanager : System.Web.UI.UserControl
 {
  protected System.Web.UI.WebControls.Label lbl_pagecount;
  protected System.Web.UI.WebControls.Label lbl_currentpage;
  protected System.Web.UI.WebControls.Label lbl_num;
  protected System.Web.UI.WebControls.DropDownList DropDownList2;
  protected System.Web.UI.WebControls.LinkButton LinkButton3;
  protected System.Web.UI.WebControls.LinkButton LinkButton4;
  protected System.Web.UI.WebControls.LinkButton LinkButton2;
  protected System.Web.UI.WebControls.LinkButton LinkButton1;
  DataGrid myGrid;

  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面 
   myGrid=(DataGrid)Page.FindControl("myDataGrid");
    if(myGrid==null)
    {
     myGrid=(DataGrid)Page.FindControl("myGrid");
    }
   if(!IsPostBack)
   {
    this.BindPag();
    this.ShowStats();
   }
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  ///  设计器支持所需的方法 - 不要使用代码编辑器
  ///  修改此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
    this.DropDownList2.SelectedIndexChanged += new System.EventHandler       (this.DropDownList2_SelectedIndexChanged);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  #region 绑定到DataGrid控件
  private void DataBindToGrid()
  {
  Label mysqlLb=(Label)Page.FindControl("lbl_sql");
   DataSet ds=new DataSet();
   string  temp=mysqlLb.Text;
  
    ds=GetDataSet(temp[1].ToString(),temp[2].ToString());//获得dataset,需要自己写该函数或类

   myGrid.DataSource=ds.Tables[0].DefaultView;
   myGrid.DataBind();

   this.BindPag();
   this.ShowStats();
  }
  #endregion

  #region 分页BindPag()
  private  void BindPag()
  {
   //使DropDownList2的选择与DataGrid的页码同步,并重新填写DropDownList2的选项
   DropDownList2.Items.Clear();
   System.Web.UI.WebControls.ListItem li=new ListItem();
   for(int i=1;i<=this.myGrid.PageCount;i++)
   {
    li.Text =i.ToString(); 
    li.Value=i.ToString();
    //重新填写DropDownList2的选项
    this.DropDownList2.Items.Add(i.ToString());
    if(i==myGrid.CurrentPageIndex+1)
    {
     //使DropDownList2的选择与DataGrid的页码同步
     DropDownList2.SelectedIndex=DropDownList2.Items.IndexOf(DropDownList2.Items.FindByValue(i.ToString()));
    }
   }
  }
  #endregion

  #region 显示页控制按钮状态ShowStats()
  private void ShowStats()
  {
   lbl_currentpage.Text = "第 " + (myGrid.CurrentPageIndex + 1).ToString() + " 页";
   lbl_pagecount.Text = "总共 " + myGrid.PageCount.ToString() + " 页";
   lbl_num.Text=myGrid.PageSize .ToString() +"条/页";
   if (myGrid.CurrentPageIndex==0)
   {
    //如果选中的是首页
    this.LinkButton1.Enabled =false;
    this.LinkButton2.Enabled =false;
   }
   else
   {
    //不是首页
    this.LinkButton1.Enabled =true;
    this.LinkButton2.Enabled =true;
   }
   if (myGrid.CurrentPageIndex==myGrid.PageCount-1)
   {
    //如果选中的是尾页
    this.LinkButton3.Enabled=false;
    this.LinkButton4.Enabled =false;
   }
   else
   {
    //不是尾页
    this.LinkButton3.Enabled =true;
    this.LinkButton4.Enabled =true;
   }
  }
  #endregion

  #region 页选择 DropDownList2_SelectedIndexChanged
  private void DropDownList2_SelectedIndexChanged(object sender, System.EventArgs e)
  {
   //DropDownList2变化使datagrid显示页同步
   myGrid.CurrentPageIndex = System.Convert.ToInt32(DropDownList2.SelectedItem.Value)-1;
   DataBindToGrid() ;
   ShowStats();
  }
  #endregion

  #region 页面转换按钮响应函数PagerButtonClick
  public void PagerButtonClick(object sender, EventArgs e)
  {
   string arg = ((LinkButton)sender).CommandArgument.ToString();
   switch(arg)
   {
    case "next":
     if (myGrid.CurrentPageIndex <( myGrid.PageCount - 1))
     {
      myGrid.CurrentPageIndex += 1;
     }
     break;
    case "prev":
     if (myGrid.CurrentPageIndex > 0)
     {
      myGrid.CurrentPageIndex -= 1;
     }
     break;
    case "last":
     myGrid.CurrentPageIndex = (myGrid.PageCount - 1);
     break;
    default:
     myGrid.CurrentPageIndex = System.Convert.ToInt32(arg);
     break;
   }
   DataBindToGrid();
   ShowStats();
  }
  #endregion
 }
}
说明:在需要放置该控件的页面上,需要放置一个lbl_sql标签,用于存放sql语句(查询数据用)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值