我正在使用DevExpress ComboBoxEdit,我需要将list绑定到其数据源。但是我可以看到没有方法可以添加数据源来控制,所以我添加了每个项目来逐个控制,如
foreach (var item in list) {
comboBoxEdit1.Properties.Items.Add(item);
}
它起作用但如果有大量数据则很慢 有没有办法可以直接将列表绑定到控件?
答案 0 :(得分:8)
无法将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();
}
答案 1 :(得分:1)
这是另一种使用linq one-liner将组合块添加到组合框中的方法:
comboBoxEdit1.Properties.Items.AddRange(newItems.Select(x => x.SomeStringPropertyHere as object).ToArray());
.AddRange()方法在内部调用BeginUpdate()/ EndUpdate()。
答案 2 :(得分:0)
另一种方法是通过扩展方法:
public static ComboBoxEdit AddItemsToCombo(this ComboBoxEdit combo, IEnumerable<object> items)
{
items.ForEach(i => combo.Properties.Items.Add(i));
return combo;
}