4

经过多年的 Web 开发,我突然回到了 WinForms,并且在一些应该很简单的事情上遇到了麻烦。我有一个ArrayList绑定到 Windows Forms 的业务对象DataGrid。我希望用户能够编辑单元格,完成后,按保存按钮。那时我想迭代 中的所有行和列 DataGrid以查找任何更改,并将它们保存到数据库中。但我找不到访问DataGrid行的方法。

我还想实时验证单个单元格,因为它们已被编辑,但我很确定可以做到。(也许不是用 an ArrayListas the DataSource?)但至于迭代DataGrid,我很惊讶它似乎不可能。

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

4

4 回答 4

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]);
}
于 2008-08-08T22:20:28.973 回答
1
object cell = myDataGrid[row, col];
于 2008-08-11T02:59:12.670 回答
0

WinForms 3.0 有什么比 1.1 好很多的吗?

我不了解 3.0,但您可以在 .NET 2.0 框架上运行的 VS 2008 中编写代码。(因此,您可以使用最新的 C# 语言,但只能使用 2.0 库)

这让你得到了泛型(List<DataRow>而不是那些 GodAwful ArrayLists)和大量其他东西,你最终会少写 3 倍的代码。

于 2008-08-09T02:17:38.293 回答
-2

啊哈,我真的只是再次测试每个人!:) 真正的答案是,您很少需要迭代数据网格。因为即使绑定到 ArrayList,绑定也是 2 路。尽管如此,知道如何直接迭代网格还是很方便的,它可以不时节省几行代码。

但 NotMyself 和 Orion 给出了更好的答案:说服利益相关者升级到更高版本的 C#,以节省开发成本并提高可维护性和可扩展性。

于 2008-08-12T02:37:15.893 回答