天天看點

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