我有一个由可编辑文本框组成的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
但我不知道用什么代码来保存值?
非常感谢任何帮助。
谢谢!
答案 0 :(得分:2)
我知道您正在对行进行计算,并且如果用户输入无效,您希望回滚到原始值。您可以在行级别通过在编辑前调用DataRow.BeginEdit()
来完成此操作,如果输入无效,则可以DataRow.CancelEdit()
。见this example
如果编辑有效提交更改,请不要忘记调用DataRow.EndEdit()
。