2012-01-25 71 views
3

我想從CheckedListBoxControl中找到特定值的索引。 CheckedListBoxControl有一個DataSource,DisplayMember,ValueMember設置爲一個DataTable和兩列接受。現在我必須通過使用ValueMember中的某個值從CheckedListBoxControl中找到其索引,然後使用該索引調用SetItemChecked()方法,將CheckedState屬性設置爲true。從數據綁定獲取項目索引DevExpress CheckedListBoxControl

我無法找到任何返回索引的屬性或方法。請幫忙。

回答

4

如果一個列表框控件綁定到數據源,你可以遍歷throught使用的GetItem()方法和ItemCount中財產所有列表框項目:

for(int i = 0; i < checkedListBoxControl.ItemCount; i++) { 
    object dataRow = checkedListBoxControl.GetItem(i); 
} 

找到指定項目的索引即可使用FindItem()方法
搜索由DisplayText:

string s = "searchString"; 
int index = checkedListBoxControl.FindItem(startIndex, true, delegate(ListBoxFindItemArgs e) { 
    e.IsFound = s.Equals(e.DisplayText); 
}); 

由ValueMember搜索:

object value = 100; 
int index = checkedListBoxControl.FindItem(startIndex, true, delegate(ListBoxFindItemArgs e) { 
    e.IsFound = object.Equals(value, e.ItemValue); 
}); 

請再看看「How to get checked rows of a data-bound CheckedListBoxControl」這篇文章。

+0

如果我只有ValueMember值,該怎麼辦?我認爲,我確信你的第二個例子不起作用。無論如何感謝指出。 –

+1

@Soham Dasgupta:我完全知道第二個樣本對我的預期工作正常。無論如何,我已經更新了我的第二個樣本,以便通過ValueMember進行搜索。 – DmitryG

+0

此語法似乎不起作用。請檢查我是否錯了。我使用VB.Net,VS2008,Framework版本:2.0 - 'checkedListBoxControl.FindItem(0,True,Function(e As ListBoxFindItemArgs)e.IsFound = Object.Equals(Value,e.ItemValue))' –

相關問題