Я внезапно вернулся к WinForms, после многих лет веб-разработки, и испытываю проблемы с тем, что должно быть простым. У меня есть ArrayList
бизнес-объектов, привязанный к Windows Forms DataGrid
. Я хотел бы, чтобы пользователь мог редактировать ячейки, а после завершения нажимал кнопку Save. В этот момент я хотел бы просмотреть все строки и столбцы в DataGrid
, чтобы найти любые изменения и сохранить их в базе данных. Но я не могу найти способ доступа к строкам DataGrid
.
Я также хочу проверять отдельные ячейки в реальном времени, по мере их редактирования, но я уверен, что это можно сделать. (Может быть, не с ArrayList
в качестве DataSource
?) Но что касается итерации DataGrid
, я очень удивлен, что это не представляется возможным.
Должен ли я действительно запихивать данные моих бизнес-объектов в таблицы данных, чтобы использовать 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).
Это дает вам Generics (List<DataRow>
вместо этих ужасных ArrayLists) и тонну других вещей, и в итоге вы напишете буквально в 3 раза меньше кода.
Ага, я действительно просто проверял всех еще раз!:) Реальный ответ, Вы редко должны повторять datagrid. Поскольку, связывая с ArrayList, закрепление - 2 пути. Однако, удобно знать, как к itereate сетка непосредственно, это может спасти несколько линий кодекса время от времени.
Но NotMyself и Orion дали лучшие ответы: Убедите заинтересованные стороны двигаться до более высокой версии C#, сокращать затраты развития и ремонтопригодность увеличения и расширяемость.