在DataSource上找不到DataMember属性[ObjectName]

ptu*_*utt 5 data-binding business-objects visual-studio-2008

我有一个业务对象,它是子对象的组合。
我在Visual Studio 2008中使用数据绑定来绑定到Windows窗体上的控件。

但是我在窗体的InitializeComponent方法中收到上述错误。

可以说我有一个名为ParentObject的对象,其中包含一个通用列表ChildListObject。ParentObject还具有Child对象,该对象本身具有Child对象。(即ParentObject.ChildObject.ChildObject)

我设置了主要的绑定源:

BindingSource.Datasource = ParentObject
Run Code Online (Sandbox Code Playgroud)

我添加一个网格并设置它的绑定源:

GridBindingSource.Datasource = ParentObject
Run Code Online (Sandbox Code Playgroud)

并将DataMember设置为:

BindingSourceB.DataMember = "ChildListObject"
Run Code Online (Sandbox Code Playgroud)

现在,将网格的数据源设置为GridBindingSource:

Me.MyDataGridView.DataSource = Me.GridBindingSource
Run Code Online (Sandbox Code Playgroud)

还有其他绑定到ParentObject和ParentObject.ChildObject属性的控件。

我已经在一个隔离的项目中对此进行了测试,并且效果很好,所以我很难找出真正的错误是什么?曾经起作用的代码会突然停止工作。

我得到的错误是(如果我在上面的示例中使用对象的名称):

“在数据源上找不到DataMember属性ChildObject”

它在以下方面失败:

Me.MyDataGridView.DataSource = Me.GridBindingSource
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我删除<System.Diagnostics.DebuggerStepThrough()>,然后当它失败时继续,就可以了???但是它在运行时仍然失败。

有没有人有任何想法可以指出我正确的方向?我通过谷歌搜索发现的最接近的信息可能与生成的设计器代码混乱的顺序有关。一直在工作的代码将突然停止工作。


这个问题似乎来了又去。如果在出现错误后我仍然继续,则程序会愉快地继续运行而不会出现问题。可能是VS中的错误。但是在运行时错误仍然存​​在。

是什么导致此问题?如何阻止它发生?

ptu*_*utt 2

我发现的唯一解决方法是执行以下操作:

  1. 从网格中删除所有列
  2. 将所需的列添加回网格(这可以防止在下一步中删除这些列)
  3. 删除网格数据源
  4. 在表单加载事件中设置网格的数据源。