0

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

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

我该怎么做呢?到目前为止,我有下面的代码,但是返回的行数是 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
4

2 回答 2

0

解决了。

  • DataTable在类的顶部声明 a

  • 在该BeforeRowsUpdate方法上,将新行插入 中DataTable,这是要删除的行的值。

  • 或者,包括一个确认框以确保他们希望删除该行。如果他们取消删除,请从DataTable.

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

于 2016-10-12T14:29:51.547 回答
0

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

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

如果您必须手动处理更新并且想要获取已删除的行,则可以在 DataTable 上调用Select并传入DataViewRowState .Deleted 作为第三个参数。

于 2016-10-07T20:56:12.867 回答