2012-03-22 15 views
2

非常に単純なC#DataTableの問題を抱えています。私は何かが欠けているに違いない。C#でDataRowを更新する際に問題が発生しました

私はDataTableのセルの値ができない更新だ理由を、以下に示すように、誰かが私に説明できることを期待していた:

コード:

DataTable t = new DataTable(); 
    t.Columns.Add("MyCol"); 
    t.Rows.Add("old value"); 
    t.Rows[0].ItemArray[0] = "new value"; 
    t.AcceptChanges(); 
    dataGridView1.DataSource = t;   //did not work. still reads "old value" 

任意の助けをいただければ幸いです!ありがとう!

答えて

5

は単に変更:

t.Rows[0].ItemArray[0] = "new value"; 

t.Rows[0][0] = "new value"; 

にそれだそれ!

EDIT(追加されました、について説明):あなたはすべて変更するItemArrayを使用することができますしかし

変更要素をItemArrayするが追跡されませんので、変更がDataTableの値に反映されていません(元の質問のコード)

t.Rows[0].ItemArray = new object[] {"new value"}; 

この場合、変更が追跡され、期待される結果が得られます。あなたに答えるために

+0

dude !!!!それは完全に動作します!本当にありがとう! Rows [] []が動作しますが、Rows []。ItemArray []は動作しません。 – Chromex

+0

編集された答えを見てください。 – JotaBe

0

あなたは次のことを試しましたか?


... 
dataGridView1.DataSource = null; // set it to null before it set to a new one. 
dataGridView1.DataSource = t;

+0

回答をいただきありがとうございました.JotaBeさんの回答は、謎の解決策に終わりました。 – Chromex

1

あなたは、MSDNによると、この

t.Rows[0].ItemArray = new object[] { "new value" }; 

よう

を行う必要がありますが、 を通じてこの行の値を設定または取得するには、このプロパティを使用することができます

を疑問視アレイ。このプロパティを使用して値を設定する場合、配列の列のコレクションと同じサイズと順序が である必要があります。 ItemArrayにnullを渡すと、値が指定されなかったことを示します。

関連する問題