2009-11-03 1 views
16

У меня возникли проблемы, я использую DataTable для хранения своих данных в dataGridView. Данные занесены так:C# как изменить данные в DataTable?

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 ??? Я ничего и прибегая к помощи :(

ответ

14

dt.Rows[1].ItemArray дает копию элементов массива При изменении его, вы не не изменяя оригинал

Вы можете просто сделать это:..

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

ItemArray свойство используется, когда вы хотите изменить все значения строк.

напр .:

dt.Rows[1].ItemArray = newItemArray; 
38

Попробуйте метод SetField:

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

Это должно получить работу и немного "чище", чем с помощью рядов [я] [J].

+0

+1 - Я согласен, ваше предложение намного чище, чем примеры с использованием массива. Ваш пример позволяет четко идентифицировать поле по имени, а не подразумевать поле по положению в массиве. Я думаю, что использование массива дешево и лениво. Это, безусловно, повышает риск ошибок при дальнейшем обслуживании. Кроме того, если объект таблицы данных получен из структуры базы данных, и если эта структура базы данных, где нужно изменить, например, вставка столбца в середине определения таблицы, использование метода массива потенциально может привести к ошибке во время выполнения или хуже - необнаруженные поврежденные данные. – barrypicker

7

Предпочитаете, пожалуйста, заранее установить свойство dt.Columns["columnName"].ReadOnly = false;.

+2

Должно быть dt.columns [n] .ReadOnly –

 Смежные вопросы

  • Нет связанных вопросов^_^