0

変更を保存しないテーブル編集があります。RowState が変更されていないことが問題のようです。foreach ループはデバッグ用です。

    private void btnSave_Click(object sender, EventArgs e)
    {

        this.Validate();
        bs.EndEdit();
        dsEdit.Tables["broker"].GetChanges();

        DataTable dtOut = dsEdit.Tables["broker"];
        foreach (DataRow rOut in dtOut.Rows)
        {
            Console.WriteLine(rOut.RowState.ToString());
            Console.WriteLine(rOut["contactfax"]);
            rOut["contactfax"] = "change";
            Console.WriteLine(rOut.RowState.ToString());
            Console.WriteLine(rOut["contactfax"]);
        }


        int n = sdaBkr.Update(dsEdit.Tables["broker"]);
        MessageBox.Show(n.ToString() + " record(s) saved.");

    }

コンソール出力は次のとおりです。

Unchanged
fax number here
Unchanged
change

何が原因でしょうか? データベースに異常なプロパティが設定されていません。

4

1 に答える 1

0

ここにある回答: BindingSource の EndEdit は DataTable を更新しますが、rowstate は変更されません

各行で EndEdit を呼び出す

rOut.EndEdit();

問題を修正しますが、理解できません。また、どのドキュメントにも表示されません。

于 2013-04-05T17:36:42.937 に答える