devexpress comboboxedit怎么变成了baredititem

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了devexpress comboboxedit怎么变成了baredititem相关的知识,希望对你有一定的参考价值。

参考技术A DevExpress的ComboBoxEdit没有DisplayMember和ValueMember的属性。建议你用用DevExpress的LookUpEdit控件。

DevExpress ComboBoxEdit 数据源

【中文标题】DevExpress ComboBoxEdit 数据源【英文标题】:DevExpress ComboBoxEdit datasource 【发布时间】:2012-09-13 16:54:04 【问题描述】:

我正在使用 DevExpress ComboBoxEdit,我需要将列表绑定到它的数据源。但是正如我所见,没有方法可以添加数据源来控制,所以我像添加了每个项目来控制一样

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

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

【问题讨论】:

【参考方案1】:

没有办法将 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();

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

很好,我选择了:MyCollection.ForEach(i => this.comboBox.Properties.Items.Add(i)); 恐怕对每个项目调用 .Add() 方法会导致 BeginUpdate()/EndUpdate() 被调用 N 次(其中 N 是集合中的项目数)与使用 AddRange() 时一样。由于上述重复调用,垃圾邮件 BeginUpdate()/EndUpdate() * N 对“大型”集合的性能产生负面影响。只是我的 2c。【参考方案3】:

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

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

【讨论】:

以上是关于devexpress comboboxedit怎么变成了baredititem的主要内容,如果未能解决你的问题,请参考以下文章

DevExpress:下拉框绑定数据源 (ComboBoxEdit,LookUpEdit) 出现Editvalue is null 为啥 ,求代码

comboBoxEdit

stripe express 怎么用

DevExpress的下拉框控件ComboxBoxEdit怎样绑定键值对选项

DevExpress控件使用小结 z

DevExpress winform XtraEditor常用控件