【发布时间】:2012-01-12 00:16:58
【问题描述】:
我有一个依赖于三个级联下拉列表的网格视图(在更新面板中)。当用户在 gridview 中编辑单元格、更改下拉菜单并单击“显示”时,它会调用以下代码隐藏:
protected void Save_Click(Object sender, EventArgs e)
{
foreach (GridViewRow gvr in MasterDisplay.Rows)
MasterDisplay.UpdateRow(gvr.RowIndex, false);
MasterDisplay.DataBind();
}
问题是下拉菜单会改变网格视图,所以更新的单元格会乱序。一个例子:假设我有六个项目:A1、A2、A3、B1、B2、B3。如果我编辑 B2 的价格,然后更改显示“首先显示 Bs”的下拉菜单,在结果页面上我将看到 A2 的新价格(即,顺序中的第五个)。
我认为这是因为在 UpdateRow() 中我们只是根据索引进行更新 (gvr.RowIndex),因此 GridView 会以某种方式重新显示(不会丢失新的价格数据!)然后更新。
关于如何确保将这些更改保存到适当的行,而不仅仅是现在恰好与以前具有相同索引的行有什么想法吗?
【问题讨论】:
-
作为记录,我想在显示点击上执行此操作,因为我会抛出一个模式说“保存更改?Y/N”,其中“Y”是一个 asp:Button 绑定到 Save_Click .
标签: gridview code-behind