即使在AcceptChanges之后,程序也无法提交或退出单元格值更改

时间:2016-10-12 15:56:28

标签: vb.net winforms datagridview datatable

在我的应用程序中,我有一个可以包含许多数据表的数据集。因此,我没有为每个表创建单独的datagridview(每个表位于选项卡控件的自己的选项卡中),而是创建一个datagridview,其下方有一些导航按钮。用户可以使用导航来更改他们正在查看的表。因此,在这些按钮的事件中,我取消绑定datagridview,然后将其重新绑定到适当的表,如下所示:

    thisGrid.DataSource = Nothing
    Dim tblName As String = thisTab.Text & ", " & thisCbo.SelectedItem.ToString
    Dim curDataTable As DataTable = repData.BinnedTables.Tables(tblName)
    thisGrid.DataSource = curDataTable
    thisGrid.Refresh()

这很好用,但我的问题是我需要允许用户手动将自己的值输入到datagridview中。他们可以这样做,但是如果他们这样做,然后他们导航到另一个表,然后导航回他们手动更改的值的表,我得到错误

  

操作未成功,因为程序无法提交或退出   细胞价值变化

因此,如果导航到另一个表,我首先在修改后的表上调用AcceptChanges,如下所示:

    Dim thisTable As DataTable = CType(thisGrid.DataSource, DataTable)
    For r = 0 To thisTable.Rows.Count - 1
        If thisTable.Rows(r).RowState = DataRowState.Modified Then
            thisTable.AcceptChanges()
            Exit For
        End If
    Next

这确实有效,因为当一行被修改时调用了AcceptChanges() ...但是当我尝试将网格的数据源设置为该表时,我仍然得到上述错误。

为什么我仍然会收到此错误,如何绕过它?

谢谢!

0 个答案:

没有答案