数据更改后更新gridview行中的值,而不通过DataBind调用度假村

问题描述:

页面具有绑定到sqldatasource的gridview。我不允许在gridview中进行编辑。它的大部分列都是带有标签控件的模板字段。同一页上的formview控件显示当前选定的gridview行的数据。对formview控件进行更新。我希望gridview在保存后反映更新后的数据。一个简单的gv.DataBind()可以工作,但数据更新可能会涉及到gridview的排序,所以如果我调用gv.DataBind(),gv中的更新行最终可能会出现在网格的某个较远的页面上。我宁愿gridview只更新已经选择的行中的任何已更改的数据。数据更改后更新gridview行中的值,而不通过DataBind调用度假村

到目前为止,我所做的是让更新formview的子文件也更改所选gv行上标签的文本值。这似乎工作,但不会持续。我看到gv单元格中的更改,但只要我在gridview中选择另一行,出于某种原因,先前编辑过的行中的已修改单元格就会变为空白。

这样做的好方法是什么?

获取gridview(.PageIndex)的当前页面,做一个DataBind(),然后(重新)设置页面。

+0

“(重新)设置页面”是什么意思?如果我得到当前页面,执行一个databind(),刚刚编辑的记录可能会在完全不同的页面上完成,具体取决于更新的列和网格排序。如果你的重新设置有助于找到这个记录很好。但是我真正想要做的只是将gridview的一行更新为显示新数据,而不移动它在gridview中......使用更新的数据将它保存在同一个位置。 – meridian

+0

我的意思是重置gridview的页面。 '将gridview的当前页面保存在一个变量中',做好你的数据工作,做好databind(),如果gridview返回页面1,'将gridview的页面设置为先前保存在变量中的页面。 – wazz

+0

这并不能解决问题,因为在formview数据更新之后,更新的记录可能不会出现在原来的GridView页面上。示例如果gridview按姓氏排序,并且formview更新将人员的姓氏从Klunkedorf更改为Clunkendorf,则在绑定记录后数据将位于不同的gv页面上。因此,我有兴趣更新单行的文本值......而不是重新拼接gv。 – meridian