web-dev-qa-db-fra.com

C # comment changer des données dans DataTable?

J'ai un problème, j'utilise DataTable pour stocker mes données dans dataGridView. Les données ont été entrées comme ceci:

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;

maintenant je veux faire quelques changements, j'utilise du code:

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

Lorsque je débogue, ItemArray représente la ligne que je veux, donc ça va, mais je ne peux toujours pas faire de changements, qu'est-ce qui ne va pas? Comment mettre à jour DataTable ??? Je google et rien :(

17
fazzy

Essayez la méthode SetField:

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

Cela devrait faire le travail et est un peu plus "propre" que d'utiliser les lignes [i] [j].

42

dt.Rows[1].ItemArray vous donne une copie des tableaux d'éléments. Lorsque vous le modifiez, vous ne modifiez pas l'original.

Vous pouvez simplement faire ceci:

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

La propriété ItemArray est utilisée lorsque vous souhaitez modifier toutes les valeurs de ligne.

ex.:

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

Vous devriez probablement définir la propriété dt.Columns["columnName"].ReadOnly = false; avant.

7
gons