2012-09-21 62 views
3

我正在使用DevExpress ComboBoxEdit,我需要將列表綁定到其數據源。但是,我可以看有沒有方法來添加數據源來控制,所以我增加了每個項目由一個像DevExpress ComboBoxEdit datasource

foreach (var item in list) { 
    comboBoxEdit1.Properties.Items.Add(item); 
} 

它的工作對控制之一,但它是緩慢的,如果有大量的數據。
有沒有一種方法可以直接綁定列表來控制?

回答

8

無法將ComboBoxEdit直接綁定到數據源,因爲ComboBoxEdit被設計爲在您需要一組簡單的預定義值時使用。當需要使用數據源時,請使用LookUpEdit
您可以使用該ComboBoxItemCollection.BeginUpdateComboBoxItemCollection.EndUpdate方法,以防止過度的更新而改變項集合:

ComboBoxItemCollection itemsCollection = comboBoxEdit1.Properties.Items; 
itemsCollection.BeginUpdate(); 
try { 
    foreach (var item in list) 
     itemsCollection.Add(item); 
} 
finally { 
    itemsCollection.EndUpdate(); 
} 
1

這裏的另一種方法使用LINQ的一行到項目EN-質量添加到組合框:

comboBoxEdit1.Properties.Items.AddRange(newItems.Select(x => x.SomeStringPropertyHere as object).ToArray()); 

.AddRange()方法負責在內部調用BeginUpdate()/ EndUpdate()。

+0

尼斯,我去:MyCollection.ForEach(ⅰ=> this.comboBox.Properties.Items.Add(I)); – ManxJason

0

而另一種方法是通過擴展方法:

public static ComboBoxEdit AddItemsToCombo(this ComboBoxEdit combo, IEnumerable<object> items) 
    { 
     items.ForEach(i => combo.Properties.Items.Add(i)); 
     return combo; 
    }