■■■

2016年4月6日水曜日

DataTableで同じ値を設定した場合に編集状態にならないように回避する方法

DataTableで同じ値を設定した場合に編集状態にならないように回避する方法

VB.NET

''' <summary>
''' 値が変わっていたらTrue、同じならFalse
''' </summary>
Private Function IsChanged(row As DataRow) As Boolean
For Each column As DataColumn In row.Table.Columns
If Not row(column, DataRowVersion.Current).Equals(row(column, DataRowVersion.Original)) Then
Return True
End If
Next

Return False
End Function

'呼び出し方法
'■同じ値ならコミットしておく
If Not IsChanged(row) Then
row.AcceptChanges()
End If


C#

/// <summary>
/// 値が変わっていたらTrue、同じならFalse
/// </summary>
private bool IsChanged(DataRow row)
{
    foreach (DataColumn column in row.Table.Columns)
    {
        if (!row[column, DataRowVersion.Current].Equals(
            row[column, DataRowVersion.Original]))
            return true;
    }

    return false;
}

//呼び出し方法
//■同じ値ならコミットしておく
    if (!IsChanged(row))
        row.AcceptChanges();
■■■