TreeList控件实现数据过滤功能

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

 

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

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void treeList1_FilterNode(object sender, DevExpress.XtraTreeList.FilterNodeEventArgs e)
{
    string NodeText = e.Node.GetDisplayText(treeList1.Nodes[0].Id);
    bool IsVisible = NodeText.ToUpper().IndexOf("过滤的内容".ToUpper()) >= 0;
 
    if (IsVisible)
    {
        DevExpress.XtraTreeList.Nodes.TreeListNode Node = e.Node.ParentNode;
        while (Node != null)
        {
            if (!Node.Visible)
            {
                Node.Visible = true;
                Node = Node.ParentNode;
            }
            else
                break;
        }
    }           
 
    e.Node.Visible = IsVisible;
    e.Handled = true;           
}

 

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

 

 

1
treeList1.FilterNodes();

 

posted @   青出于蓝  阅读(4570)  评论(2编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
深圳市米软科技有限公司(米软科技 http://www.szmesoft.com),专注于 HR 人力资源管理软件、HIS 医院信息化管理软件、OA 智能办公软件开发
点击右上角即可分享
微信分享提示