2011年1月21日金曜日

【VB.NET】データテーブルのRowStateで変更されていないデータはUnChangedに設定する

DataTable にて、一度編集して、
また元の値に戻した場合RowStateが Modified になってしまいます。
一度編集したとはいえ、やはり全く同じ値ならばUpdateは走らせたくありませんよね!

その場合は、以下の関数をコピペして使ってみてください。

  1. Public Sub RowStateSetUnChanged(ByVal dt As DataTable)  
  2.   
  3.         If IsNothing(dt) Then  
  4.             Return  
  5.         End If  
  6.   
  7.         For RowIdx As Integer = 0 To dt.Rows.Count - 1  
  8.             Dim dr As DataRow = dt.Rows(RowIdx)  
  9.   
  10.             If dr.RowState <> DataRowState.Modified Then  
  11.                 Continue For  
  12.             End If  
  13.   
  14.   
  15.             Dim IsUnChanged As Boolean  
  16.             IsUnChanged = True  
  17.   
  18.   
  19.             For ColIdx As Integer = 0 To dt.Columns.Count - 1  
  20.                 If Not dr.Item(ColIdx, DataRowVersion.Current).Equals(dr.Item(ColIdx, DataRowVersion.Original)) Then  
  21.                     IsUnChanged = False  
  22.                     Exit For  
  23.                 End If  
  24.   
  25.             Next ColIdx  
  26.   
  27.             ' 変更されていなかった場合、UnChangedに設定する  
  28.             If IsUnChanged Then  
  29.                 dr.AcceptChanges()  
  30.             End If  
  31.         Next RowIdx  
  32.     End Sub  

よろしくどうぞー。

0 件のコメント:

コメントを投稿