C#.NETのサンプルコードを掲載しています。
      
DataTableが変更されてるかチェックする
データベースからDataTableへデータを格納後、プログラムで変更されたかどうか
判定するサンプルプログラムです。
DataRowのRowStateプロパティがModified のとき変更ありと判定すればよいと思って
いたのですが、同じ値を代入するとModifiedになるため思うような結果となりません。

サンプルコード
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace dst
{
    public class dst020
    {
        /// <summary>
        /// 指定したDataTableに変更があるかどうか判定します。
        /// </summary>
        /// <param name="dt">データテーブル</param>
        /// <returns> true:変更あり false:変更なし</returns>
        public static bool CheckChangedDataTable(DataTable dt)
        {
            foreach (DataRow row in dt.Rows)
            {
                switch (row.RowState)
                {
                    case DataRowState.Added:
                    case DataRowState.Deleted:
                        return true;
                    case DataRowState.Modified:
                        foreach (DataColumn col in dt.Columns)
                        {
                            if (!row[col, DataRowVersion.Original].Equals(row[col, DataRowVersion.Current]))
                            {
                                return true;
                            }
                        }
                        break;
                    case DataRowState.Unchanged:
                        break;
                    case DataRowState.Detached:
                    default:
                        throw new System.Exception("想定外の値が入ってます。");
                }
            }
            return false;
        }
    }
}


      

DataSet






Copyright (C) 2011 - 2017 猫の気ままなC#日記