C#将TextBox绑定到DataTable的特定行

时间:2010-10-09 22:40:51

标签: c# textbox datatable binding datarow

我正在构建一个简单的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的值设置为第一行。如何指定要使用的行?

1 个答案:

答案 0 :(得分:1)

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