2012-09-21 5 views
3

DevExpress ComboBoxEdit을 사용하고 있으며 목록을 데이터 소스에 바인딩해야합니다. 하지만 제어하는 ​​데이터 소스를 추가 할 방법이 없기 볼 수 있습니다, 그래서 그것은 위해 일 하나 DevExpress ComboBoxEdit 데이터 소스

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

등으로 하나를 제어하기 위해 각 항목을 추가하지만, 데이터의이 많을 경우 속도가 느립니다있다.
컨트롤을 직접 바인딩 할 수있는 방법이 있습니까?

답변

8

간단한 미리 정의 된 값 집합이 필요할 때 ComboBoxEdit가 사용되도록 설계되었으므로 ComboBoxEdit를 데이터 원본에 직접 바인딩 할 방법이 없습니다. 데이터 소스를 사용해야하는 경우 LookUpEdit을 사용하십시오.

: 여기
ComboBoxItemCollection itemsCollection = comboBoxEdit1.Properties.Items; 
itemsCollection.BeginUpdate(); 
try { 
    foreach (var item in list) 
     itemsCollection.Add(item); 
} 
finally { 
    itemsCollection.EndUpdate(); 
} 
1

는 LINQ를 한 줄을 사용하여 콤보 상자에 KO-대량 항목을 추가하는 또 다른 접근 방식 : 아이템 수집을 변경하는 동안
당신은 과도한 업데이트를 방지하여 ComboBoxItemCollection.BeginUpdateComboBoxItemCollection.EndUpdate 방법을 사용할 수 있습니다
comboBoxEdit1.Properties.Items.AddRange(newItems.Select(x => x.SomeStringPropertyHere as object).ToArray()); 

.AddRange() 메서드는 BeginUpdate()/EndUpdate()를 내부적으로 호출하는 데주의를 기울입니다.

+0

니스, I는 갔다 : MyCollection.ForEach (I => this.comboBox.Properties.Items.Add (I)); – ManxJason

0

주고받으며이 확장 메소드를 통해이다

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