簡體   English   中英

將數據表行的行狀態設置為已刪除

[英]Set RowState of a DataTable row to deleted

我的項目中有一個UltraGrid ,並且表單上有一個更新功能,用於更新數據匹配的數據庫中的數據。

網格中的數據被存儲為DataTable 如果從UltraGrid刪除了一行現有數據,我希望能夠將DataTable中該行的RowState設置為'RowState.Deleted , 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

網格將調用將行標記為已刪除(設置RowState),如果您使用的是TableAdapter,則可以簡單地在表適配器上調用Update,將DataTable傳遞給TableAdapter,它將在數據庫中進行更新。 例如:

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

如果必須手動處理更新,並且要獲取已刪除的行,則可以在DataTable上調用Select ,並將第三個參數傳遞給DataViewRowState .Deleted。

解決了。

  • 在類的頂部聲明一個DataTable

  • BeforeRowsUpdate方法上,將新行插入到DataTable ,這是要刪除的行的值。

  • (可選)包括一個確認框,以確保他們希望刪除該行。 如果他們取消刪除,請從DataTable刪除該行。

  • 然后,可以使用此DataTable刪除UPDATE查詢中的行,而網格DataSource可以處理UPSERTS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM