如何以编程方式迭代datagrid行?

时间:2008-08-08 22:08:30

标签: winforms

经过多年的网络开发后,我突然回到了WinForms,并且遇到了一些应该简单的问题。我有一个绑定到Windows窗体ArrayList的{​​{1}}个业务对象。我希望用户能够编辑单元格,完成后,按“保存”按钮。那时我想迭代DataGrid中的所有行和列来查找任何更改,并将它们保存到数据库中。但我找不到访问DataGrid行的方法。

我还想在编辑时实时验证单个单元格,但我很确定可以完成。 (也许不是DataGrid作为ArrayList?)但是对于迭代DataSource,我很惊讶它似乎不可能。

为了使用数据网格,我是否必须将业务对象数据填充到数据表中?

4 个答案:

答案 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#,以节省开发成本并提高可维护性和可扩展性。