设置DataTable行的RowState为deleted



我在我的项目中有一个UltraGrid,并且我在表单上有一个更新函数来更新数据匹配的数据库中的数据。

网格中的数据被存储为DataTable。如果从UltraGrid中删除了一行现有数据,我希望能够将DataTable中该行的RowState设置为'RowState '。删除, so that in the Update function I can check the RowState ',如果是已删除的行,则删除,否则,更新数据

我该怎么做呢?到目前为止,我有下面的代码,但是返回的行数是1(或者,网格中的当前行数),而不是2(删除一行之前的行数)。

在代码中,我如何以及在哪里将已删除行的RowState设置为RowState.Deleted ?是否有使用UltraGrid的替代方法?

dsProducts.Tables.Add(commDt.Copy) -- commDt is the DataTable linked to the UltraGrid
tr = con.BeginTransaction(
  For Each dr As DataRow In dsProducts.Tables(0).Rows
    If dr.RowState = DataRowState.Deleted Then
     Try

解决了

  • 在类的顶部声明一个DataTable

  • BeforeRowsUpdate方法中,在DataTable中插入新行,即被删除行的值

  • 可选,包括一个确认框,以确保他们希望删除行。如果他们取消删除,则从DataTable中删除该行。

  • 这个DataTable可以用来删除UPDATE查询中的行,而网格DataSource可以处理UPSERTS

网格将调用标记行为已删除(设置RowState),如果您正在使用TableAdapter,那么您可以简单地在表适配器上调用Update,将DataTable传递给TableAdapter,它将在数据库中进行更新。例如:

ultraGrid1.UpdateData()
Me.dbRowsTableAdapter.Update(Me.testDataSet)

如果你必须手动处理更新,你想要得到删除的行,你可以在DataTable上调用Select在DataViewRowState中传递。删除第三个参数

最新更新