【问题标题】:Set RowState of a DataTable row to deleted将 DataTable 行的 RowState 设置为已删除
【发布时间】:2017-02-16 17:00:05
【问题描述】:

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

网格中的数据存储为DataTable。如果从UltraGrid 中删除了一行现有数据,我希望能够将DataTable 中该行的RowState 设置为'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

【问题讨论】:

  • 您不需要执行任何操作,只需删除行 (DataRow.Delete()) 并设置行状态。如果您使用 DataAdapter,it 将根据行状态对每一行采取适当的操作:Dim rows = myDA.Update(dsProducts.Tables(0))
  • @Plutonix 我没有以编程方式设置要删除的行,这是由UltraGrid 自动处理的。通过使用DataAdapter,您是指实际的更新/删除查询本身吗?而不是OleDbCommand?
  • 这个Searching values via a datagridview 展示了如何配置和使用DataAdapter(我猜你的情况是OleDBDataAdapter)。他们将“坚持”更新、删除等命令并通过更新方法发出它们。
  • 当您从DataTable 中删除一行时,您不能检查RowState 属性,因为它不再存在。如果需要,您可以添加另一列 Boolean 类型,它可以确定在需要更新时是否应删除记录...或者另一种选择是您必须保留对 DataRow 的引用和删除后,您可以检查此对象的 RowState...
  • @Zaggler 在行上调用 Delete 和 Remove 之间存在区别,在这种情况下,行正在被删除而不是被删除,请参阅此了解更多详细信息:msdn.microsoft.com/en-us/library/03c7a3zb(v=vs.110).aspx

标签: vb.net datatable dataset infragistics rowstate


【解决方案1】:

解决了。

  • 在类的顶部声明DataTable

  • BeforeRowsUpdate 方法中,将新行插入DataTable,这是被删除行的值。

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2021-08-18
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多