【问题标题】:Gridview pagination not working when the gridview is created dynamically by dropdownlist list selection当通过下拉列表选择动态创建gridview时,Gridview分页不起作用
【发布时间】:2013-05-31 21:14:10
【问题描述】:

我在 c# 的数据集中缓存了一个 select * 查询。

在我的页面上,我有 3 个下拉列表。 根据选择的下拉列表,我过滤数据表并将其绑定到网格视图。 每当下拉列表中的数据发生变化时,我都会相应地显示数据。

我的问题是,我已经在这个 gridview 中添加了分页,因为每个查询都有 500 多个结果。 当我尝试分页时,gridview 消失了。下拉列表中的值没有改变。

我该怎么办?

gridview改变页面索引的代码为:

protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}

提前感谢您的帮助。

【问题讨论】:

    标签: c# asp.net gridview pagination


    【解决方案1】:

    你需要在函数中再次绑定你的网格

    protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        //provide data source here
        GridView1.DataBind();
    }
    

    【讨论】:

      【解决方案2】:

      以下是可能对您有所帮助的步骤...

      1. 将动态 gridview 控件添加到页面或您希望在页面上显示的任何其他控件中。
      2. PageIndexChanging 事件处理程序一起设置其寻呼机设置
      3. OnInit事件中调用它而不是Page_Load

      以下是示例代码:

      private void AddGridDynamically() 
      {
          try
          {
              HtmlTableRow tr = new HtmlTableRow();
              HtmlTableCell td = new HtmlTableCell();
              GridView gv = new GridView();                                
                  gv.AllowPaging = true;
                  gv.PageSize = 20;
                  gv.PagerSettings.Visible = true;
                  gv.PagerSettings.Mode = PagerButtons.NumericFirstLast;
                  gv.PageIndexChanging += new GridViewPageEventHandler(gv_PageIndexChanging);
      
              FillGrid(gv);
      
              td.Controls.Add(gv);
              tr.Cells.Add(td);
              tbl1.Rows.Add(tr);
      
              gv.EmptyDataText="No Data Found";
              gv.DataBind();        
          }
          catch (Exception ex)
          {
              throw ex;
          }       
      }
      
      private void FillGrid(GridView gv)
      {
          try
          {
              DataTable dt = new DataTable();
              dt.Columns.Add("Name");
              dt.Columns.Add("Id");
              DataRow dr;
              for (int i = 0; i < 100; i++)
              {
                  dr = dt.NewRow();
                  dr[0] = "AnyThing" + i;
                  dr[1] = i;
                  dt.Rows.Add(dr);
      
              }
              gv.DataSource = dt;          
          }
          catch (Exception ex)
          { 
          }
      }
      
      protected override void OnInit(EventArgs e)
      {
          AddGridDynamically();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-30
        • 1970-01-01
        相关资源
        最近更新 更多