【发布时间】:2015-09-25 14:59:25
【问题描述】:
我正在尝试将 GridView1_RowEditing 设置为 gridview 的 ID,而不是索引,因为当最终用户搜索值并编辑行时它会导致问题。我已经改变了我的代码:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
BindGridView();
}
到这里:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
Label ID = (Label)GridView1.Rows[e.NewEditIndex].FindControl("ID");
BindGridView();
}
ID 是数据库中列的名称。
但是当我第二次单击编辑按钮时出现此错误:
加载视图状态失败。视图状态所在的控制树 正在加载的必须与用于保存的控制树匹配 上一个请求期间的视图状态。例如,当添加 动态控制,在回发期间添加的控件必须匹配 在初始阶段添加的控件的类型和位置 请求。
【问题讨论】:
-
尝试先绑定网格视图,然后访问它的数据。还有为什么你需要存储那个ID。当请求被提供时,那个“ID”变量就会消失。
-
嗯,我已经看到了几个讨论,但我没有找到答案。它只是一个简单的Gridview,具有编辑、取消、更新功能和搜索框来搜索gridview。问题出在gridview的索引中。例如,Gridview 中有 10 行,如果您尝试自己制作此 gridview 并在第 10 行中搜索一个值,它会显示一行是第 10 行,如果没问题,但如果您单击编辑,则所有 10 行显示和编辑索引转到第一行。
-
您说“如果您尝试自己制作此网格视图”是什么意思?
-
当您单击编辑时,会发生回发,并且网格会重新绑定到其数据源,并且由于它不知道您的搜索,因此它会显示所有 10 行。