天天看点

TreeList控件实现数据过滤功能

  DevExpress系列控件自我使用Delphi时已经使用了相当长的一段时间,即使到现在仍然觉得非常好用。今年11月份开始转入到C#开发,使用的第三方控件自然也是DevExpress系列。由于业务需要,要求使用TreeList控件实现数据过滤功能。TreeList自身是提供了一个数据过滤功能,但这个功能有一个缺点。就是如果目录树是多级目录树,并且父节点不符合过滤条件时,即使里面的子节点符合过滤条件,也不会显示对应的节点。

  好在TreeList控件还提供了一个FilterNode事件,所以我们可以通过FilterNode事件进行处理:

​01​

​private​

​ ​

​void​

​treeList1_FilterNode(​

​​

​object​

​sender, DevExpress.XtraTreeList.FilterNodeEventArgs e) ​

​02​

​{ ​

​03​

​string​

​NodeText = e.Node.GetDisplayText(treeList1.Nodes[0].Id); ​

​04​

​bool​

​IsVisible = NodeText.ToUpper().IndexOf(​

​"过滤的内容"​

​.ToUpper()) >= 0; ​

​05​

​06​

​if​

​(IsVisible) ​

​07​

​{ ​

​08​

​DevExpress.XtraTreeList.Nodes.TreeListNode Node = e.Node.ParentNode; ​

​09​

​while​

​(Node != ​

​null​

​) ​

​10​

​{ ​

​11​

​if​

​(!Node.Visible) ​

​12​

​{ ​

​13​

​Node.Visible = ​

​true​

​; ​

​14​

​Node = Node.ParentNode; ​

​15​

​} ​

​16​

​else​

​17​

​break​

​; ​

​18​

​} ​

​19​

​}             ​

​20​

​21​

​e.Node.Visible = IsVisible; ​

​22​

​e.Handled = ​

​true​

​;             ​

​23​

​}​

  当我们需要进行过滤时,只要调用:

view source

print?

​1​

​treeList1.FilterNodes();​