在表单代码的顶部,我有以下语句(以及其他一些不相关的语句):
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语句。但是,我正在试图弄清楚如何重写我的代码,以便我可以刷新数据表,而无需关闭表单/应用程序,并且必须再次打开它。我认为这是一个单独讨论的问题。
为什么我收到上面的错误消息?
答案 0 :(得分:0)
在调用填充操作之前,您可以RemoveHandler
,因此不会调用Update。填充操作完成后,您可以再次添加处理程序。
RemoveHandler
da.Fill(dt)
AddHandler