错误消息:无法绑定到数据源上的属性或列。参数名datamember c#

错误消息:无法绑定到数据源上的属性或列。参数名datamember c#,c#,winforms,data-binding,label,bindingsource,C#,Winforms,Data Binding,Label,Bindingsource,我有一个C#Windows窗体应用程序,我使用VS 2013进行编辑。数据已从SQL数据库中检索并存储在数据集(ds)中名为Properties的数据表中。使用以下命令填充标签的文本字段时没有错误: label1.DataBindings.Add(new Binding("Text", ds.Tables["Properties"], "myColumn", true)); 但是,如果使用BindingSource而不是DataSet DataTable作为数据源,则会收到错误消息: 设计器文

我有一个C#Windows窗体应用程序,我使用VS 2013进行编辑。数据已从SQL数据库中检索并存储在数据集(
ds
)中名为
Properties
的数据表中。使用以下命令填充标签的文本字段时没有错误:

label1.DataBindings.Add(new Binding("Text", ds.Tables["Properties"], "myColumn", true));
但是,如果使用BindingSource而不是DataSet DataTable作为数据源,则会收到错误消息:

设计器文件中的自动生成代码(BindingSource已从工具箱添加到表单):

在代码文件中:

bsProperties.DataSource = ds.Tables["Properties"];
label1.DataBindings.Add(new Binding("Text", bsProperties, "myColumn", true));
为什么在尝试访问数据集中的同一个DataTable时会收到此错误消息?如果使用BindingSource作为数据源而不是DataSet DataTable作为数据源,那么对
DataBindings.Add()
的调用是否不同


我的最终目标是使用BindingSource填充组合框,然后用与组合框中所选项目相关的数据填充标签(与组合框中的数据存储在数据集中的同一行)。为此,我想我需要使用DataRowView,但这是另一天的问题。

我无法重现您的错误。您的数据集或数据表一定有所不同。谢谢@LarsTech。我忘了提到应用程序是三层架构。数据集架构是在BLL中创建的。数据集中的数据表是使用与代码中使用的存储过程调用相同的存储过程调用创建的。然后,表示层中的数据集为BLL.DataSet类型。我调用了BLL,它调用了DAL,DAL使用存储过程访问数据库。你认为这有关系吗?我不认为我可以通过一种方式而不是另一种方式获取数据。这是很多细节,所以也许这是一个在你自己的博物馆迷路的案例。但请尝试测试您的绑定源:
((DataTable)bsProperties.DataSource)。行[0][“myColumn”]。ToString()
,看看您得到了什么。我测试了绑定源。我得到了我期望的数据。问题是当我尝试查看下一条记录时。
问题是当我尝试查看下一条记录时。
您的问题不包含任何关于下一条记录的信息。。它只是说一个绑定方法有效,另一个无效。我无法重现您的错误。您的数据集或数据表一定有所不同。谢谢@LarsTech。我忘了提到应用程序是三层架构。数据集架构是在BLL中创建的。数据集中的数据表是使用与代码中使用的存储过程调用相同的存储过程调用创建的。然后,表示层中的数据集为BLL.DataSet类型。我调用了BLL,它调用了DAL,DAL使用存储过程访问数据库。你认为这有关系吗?我不认为我可以通过一种方式而不是另一种方式获取数据。这是很多细节,所以也许这是一个在你自己的博物馆迷路的案例。但请尝试测试您的绑定源:
((DataTable)bsProperties.DataSource)。行[0][“myColumn”]。ToString()
,看看您得到了什么。我测试了绑定源。我得到了我期望的数据。问题是当我尝试查看下一条记录时。
问题是当我尝试查看下一条记录时。
您的问题不包含任何关于下一条记录的信息。。它只是说一种绑定方法有效,另一种则无效。
bsProperties.DataSource = ds.Tables["Properties"];
label1.DataBindings.Add(new Binding("Text", bsProperties, "myColumn", true));