本文主要是介绍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就会执行多少次此事件。
这篇关于dev treelist和searchcontrol组合模糊查询用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!