我正在使用DevExpress ComboBoxEdit,我需要將列表綁定到其數據源。但是,我可以看有沒有方法來添加數據源來控制,所以我增加了每個項目由一個像DevExpress ComboBoxEdit datasource
foreach (var item in list) {
comboBoxEdit1.Properties.Items.Add(item);
}
它的工作對控制之一,但它是緩慢的,如果有大量的數據。
有沒有一種方法可以直接綁定列表來控制?
我正在使用DevExpress ComboBoxEdit,我需要將列表綁定到其數據源。但是,我可以看有沒有方法來添加數據源來控制,所以我增加了每個項目由一個像DevExpress ComboBoxEdit datasource
foreach (var item in list) {
comboBoxEdit1.Properties.Items.Add(item);
}
它的工作對控制之一,但它是緩慢的,如果有大量的數據。
有沒有一種方法可以直接綁定列表來控制?
無法將ComboBoxEdit直接綁定到數據源,因爲ComboBoxEdit被設計爲在您需要一組簡單的預定義值時使用。當需要使用數據源時,請使用LookUpEdit。
您可以使用該ComboBoxItemCollection.BeginUpdate和ComboBoxItemCollection.EndUpdate方法,以防止過度的更新而改變項集合:
ComboBoxItemCollection itemsCollection = comboBoxEdit1.Properties.Items;
itemsCollection.BeginUpdate();
try {
foreach (var item in list)
itemsCollection.Add(item);
}
finally {
itemsCollection.EndUpdate();
}
這裏的另一種方法使用LINQ的一行到項目EN-質量添加到組合框:
comboBoxEdit1.Properties.Items.AddRange(newItems.Select(x => x.SomeStringPropertyHere as object).ToArray());
.AddRange()方法負責在內部調用BeginUpdate()/ EndUpdate()。
而另一種方法是通過擴展方法:
public static ComboBoxEdit AddItemsToCombo(this ComboBoxEdit combo, IEnumerable<object> items)
{
items.ForEach(i => combo.Properties.Items.Add(i));
return combo;
}
尼斯,我去:MyCollection.ForEach(ⅰ=> this.comboBox.Properties.Items.Add(I)); – ManxJason