Control.DataBindings.Add breaks with period in data member name
我正在尝试使用control.databindings.add()添加到绑定。我遇到的问题是,数据成员名称中有一个句点和空格("foo")。"酒吧"。当我试图添加绑定时,我传入字符串"foo"。bar"作为参数之一,我得到一个异常"cannot find datamember"foo."。
当数据成员名称中有句点时,是否需要使用语法来传递它?我试着在名字周围加"[]",但没有骰子。
事先谢谢。
- 您是如何设法让成员名中包含空格的?
- bindingSource.datasource是一个数据视图。DataView表参数中的一列的名称中有一个空格。
为了找到这个问题的解决方案,我进行了大量的挖掘之后发现,如果您将数据源设置为一个集合(甚至是一个项),那么.NET 4.0实现将起作用……
1 2 3 4 5 6 7
| ArrayList list = new ArrayList ();
list .Add(myDataSource );
Binding binding = new Binding (PropertyName, list, "Dotted.Path.Name");
Control .DataBindings.Add(binding ); |
希望能有所帮助…
这应该是可行的,因为多年来我一直在使用.NET 2.0。只有小数点后才有空格。然而,在某些情况下,.NET 4.0似乎对此有不同的处理。我得到了与您相同的参数错误,特别是当绑定控件驻留在用户控件中时(但不总是…)
在net 3.5(或2.0)中运行相同的代码时,它的行为与预期的一样,这很有趣,我只需要使用CheckBox1.DataBindings.Add("Checked",obj,"MainBooking.JoinersAllowed")。但是在NET 4.0中,它给了我很多悲伤。欢迎提出任何解决方案/建议。
应该这样做:
1
| Control .DataBindings.Add(new Binding ("Text", ds, "Foo. Bar")); |
- 使用它仍然会得到一个例外。
- 您能调试和检查数据视图列,看看您有问题的列的名称是什么吗?
- 是的,如果我查看ctype(mbindingsource.datasource,dataview).table.columns(9).columnname,它是"foo"。"吧"。
- 更多信息。现在,我先创建一个绑定对象,然后用此行dim binding作为新绑定("value",bindingsource,"foo")。然后我尝试使用control.databindings绑定字段。添加(绑定)失败。有趣的是,如果我看binding.bindingmemberinfo,这里是我看到的:bindingfield:"bar"bindingmember:"foo"。"绑定路径:"foo"我需要绑定路径来读取"foo。酒吧