DevExpress 选择框如何进行模糊查询

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();
        }

最后,我们再看下运行的效果:

 

转载于:https://www.cnblogs.com/garysun90/p/6858842.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值