2011-04-08 78 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); 
相關問題