3

我正在使用 DevExpress ComboBoxEdit,我需要将列表绑定到它的数据源。但是正如我所见,没有方法可以将数据源添加到控件中,因此我将每个项添加到控件中,例如

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

它有效,但如果有大量数据,它会很慢。
有没有办法可以直接绑定列表来控制?

4

3 回答 3

9

无法将 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();
}
于 2012-09-24T04:28:22.473 回答
4

这是使用 linq one-liner 将项目整体添加到组合框的另一种方法:

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

.AddRange() 方法负责在内部调用 BeginUpdate()/EndUpdate()。

于 2016-05-27T11:04:36.480 回答
0

另一种方法是通过扩展方法:

    public static ComboBoxEdit AddItemsToCombo(this ComboBoxEdit combo, IEnumerable<object> items)
    {
        items.ForEach(i => combo.Properties.Items.Add(i));
        return combo;
    }
于 2017-04-30T20:12:13.673 回答