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 为啥 ,求代码