DevExpress 选择框如何进行模糊查询
dev中有很多的選擇框控件,但是沒有發(fā)現(xiàn)能夠根據(jù)文本框輸入實時獲取數(shù)據(jù)源進行模糊查詢的選擇框,lookupedit是在數(shù)據(jù)源不變情況下實現(xiàn)自動匹配,但很多時候數(shù)據(jù)量太大以至于我們沒法先綁定數(shù)據(jù)源。
這時我們需要一個能夠?qū)崿F(xiàn)實時匹配的SearchTextBox。這里我們用到了popupcontainerEdit。
先從工具欄中拖一個popupcontainerEdit和一個popucontainerControl。popupcontainerEdit像是一個lookupedit的輸入選擇框。而popucontainerControl則像是一個lookupedit的下拉框。popucontainerControl是一個類似panel的容器。我們可以放置各種數(shù)據(jù)集合控件,這里我們在里面放置了一個treeList.
?
?利用popupcontainerEdit.Properties下PopupControl屬性綁定popucontainerControl,將popucontainerControl和popupcontainerEdit二者聯(lián)系起來
再注冊popupcontainerEdit的editValueChanged事件或者TextChanged事件。這里我們用的是editValueChanged事件。當popupcontainerEdit輸入文字的時候會觸發(fā)這個事件,實時綁定數(shù)據(jù)。這里因為是demo所以用的假數(shù)據(jù)寫死。實際情況是到數(shù)據(jù)庫中去查詢。注意這里可能會有延時,為了防止界面卡住你可以把查詢的方法異步,查詢到數(shù)據(jù)之后再Invoke回調(diào)主線程。最后在treeList的mousedoubleClick中找到選擇的項。
private void popupTest_EditValueChanged(object sender, EventArgs e){if (popupTest.EditValue == null){tlTest.DataSource = "";return;}switch (popupTest.EditValue.ToString()){case "張":tlTest.DataSource = new List<NameValue>(){new NameValue() { Name="張三",Value="zhang"},new NameValue() { Name="張?zhí)鞇?/span>",Value="zhang2"},new NameValue() { Name="張伯倫",Value="zhang3"},};break;case "李":tlTest.DataSource = new List<NameValue>(){new NameValue() { Name = "李四", Value = "li" },new NameValue() { Name = "李世民", Value = "li2" }};break;case "王":tlTest.DataSource = new List<NameValue>(){new NameValue() { Name="王五",Value="wang"},new NameValue() { Name="王王",Value="wang2"}};break;default:tlTest.DataSource = "";break;}popupTest.ShowPopup();popupTest.Focus();}最后,我們再看下運行的效果:
?
轉(zhuǎn)載于:https://www.cnblogs.com/garysun90/p/6858842.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的DevExpress 选择框如何进行模糊查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。