1

我有一个gridview,我在后面的代码和我设置的PageIndexChanging事件上设置了boundfields和数据源:

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

BoundFields 也来自数据库,我这样添加它们:

foreach (DataRow drColumn in dtColumns.Rows)
{
   BoundField bfEmbeddedColumn = new BoundField();    
   bfEmbeddedColumn.HeaderText = drColumn["ColName"].ToString();    
   bfEmbeddedColumn.DataField = drEmbeddedTaskColumn["ColName"].ToString();    
   bfEmbeddedColumn.ItemStyle.Width = 120;    
   grvList.Columns.Add(bfEmbeddedColumn);
}

它确实显示了下一页上的记录,但我的问题是每次更改页面索引时都会再次添加绑定字段。我怎样才能防止这种情况发生,有办法解决这个问题吗?

非常感谢。

4

3 回答 3

0

您必须将以下索引移动到变量 e 到寻呼机。
尝试这个:

    grdSqlQuery.PageIndex = e.NewPageIndex
    grdSqlQuery.DataSource = ViewState("dts_Sqlquery")
    grdSqlQuery.DataBind()
于 2012-08-01T16:17:41.153 回答
0

找到了解决方案。我的问题是由于Page_Loadboundfields一遍又一遍地添加。

于 2012-08-03T08:18:21.463 回答
0
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
        try
        {
        int count = 0;
        SetData();
        GridView1.AllowPaging = false;
        GridView1.DataBind();
        ArrayList arr = (ArrayList)ViewState["SelectedRecords"];
        count = arr.Count;
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            if (arr.Contains(GridView1.DataKeys[i].Value))
            {
                Session.Add("PatientID", GridView1.DataKeys[i].Value.ToString());
                arr.Remove(GridView1.DataKeys[i].Value);
                Response.Redirect("~/EditPaitientDetails.aspx");
            }
        }
        ViewState["SelectedRecords"] = arr;
        hfCount.Value = "0";
        GridView1.AllowPaging = true;
        BindGrid();

        //ShowMessage(count);
    }
    catch (Exception ex)
    {

    }

}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    BindGrid();
}
于 2013-02-12T12:31:33.357 回答