65.9K
CodeProject 正在变化。 阅读更多。
Home

一个方便的数据网格分页控件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.67/5 (5投票s)

2005年5月21日

viewsIcon

44333

downloadIcon

802

它使用起来非常简单,是最方便的 DataGrid 分页控件。

引言

上次,我提交了一个 Web 控件来配置网站中的数据连接在 web.config 中,它简单方便。这次我们来做一个最方便的 DataGrid 分页控件。步骤如下:

  1. 将一个 Pager 和一个 PagerExt Web 控件拖放到网页中。
  2. ControlID 属性设置为 DataGrid 的 ID,或者在代码中设置,如下所示:

    override protected void OnInit(EventArgs e)
    {
        InitializeComponent();
        base.OnInit(e);
    
        this.Pager1.ControlID = this.DataGrid1.ID;
        this.PagerExt1.ControlID = this.DataGrid1.ID;
    }
  3. 编写数据绑定函数
    private void BindGrid()
    {
        try
        {
            this.DataGrid1.DataSource = 
                        obj.GetDataSet(this.TextBox1.Text);
            this.DataGrid1.DataBind();
            
            // this is important for the show current 
            // page number correctly.
            this.PagerExt1.Refresh(); 
        }
        catch
        {
            this.Page.RegisterStartupScript
            ("","<script>alert('Please check the sql " + 
                           "cmd or wbe.config');</script>");
        }
    }
  4. 编写事件代码
    private void Pager1_PagerClick(object sender, 
                                     System.EventArgs e)
    {
        this.BindGrid();
    }
    private void PagerExt1_PageGoClick(object sender, 
                                     System.EventArgs e)
    {
        this.BindGrid();
    }

测试你的 DataGrid 分页控件

如何操作

private void Pager_Click(object sender, EventArgs e)
{
    if (this.Page.FindControl(this.ControlID) == null)
        return;

    String arg = ((LinkButton)sender).CommandArgument;

    try
    {
      switch(arg)
      {
        case "First":
           ((System.Web.UI.WebControls.DataGrid)this.
                Page.FindControl(this.ControlID)).CurrentPageIndex = 0;
            this.OnPagerCmd(e);
            break;
        case "Prev":
            if (((System.Web.UI.WebControls.DataGrid)this.
                      Page.FindControl(this.ControlID)).CurrentPageIndex > 0)
               ((System.Web.UI.WebControls.DataGrid)this.Page.
                               FindControl(this.ControlID)).CurrentPageIndex --;
            this.OnPagerCmd(e);
            break;
        case "Next":
            if (((System.Web.UI.WebControls.DataGrid)this.
                         Page.FindControl(this.ControlID)).CurrentPageIndex < 
                (((System.Web.UI.WebControls.DataGrid)this.
                               Page.FindControl(this.ControlID)).PageCount - 1))
                ((System.Web.UI.WebControls.DataGrid)this.
                          Page.FindControl(this.ControlID)).CurrentPageIndex ++;
            this.OnPagerCmd(e);
            break;
        case "Last":
            ((System.Web.UI.WebControls.DataGrid)this.
               Page.FindControl(this.ControlID)).CurrentPageIndex = 
                              ((System.Web.UI.WebControls.DataGrid)this.
                                Page.FindControl(this.ControlID)).PageCount - 1;
            this.OnPagerCmd(e);
            break;
      }
    }
    catch
    {
        return;
    }
}
© . All rights reserved.