当通过下拉列表列表选择动态创建gridview时,Gridview分页不起作用

时间:2013-05-31 21:14:11

标签: c# asp.net gridview pagination

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

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

我的问题是,我已经为此gridview添加了分页,因为每个查询的结果超过500个。 当我尝试分页时,gridview消失。下拉列表中的值不会改变。

我该怎么办?

网页代码更改gridview的索引是:

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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您需要在函数

中再次绑定网格
protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    //provide data source here
    GridView1.DataBind();
}

答案 1 :(得分:1)

以下步骤可以帮助您...

  1. 将动态网格视图控件添加到页面或任何其他您希望在页面上显示它的控件。
  2. 将其寻呼机设置与PageIndexChanging事件处理程序
  3. 一起设置
  4. OnInit事件中调用它,而不是Page_Load
  5. 以下是示例代码:

    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();
    }