我正在构建一个简单的C#应用程序,允许用户编辑数据库中表的行。界面非常简单,它基本上是一个行列表和几个按钮。选择一行并按“添加”按钮会弹出一个新表单,其中包含每列的文本框。我希望使用所选行的值填充这些列。
在阅读了几篇文章之后,我发现可能这样做的简单方法是将TextBox的Text属性绑定到DataSource。因此,我将数据库中的值存储在DataTable对象中,并计划检索所选的DataRow并将其绑定到TextBox。这是我使用的行:
productNameTextBox.DataBindings.Add(new Binding("Text", productRow, "Name"));
结果是以下例外:
类型的第一次机会异常 发生'System.ArgumentException' System.Windows.Forms.dll无法绑定 到属性或列名称 数据源。参数名称:dataMember
是的,“名称”列确实存在。
根据绑定文档(http://msdn.microsoft.com/en-us/library/4wkkxwcz(v=VS.80).aspx)和许多例子阅读后,在我看来,绑定到包含该行的DataTable。以下代码对我有用:
productNameTextBox.DataBindings.Add(new Binding("Text", productRow.Table, "Name"));
除了它总是将TextBox的值设置为第一行。如何指定要使用的行?
答案 0 :(得分:1)
使用您从DataView获取的DataRowView,而不是行。 Iirc通过ICustomTypeDescriptor配置灵活(自定义)绑定。