我有一个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);
}
它确实显示了下一页的记录,但我的问题是每次更改页面索引时都会再次添加boundfields。我怎样才能防止这种情况发生,有什么方法可以解决这个问题?
非常感谢。
答案 0 :(得分:0)
你必须将以下索引移到变量e到寻呼机。
试试这个:
grdSqlQuery.PageIndex = e.NewPageIndex
grdSqlQuery.DataSource = ViewState("dts_Sqlquery")
grdSqlQuery.DataBind()
答案 1 :(得分:0)
找到解决方案。我的问题是由于Page_Load
我一遍又一遍地添加boundfields
这一事实造成的。
答案 2 :(得分: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();
}