关闭

datagrid翻页功能的自定义控件

819人阅读 评论(0) 收藏 举报

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语句(查询数据用)。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2283465次
    • 积分:26093
    • 等级:
    • 排名:第228名
    • 原创:1篇
    • 转载:1662篇
    • 译文:0篇
    • 评论:98条
    最新评论