【问题标题】:Control.DataBindings.Add breaks with period in data member nameControl.DataBindings.Add 数据成员名称中带有句点的中断
【发布时间】:2011-03-01 22:46:38
【问题描述】:

我正在尝试使用 Control.DataBindings.Add() 添加到绑定。我遇到的问题是数据成员名称中有一个句点和空格(“Foo.Bar”)。当我尝试添加绑定时,我将字符串“Foo.Bar”作为参数之一传递,我得到一个异常“CAnnot find datamember “Foo.”。

当数据成员名称中有句点时,是否需要使用一种语法来传递数据成员名称?我尝试在名称周围添加“[]”,但没有骰子。

提前致谢。

【问题讨论】:

  • 你是如何让会员名中包含空格的?
  • bindingSource.Datasource 是一个 DataView。 DataView 的 Table 参数中的一列有一个名称,其中包含一个空格。

标签: c# .net vb.net data-binding


【解决方案1】:

经过大量研究以找到解决此问题的方法后,我发现如果您将 DataSource 设为一个集合(甚至是一个项目),那么 .Net 4.0 实现将起作用....

ArrayList list = new ArrayList();

list.Add(myDataSource);

Binding binding = new Binding(PropertyName, list, "Dotted.Path.Name");

Control.DataBindings.Add(binding);

希望对你有帮助....

【讨论】:

    【解决方案2】:

    应该这样做:

    Control.DataBindings.Add(new Binding("Text", ds,"Foo. Bar"));
    

    【讨论】:

    • 使用它仍然会出现异常。
    • 您能否调试并检查 DataView 列并查看您遇到问题的名称是什么
    • 是的,如果我查看 ctype(mBindingSource.DataSource, DataView).Table.Columns(9).ColumnName 它是“Foo.Bar”。
    • 更多信息。我现在使用这一行 Dim Binding As New Binding("Value", BindingSource, "Foo.Bar") 事先创建一个 Binding 对象,然后我尝试使用 Control.DataBindings.Add(Binding) 绑定字段它失败了。有趣的是,如果我查看 Binding.BindingMemberInfo,这是我所看到的: BindingField: "Bar" BindingMember: "Foo.Bar" BindingPath: "Foo" 我需要绑定路径来读取 "Foo.Bar"
    【解决方案3】:

    这应该可以正常工作,因为多年来我一直在使用 .Net 2.0 这样做。只有我不会在小数点后有空格。但是,在某些情况下,.Net 4.0 似乎对此有所不同。我得到了和你一样的参数错误,特别是当绑定控件驻留在用户控件中时(但并不总是......)

    有趣的是,在 Net 3.5(或 2.0)中运行相同的代码时,它的行为符合预期,我可以使用 CheckBox1.DataBindings.Add("Checked",obj,"MainBooking.JoinersAllowed")。但在 Net 4.0 中,它给了我很多悲伤。欢迎任何解决方案/建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 2020-04-22
      • 1970-01-01
      相关资源
      最近更新 更多