2012-08-01 126 views
0

我有一个gridview为我设置的绑定列以及在代码中的数据源身后和PageIndexChanging事件我设置:的GridView PageIndexChanging事件

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

绑定列也从数据库中来,我已经加入他们是这样的:

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

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

非常感谢。

+0

如何添加绑定字段? – Adil 2012-08-01 16:07:43

回答

0

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

grdSqlQuery.PageIndex = e.NewPageIndex 
    grdSqlQuery.DataSource = ViewState("dts_Sqlquery") 
    grdSqlQuery.DataBind() 
0

找到了解决这个。我的问题是由于Page_Load我一次又一次地添加了boundfields

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

感谢您发表一个答案!虽然代码片段可以回答这个问题,但添加一些附加信息仍然很棒,比如解释等。 – j0k 2013-02-12 12:55:42