2

我正在构建一个简单的 C# 应用程序,它允许用户编辑数据库中表的行。界面很简单,基本上就是一个行列表和几个按钮。选择一行并按下“添加”按钮会弹出一个新表单,其中每列都有文本框。我希望用所选行的值填充这些列。

在阅读了几篇文章后,我发现可能最简单的方法是将 TextBox 的 Text 属性绑定到 DataSource。因此,我将数据库中的值存储在 DataTable 对象中,并计划检索选定的 DataRow 并将其绑定到 TextBox。这是我使用的行:

productNameTextBox.DataBindings.Add(new Binding("Text", productRow, "Name"));

结果是以下异常:

System.Windows.Forms.dll 中出现“System.ArgumentException”类型的第一次机会异常无法绑定到数据源上的属性或列名称。参数名称:dataMember

是的,“名称”列确实存在。

根据绑定文档(http://msdn.microsoft.com/en-us/library/4wkkxwcz(v=VS.80).aspx)和许多示例阅读后,在我看来,必须绑定到包含该行的 DataTable。以下代码对我有用:

productNameTextBox.DataBindings.Add(new Binding("Text", productRow.Table, "Name"));

除了它总是将 TextBox 的值设置为第一行。如何指定要使用的行?

4

1 回答 1

2

使用从 DataView 获得的 DataRowView 而不是行。Iirc 这是通过 ICustomTypeDescriptor 为灵活(自定义)绑定配置的。

于 2010-10-10T04:57:53.067 回答