Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SetAdded和SetModified只能在DataRowState未更改的DataRows上调用_C#_Vb.net_Datatable - Fatal编程技术网

C# SetAdded和SetModified只能在DataRowState未更改的DataRows上调用

C# SetAdded和SetModified只能在DataRowState未更改的DataRows上调用,c#,vb.net,datatable,C#,Vb.net,Datatable,我正在尝试更新要添加的DataTable行的RowState,因为在数据库中使用DbDataAdapter更新方法插入数据需要它。 在我的场景中,我正在对DataTable的几行数据进行一些修改,这将其RowState更改为Modified 下面是VB.Net中用于更改行状态的函数 Protected Sub SetRowAdded(ByVal DataTable As DataTable) For Each row As DataRow In DataTable.Rows

我正在尝试更新要添加的DataTable行的RowState,因为在数据库中使用DbDataAdapter更新方法插入数据需要它。 在我的场景中,我正在对DataTable的几行数据进行一些修改,这将其RowState更改为Modified

下面是VB.Net中用于更改行状态的函数

Protected Sub SetRowAdded(ByVal DataTable As DataTable)
        For Each row As DataRow In DataTable.Rows
            If Not row.RowState = DataRowState.Added Then row.SetAdded()
        Next
End Sub
由于前面提到的场景,我在更改RowState时遇到以下错误

SetAdded和SetModified只能在未更改的数据行上调用 数据行状态


有人知道如何修复它吗?

通过做一些研究,我能够自己找到答案

通过使用DataTable.AcceptChanges()方法接受所有修改,可以将DataTable的行状态更改为未更改。我已经改变了我的代码,如下所示,它现在工作得非常好

Protected Sub SetRowAdded(ByVal DataTable As DataTable)
        'Accept pending changes, as only Unchanged rows can be changed to Added or Modified
        DataTable.AcceptChanges()

        For Each row As DataRow In DataTable.Rows
            If Not row.RowState = DataRowState.Added Then row.SetAdded()
        Next
 End Sub

通过做一些研究,我能够自己找到答案

通过使用DataTable.AcceptChanges()方法接受所有修改,可以将DataTable的行状态更改为未更改。我已经改变了我的代码,如下所示,它现在工作得非常好

Protected Sub SetRowAdded(ByVal DataTable As DataTable)
        'Accept pending changes, as only Unchanged rows can be changed to Added or Modified
        DataTable.AcceptChanges()

        For Each row As DataRow In DataTable.Rows
            If Not row.RowState = DataRowState.Added Then row.SetAdded()
        Next
 End Sub

这些数据最初来自哪里?您是否通过在数据适配器上调用
Fill
来填充
DataTable
?如果是这样,只需将适配器的
AcceptChangesOnFill
设置为
False
,然后从一开始就添加所有
RowState
属性。然后,您可以在不影响
RowState
值的情况下对数据进行任何更改。感谢您的回复。是的,当我使用DataAdapter填充DataTable时,这也可以起作用,但它会影响我的代码库,这可能会影响过多的其他代码。因此,我将使用DataTable.AcceptChanges(),我可以简单地在我的方法中使用它?您是否通过在数据适配器上调用
Fill
来填充
DataTable
?如果是这样,只需将适配器的
AcceptChangesOnFill
设置为
False
,然后从一开始就添加所有
RowState
属性。然后,您可以在不影响
RowState
值的情况下对数据进行任何更改。感谢您的回复。是的,当我使用DataAdapter填充DataTable时,这也可以起作用,但它会影响我的代码库,这可能会影响过多的其他代码。因此,我将使用DataTable.AcceptChanges(),我可以在我的方法中简单地使用它。