1. 程式人生 > >DevExpress 選擇框如何進行模糊查詢

DevExpress 選擇框如何進行模糊查詢

sea 模糊 click 效果 bject private 再看 輸入文字 進行

dev中有很多的選擇框控件,但是沒有發現能夠實時模糊查詢的選擇框,lookupedit是在數據源不變情況下實現自動匹配,但很多時候數據量太大以至於我們沒法先綁定數據源。

這時我們需要一個能夠實現實時匹配的SearchTextBox。這裏我們用到了popupcontainerEdit。

先從工具欄中拖一個popupcontainerEdit和一個popucontainerControl。popupcontainerEdit像是一個lookupedit的輸入選擇框。而popucontainerControl則像是一個lookupedit的下拉框。popucontainerControl是一個類似panel的容器。我們可以放置各種數據集合控件,這裏我們在裏面放置了一個treeList.

技術分享

技術分享

利用popupcontainerEdit.Properties下PopupControl屬性綁定popucontainerControl,將popucontainerControl和popupcontainerEdit二者聯系起來

技術分享

再註冊popupcontainerEdit的editValueChanged事件或者TextChanged事件。這裏我們用的是editValueChanged事件。當popupcontainerEdit輸入文字的時候會觸發這個事件,實時綁定數據。這裏因為是demo所以寫死用的假數據。實際情況是到數據庫中去查詢。註意這裏可能會有延時,為了防止界面卡住你可以把查詢的方法異步,查詢到數據之後再Invoke回調主線程。最後在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="張天愛",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(); }

最後,我們再看下運行的效果:

技術分享

DevExpress 選擇框如何進行模糊查詢