1

我有一个由可编辑文本框组成的 GridView。当用户输入一个值时,该OnTextChanged函数调用我的UpdateColumns()方法,该方法执行各种计算并改变整个 GridView。我将用户输入限制为仅数字,因此当用户在任何单元格中输入字母字符时操作会出错。出现此错误时,我想恢复到用户输入字母字符之前立即存在的数据表。

有没有办法捕获当前 GridView 的数据源并存储在 DataTable 中?

我尝试了以下方法(绑定数据表后):

Dim dt As DataTable = DirectCast(gvBuildingBlocks.DataSource, DataTable)
Session("buildingBlocks") = dt

'If textboxes are all numeric, perform calculations here 

'Else display error here and bind table below
gvBuildingBlocks.DataSource = CType(Session("buildingBlocks"), DataTable)
gvBuildingBlocks.DataBind()

上面的结果是一个空的gridview,因为值为gvBuildingBlocks.DataSource空。我还能做些什么来获取这些值吗?

我想我可以遍历所有行并以某种方式保存它们,如下所示:

For Each row As GridViewRow in gvBuildingBlocks.Rows
    'Save cell value here
Next

但我不知道用什么代码来保存值?

任何帮助深表感谢。

谢谢!

4

1 回答 1

2

我了解您正在对行进行计算,并且如果用户输入无效,您希望回滚到原始值。如果输入无效DataRow.BeginEdit(),您可以通过在编辑之前调用来在行级别完成此操作。DataRow.CancelEdit()这个例子

DataRow.EndEdit()如果编辑对提交更改有效,请不要忘记致电。

于 2013-02-18T19:38:15.847 回答