【发布时间】:2017-06-12 21:33:09
【问题描述】:
我在OnUpdating 命令期间使用以下代码更新网格视图中的值,
protected void grid_view_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = (GridViewRow)grid_view.Rows[e.RowIndex];
int number = Convert.ToInt32(((TextBox)row.Cells[3].FindControl("flatnumber")).Text);
string type = ((DropDownList)row.Cells[4].FindControl("flattype")).Text;
int max = Convert.ToInt32(((DropDownList)row.Cells[5].FindControl("flatvacancy")).Text);
string flatID = ((Label)row.Cells[0].FindControl("flatid")).Text;
DataTable dt = (DataTable)ViewState["Table"];
DataRow[] datarow = dt.Select("ID='" + flatID + "'");
dt.Rows[e.RowIndex].BeginEdit();
dt.Rows[e.RowIndex]["Number"] = number;
dt.Rows[e.RowIndex]["Type"] = type;
dt.Rows[e.RowIndex]["Vacancy"] = max;
dt.Rows[e.RowIndex].EndEdit();
dt.AcceptChanges();
ViewState["Table"] = dt;
grid_view.EditIndex = -1;
grid_view.DataSource = dt;
grid_view.DataBind();
}
此代码在网格视图的第一页中运行良好,但是当我尝试编辑第二页时它不起作用。当我点击编辑按钮时,相应的行编辑模板正在加载。当我单击保存而不是保存到第二页时,第一页行被修改。例如,如果我在第 2 页的第 2 行单击编辑,在单击更新后,第 1 页的第 3 行被修改为新值,而不是第 2 页的第 2 行。
我的 RowEditing 和 CancelEditing 代码如下,
protected void grid_view_RowEditing(object sender, GridViewEditEventArgs e)
{
grid_view.EditIndex = e.NewEditIndex;
DataTable dt = (DataTable)ViewState["Table"];
grid_view.DataSource = dt;
grid_view.DataBind();
}
protected void grid_view_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
grid_view.EditIndex = -1;
DataTable dt = (DataTable)ViewState["Table"];
grid_view.DataSource = dt;
grid_view.DataBind();
}
【问题讨论】:
标签: javascript c# html asp.net gridview