Как программно перебирать строки сетки данных?
-
08-06-2019 - |
Вопрос
Я внезапно вернулся к WinForms после многих лет веб-разработки, и у меня возникли проблемы с чем-то, что должно быть простым.у меня есть ArrayList
бизнес-объектов, привязанных к Windows Forms DataGrid
.Я бы хотел, чтобы пользователь мог редактировать ячейки и по завершении нажать кнопку «Сохранить».В этот момент я хотел бы перебрать все строки и столбцы в DataGrid
чтобы найти любые изменения и сохранить их в базе данных.Но я не могу найти способ получить доступ к DataGrid
ряды.
Я также хочу проверять отдельные ячейки в режиме реального времени по мере их редактирования, но я почти уверен, что это можно сделать.(Может быть, не с ArrayList
как DataSource
?) Но что касается итерации DataGrid
, Я очень удивлен, что это кажется невозможным.
Должен ли я действительно помещать данные своих бизнес-объектов в таблицы данных, чтобы использовать сетку данных?
Решение
foreach(var row in DataGrid1.Rows)
{
DoStuff(row);
}
//Or ---------------------------------------------
foreach(DataGridRow row in DataGrid1.Rows)
{
DoStuff(row);
}
//Or ---------------------------------------------
for(int i = 0; i< DataGrid1.Rows.Count - 1; i++)
{
DoStuff(DataGrid1.Rows[i]);
}
Другие советы
object cell = myDataGrid[row, col];
Есть ли что-нибудь в WinForms 3.0 намного лучше, чем в версии 1.1?
Я не знаю насчет 3.0, но вы можете писать код в VS 2008, который работает на платформе .NET 2.0.(Итак, вы можете использовать новейший язык C#, но можете использовать только библиотеки 2.0)
Это дает вам дженерики (List<DataRow>
вместо этих GodAwful ArrayLists) и множества других вещей вы буквально в конечном итоге будете писать в 3 раза меньше кода.
Ага, я действительно просто еще раз всех проверял!:) Настоящий ответ: вам редко нужно перебирать сетку данных.Потому что даже при привязке к ArrayList привязка является двухсторонней.Тем не менее, полезно знать, как напрямую перебирать сетку, это позволяет время от времени сохранять несколько строк кода.
Но NotMyself и Orion дали лучшие ответы:Убедите заинтересованные стороны перейти на более новую версию C#, чтобы сэкономить затраты на разработку и повысить удобство сопровождения и расширяемости.