2011年1月21日金曜日

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

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

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

Public Sub RowStateSetUnChanged(ByVal dt As DataTable)

        If IsNothing(dt) Then
            Return
        End If

        For RowIdx As Integer = 0 To dt.Rows.Count - 1
            Dim dr As DataRow = dt.Rows(RowIdx)

            If dr.RowState <> DataRowState.Modified Then
                Continue For
            End If


            Dim IsUnChanged As Boolean
            IsUnChanged = True


            For ColIdx As Integer = 0 To dt.Columns.Count - 1
                If Not dr.Item(ColIdx, DataRowVersion.Current).Equals(dr.Item(ColIdx, DataRowVersion.Original)) Then
                    IsUnChanged = False
                    Exit For
                End If

            Next ColIdx

            ' 変更されていなかった場合、UnChangedに設定する
            If IsUnChanged Then
                dr.AcceptChanges()
            End If
        Next RowIdx
    End Sub

よろしくどうぞー。

0 件のコメント:

コメントを投稿