web-dev-qa-db-ja.com

C#DataTableのデータを変更する方法は?

問題が発生しました。DataTableを使用してdataGridViewにデータを保存します。データは次のように入力されました。

dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("par", typeof(string));
dt.Columns.Add("max", typeof(int));
dt.Columns.Add("now", typeof(int));

dt.Rows.Add(new object[] { id++,i + " " + j++, strarr[0], strarr[1] }); // ... etc etc

dataGridView1.DataSource = dt;

今、私はいくつかの変更を行いたいので、コードを使用します:

dt.Rows[1].ItemArray[3] = "VALUE";

デバッグするとき、ItemArrayは目的の行を表します。そのため、そのオーケーですが、それでも変更はできません。 DataTableを更新する方法???私はグーグルだと何も:(

17
fazzy

SetFieldメソッドを試してください。

table.Rows[i].SetField(column, value);
table.Rows[i].SetField(columnIndex, value);
table.Rows[i].SetField(columnName, value);

これでジョブが完了し、Rows [i] [j]を使用するよりも少し「クリーン」になります。

42

dt.Rows[1].ItemArrayは、アイテム配列のコピーを提供します。あなたがそれを修正するとき、あなたはオリジナルを修正していない。

これを簡単に行うことができます:

dt.Rows[1][3] = "Value";

ItemArrayプロパティは、すべての行の値を変更するときに使用されます。

例:

dt.Rows[1].ItemArray = newItemArray;
16
manji

おそらく事前にプロパティdt.Columns["columnName"].ReadOnly = false;を設定する必要があります。

7
gons