Как программно перебирать строки сетки данных?

StackOverflow https://stackoverflow.com/questions/6430

  •  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#, чтобы сэкономить затраты на разработку и повысить удобство сопровождения и расширяемости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top