经过多年的网络开发后,我突然回到了WinForms,并且遇到了一些应该简单的问题。我有一个绑定到Windows窗体ArrayList
的{{1}}个业务对象。我希望用户能够编辑单元格,完成后,按“保存”按钮。那时我想迭代DataGrid
中的所有行和列来查找任何更改,并将它们保存到数据库中。但我找不到访问DataGrid
行的方法。
我还想在编辑时实时验证单个单元格,但我很确定可以完成。 (也许不是DataGrid
作为ArrayList
?)但是对于迭代DataSource
,我很惊讶它似乎不可能。
为了使用数据网格,我是否必须将业务对象数据填充到数据表中?
答案 0 :(得分:5)
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]);
}
答案 1 :(得分:1)
object cell = myDataGrid[row, col];
答案 2 :(得分:0)
WinForms 3.0是否有比1.1更好的东西?
我不知道3.0,但你可以在VS 2008中编写代码,它运行在.NET 2.0框架上。 (因此,您可以使用最新的C#语言,但只能使用2.0库)
这可以让你获得泛型(List<DataRow>
而不是那些GodAwful ArrayLists)和其他很多东西,你最终会减少3倍的代码。
答案 3 :(得分:-2)
啊哈,我真的只是再次测试每个人! :)真正的答案是,您很少需要迭代数据网格。因为即使绑定到ArrayList,绑定也是2路。不过,知道如何直接迭代网格很方便,它可以偶尔保存几行代码。
但NotMyself和Orion提供了更好的答案:说服利益相关者转向更高版本的C#,以节省开发成本并提高可维护性和可扩展性。