【问题标题】:C# Bind TextBox To Specific Row Of DataTableC# 将文本框绑定到数据表的特定行
【发布时间】:2011-04-23 07:52:01
【问题描述】:

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

【问题讨论】:

    标签: c# textbox datatable binding datarow


    【解决方案1】:

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

    【讨论】:

    • 啊,谢谢。我实际上是从列表框的 selectedItem 返回的 DataRowView 获取我的 DataRow。我试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多