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

Я внезапно вернулся к WinForms после многих лет веб-разработки, и у меня возникли проблемы с чем-то простым. У меня есть ArrayListбизнес-объекты, связанные с Windows Forms DataGrid. Я хотел бы, чтобы пользователь мог редактировать ячейки, и когда закончите, нажмите кнопку Сохранить. На этом этапе я хотел бы перебрать все строки и столбцы в, DataGridчтобы найти какие-либо изменения и сохранить их в базе данных. Но я не могу найти способ доступа к DataGridстрокам.

Я также хочу проверять отдельные ячейки в реальном времени, так как они редактируются, но я почти уверен, что это можно сделать. (Может быть, не с « ArrayListкак» DataSource?) Но что касается итерации DataGrid, я весьма удивлен, что это кажется невозможным.

Должен ли я действительно помещать данные своих бизнес-объектов в таблицы данных, чтобы использовать сетку данных?

8.08.2008 22:08:29
4 ОТВЕТА
РЕШЕНИЕ
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]);
}
5
14.03.2012 15:22:16

Есть ли в WinForms 3.0 что-нибудь намного лучше, чем в 1.1?

Я не знаю, что такое 3.0, но вы можете написать код в VS 2008, который работает на платформе .NET 2.0. (Итак, вы можете использовать новейший язык C #, но вы можете использовать только библиотеки 2.0)

Это дает вам Generics ( List<DataRow>вместо этих GodAwful ArrayLists) и массу других вещей, в итоге вы в буквальном смысле будете писать в 3 раза меньше кода.

0
9.08.2008 02:17:38
object cell = myDataGrid[row, col];
1
7.10.2015 09:40:16

Ага, я действительно просто проверял всех еще раз! :) Реальный ответ таков: вам редко нужно повторять сетку данных. Потому что даже при связывании с ArrayList, связывание является 2-х сторонним. Тем не менее, удобно знать, как итерировать сетку напрямую, это может сэкономить несколько строк кода время от времени.

Но NotMyself и Orion дали лучшие ответы: убедить заинтересованные стороны перейти на более высокую версию C #, чтобы сэкономить на затратах на разработку и повысить удобство обслуживания и расширяемость.

-2
12.08.2008 02:37:15