2011-04-08 34 views
2

我想添加一个新的dataBinding到报表中的控件。DataBindings.Add添加一个IEnumerable <string>

通常我添加IEnumerable<someObject>到我的绑定:

this.MyControl.DataBindings.Add("Text", this.CustomerDataSource, "Name"); 

但现在我想用一个IEnumerable<string>

this.MyControl.DataBindings.Add("Text", this.MyStringDatasource, "?"); 

会是什么数据成员在这种情况下? (我正在使用devExpress的XtraReport)

+0

请问您的数据源使用相同的对象类型?这是所有引擎盖下的IEnumerable,所以你应该能够使用相同的属性名称。 – Tejs 2011-04-08 15:41:41

+0

你确定没有这个双参数过载吗? – 2011-04-08 15:41:41

+0

没有双参数超载。 – 2011-04-08 15:42:53

回答

1

如果这样做根本行不通,我不会感到惊讶;但是,你可以用一个简单的投影,如:

var bindThis = sequence.Select(
    s => new { Value = s }); 

该议员的名字是"Value"

+0

感谢您的帮助,100%正确的答案是:DataSource = StringIEnumerable.Select(s => new {Value = s})。请编辑你的帖子来获得答案。 – 2011-04-08 15:54:42

+0

@Jean如果tolist是那里的重要部分,那么最好用列表的形式来表达原始问题:) – 2011-04-08 15:57:19

1

如果没有双参数重载可用,你总是可以使用LINQ:

var ds = from str in this.MyStringDatasource 
     select new { data = str }; 

this.MyControl.DataBindings.Add("Text", ds, "data"); 
0

如果您打算将控件绑定到Ienumerable,我不相信dataMember属性实际上是必需的。如果您必须设置它,请尝试将其设置为空,因为我认为它不适用于您的情况。

+0

我试着将DataMember设置为null,但是我有一个错误“Value can not为空“。 – 2011-04-08 15:53:01

+0

出于好奇,如果我可能会问,在这里尝试使用什么类型的控制? – Matt 2011-04-08 15:59:16

1

空为我工作...

BindingList<string> folderCollection = new BindingList<string>(); 

bindingSource1.DataSource = folderCollection; 

textBox1.DataBindings.Add("Text", bindingSource1, null); 
相关问题