0

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

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

我的问题是,由于每个查询都有 500 多个结果,因此我已向此网格视图添加了分页。当我尝试分页时,gridview 消失了。下拉列表中的值没有改变。

我应该怎么办?

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

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

感谢您提前提供帮助。

4

2 回答 2

1

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

protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    //provide data source here
    GridView1.DataBind();
}
于 2013-06-01T04:21:00.283 回答
1

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

  1. 将动态 gridview 控件添加到页面或您希望在页面上显示的任何其他控件中。
  2. PageIndexChanging与事件处理程序一起设置其寻呼机设置
  3. 在 Event 中调用它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();
}
于 2014-03-01T20:06:27.063 回答