SQL Server 2000DBAWindows 2003.NET 1.1Windows 2000Windows XP中级开发Visual StudioSQL ServerSQLWindows.NETASP.NETC#
一个方便的数据网格分页控件






3.67/5 (5投票s)
2005年5月21日

44333

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

引言
上次,我提交了一个 Web 控件来配置网站中的数据连接在 web.config 中,它简单方便。这次我们来做一个最方便的 DataGrid 分页控件。步骤如下:
- 将一个 Pager和一个PagerExtWeb 控件拖放到网页中。
- 将 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; } 
- 编写数据绑定函数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>"); } } 
- 编写事件代码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;
    }
}