RowChanged事件在DataAdapter.Fill(DataTable)期间触发并引发错误

时间:2011-03-12 03:35:17

标签: vb.net datatable

在表单代码的顶部,我有以下语句(以及其他一些不相关的语句):

Dim LastDataRow As DataRow
Public Event RowChanged As DataRowChangeEventHandler  

当我的表单加载时,我运行以下代码行:

AddHandler dt.RowChanged, New DataRowChangeEventHandler(AddressOf Row_Changed)

表单加载后,我有一个FetchData按钮,它连接到数据库并将记录带入数据表对象。在此填充操作期间,我的Row_Changed事件触发(对于我认为的每条记录)并尝试运行 DataAdapter.Update(DataTable) (伪代码),最终失败,因为我没有然后创建了命令。我在Row_Changed过程中遇到的错误是:

在传递带有新行的DataRow集合时,更新需要有效的InsertCommand。

我根本没有计划使用InsertCommand,因为我不会允许用户从此表单中插入记录。我计划允许他们删除或修改现有记录,但不插入新记录。

到目前为止,我找到解决此问题的唯一方法是在填充数据表后运行我的AddHandler语句。但是,我正在试图弄清楚如何重写我的代码,以便我可以刷新数据表,而无需关闭表单/应用程序,并且必须再次打开它。我认为这是一个单独讨论的问题。

为什么我收到上面的错误消息?

1 个答案:

答案 0 :(得分:0)

在调用填充操作之前,您可以RemoveHandler,因此不会调用Update。填充操作完成后,您可以再次添加处理程序。

RemoveHandler
da.Fill(dt)
AddHandler