dev treelist和searchcontrol组合模糊查询用法

这里需要用到两个控件,是dev的treelist和searchcontrol,首先呢树形控件要形成树形我在这就不多说了

因为这里是记录下searchcontrol这控件的用法

首先写这三行代码,里面都有注释

            this.searchControl1.Client = this.treeList1;//设置搜索绑定
            treeList1.OptionsBehavior.EnableFiltering = true;//开启过滤功能
            treeList1.OptionsFilter.FilterMode = FilterMode.Smart;//过滤模式

经测试,以上就可以完成简单的过滤功能:只负责每个node的displayText和search串的匹配,实现子节点或父节点匹配显示,不匹配隐藏,注:如果子节点匹配,它的父节点为匹配只显示子节点;反之,如果父节点匹配,它的子节点不显示。另外不能实现通过节点的其他属性显示,如拼音首字母。如果需要这些,需要以下的代码。

然后我们构造一个事件,我们称它为过滤事件,

//过滤事件
 treeList1.FilterNode += treeList1_FilterNode;

然后在事件中写上代码

void treeList1_FilterNode(object sender, DevExpress.XtraTreeList.FilterNodeEventArgs e)
        {
                      if (treeList1.DataSource == null)
            {
                return;
            }

            string NodeText = e.Node.GetDisplayText("ITEM_NAME");//参数填写FieldName  
            string NodeTextPY = e.Node.GetValue("PINYIN").ToString(); //拼音码搜索
            if (string.IsNullOrWhiteSpace(NodeText))
            {
                return;
            }

            bool IsVisible = NodeText.ToUpper().IndexOf(txtSearch.Text.ToUpper()) >= 0;
            bool IsVisiblePY = NodeTextPY.ToUpper().IndexOf(txtSearch.Text.ToUpper()) >= 0;
            if (IsVisible || IsVisiblePY)
            {
                DevExpress.XtraTreeList.Nodes.TreeListNode Node = e.Node;
                while (Node != null)
                {
                    if (!Node.Visible)
                    {
                        Node.Visible = true;
                        Node = Node.ParentNode;
                    }
                    else
                    {
                        break;
                    }
                }
                e.Node.Visible = true;

            }
            else
            {
                e.Node.Visible = false;
            }
            e.Handled = true;
        }

e.Handled=true,表示我已经处理当前事件,系统不做处理了。

FilterNode这个事件经跟踪是循环每一个node对其进行判断并处理,显示隐藏。一次筛选有多少个node就会执行多少次此事件。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值