2017-02-03 16 views
2

Я ищу несколько советов по наиболее эффективному способу изменения значения ячейки каждой строки в DataGridView. Я думаю, что могут быть разные способы достижения этого, но я не хочу начинать кодировать его без каких-либо советов и заканчивать тем, что идет по неверному маршруту.C# - Самый эффективный способ изменения значения ячейки в каждой строке в DataGridView

значение всегда будет находиться в том же колонке, это было бы возможно Переберите каждую строку в DGV с помощью цикла Еогеаспа, читать данные в строке на правильной колонке и просто использовать что-то вроде row[columnIndex] = "x value"; Или Я лучше беру все данные DGV и помещаю его в Datatable, обновляя данные, а затем повторно применяя его к DataGridView.

Благодаря

+0

Вы не указать, как изначально заполняется «DataGridView»? Если в настоящее время у него есть «DataSource», вы бы хотели его использовать. Если сетка не привязана к данным, то решение @Ikram Turgunbaev - это способ пойти, когда у вас есть «DataTable». Перебирайте строки и создавайте «DataTable», если это необходимо. – JohnG

+0

_I не хочу начинать кодирование без каких-либо советов и заканчивать тем, что сбивает неправильный маршрут_ - неправильный подход. Только вы знаете «фактический» контекст своего приложения - начните с чего-то - затем прочитайте советы. Не делая ничего, что вы не понимаете, советует – Fabio

+0

Обратите внимание, что вы можете обращаться к ячейкам 'dgv1 (colIndex, rowIndex)' Я думаю, вы можете искать «элегантный», а не «эффективный» - если у вас не очень большой объем данных. – rheitzman

ответ

4

В моем случае это было бы с помощью bindingsource

используя bindingsource каждое изменение на source будет влиять на control, и каждое изменение на control будет влиять на source

DataTable dt = GetTable(); 
BindingSource bs = new BindingSource(); 
bs.DataSource = dt; 
dataGridView1.DataSource = bs; 

foreach(DataRow row in dt.Rows) 
{ 
    row.BeginEdit(); 
    row.["SomeColumn"] = somevalue; 
    row.EndEdit(); 
} 
+0

И это более эффективно, чем 'foreach (строка DataGridViewRow в DataGridView1.Rows) ..'? – Pikoh

+0

В своем случае он сказал: «Или мне лучше взять все данные DGV и поместить его в Datatable, обновить данные и затем повторно применить их к DataGridView». Поэтому я думаю, что использование bindingsource более эффективно. –

+0

Зачем использовать источник привязки? Не использовал бы то, что datatable (или производный dataview) работает одинаково для OP? Источник привязок, безусловно, более мощный https://msdn.microsoft.com/en-us/library/xxxf124e(v=vs.110).aspx – rheitzman

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

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