![](/img/trans.png)
[英]I insert new parent row and child rowstate changes from Added to unchanged
[英]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.