DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■34130 / inTopicNo.1)  RejectChangesについて
  
□投稿者/ samba 一般人(1回)-(2019/02/12(Tue) 18:00:37)
  • アイコン環境/言語:[4.5,win 10 visual studio 2017] 
    分類:[.NET] 

    下記のようなDataTableがあります。
    各行に対して、追加、削除、値変更などをしています。

    dataset.Tables["Table1"].Rows[2].Delete();を実行してから、
    この行のみDeleteをキャンセルしたくない場合があります。

    RejectChanges()を行うと、変更した部分が全部取り消しになってしまいます。
    特定の行をDelete()してしまったあとに、その行だけ復活させたいと
    いった場合はどのようにおこなえばよいでしょうか?

    DataSet dataset = new DataSet();
    DataTable dt = new DataTable("Table1");

    // 列を定義します。
    dt.Columns.Add("商品番号");
    dt.Columns.Add("商品名");
    dt.Columns.Add("価格");

    DataRow row = null;

    // 商品を追加します。
    row = dt.NewRow();
    row["商品番号"] = "S0001";
    row["商品名"] = "あんぱん";
    row["価格"] = 100;
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["商品番号"] = "S0002";
    row["商品名"] = "メロンパン";
    row["価格"] = 105;
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["商品番号"] = "S0003";
    row["商品名"] = "カレーパン";
    row["価格"] = 110;
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["商品番号"] = "S0004";
    row["商品名"] = "いちごジャムパン";
    row["価格"] = 115;
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["商品番号"] = "S0005";
    row["商品名"] = "チョココロネ";
    row["価格"] = 120;
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["商品番号"] = "S0006";
    row["商品名"] = "クロワッサン";
    row["価格"] = 125;
    dt.Rows.Add(row);

    // DataSetにdtを追加します。
    dataset.Tables.Add(dt);
    dataset.Tables["Table1"].AcceptChanges();

    // メロンパンの価格を変更します。
    dataset.Tables["Table1"].Rows[1]["価格"] = 110;

    // クリームパンを追加します。
    DataRow datarow = dataset.Tables["Table1"].NewRow();

    datarow["商品番号"] = "S0007";
    datarow["商品名"] = "クリームパン";
    datarow["価格"] = "130";

    dataset.Tables["Table1"].Rows.Add(datarow);

    // カレーパンを削除します。
    dataset.Tables["Table1"].Rows[2].Delete();


    // 元に戻します。
    dataset.Tables["Table1"].RejectChanges();
マルチポストを報告
違反を報告
引用返信 削除キー/
■34131 / inTopicNo.2)  Re[1]: RejectChangesについて
□投稿者/ 魔界の仮面弁士 大御所(1195回)-(2019/02/12(Tue) 18:36:00)
  • アイコンNo34130に返信(sambaさんの記事)
    > dataset.Tables["Table1"].Rows[2].Delete();を実行してから、
    > この行のみDeleteをキャンセルしたくない場合があります。
    > RejectChanges()を行うと、変更した部分が全部取り消しになってしまいます。

    DataTable.RejectChanges ではなく
    DataRow.RejectChanges を呼び出しましょう。
違反を報告
引用返信 削除キー/
■34132 / inTopicNo.3)  Re[2]: RejectChangesについて
□投稿者/ samba 一般人(2回)-(2019/02/13(Wed) 11:06:46)
  • アイコンありがとうございます!
解決み!
違反を報告
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Mode/  Pass/


- Child Tree -