DevExpress系列控件自我使用Delphi時已經使用了相當長的一段時間,即使到現在仍然覺得非常好用。今年11月份開始轉入到C#開發,使用的第三方控件自然也是DevExpress系列。由于業務需要,要求使用TreeList控件實作資料過濾功能。TreeList自身是提供了一個資料過濾功能,但這個功能有一個缺點。就是如果目錄樹是多級目錄樹,并且父節點不符合過濾條件時,即使裡面的子節點符合過濾條件,也不會顯示對應的節點。
好在TreeList控件還提供了一個FilterNode事件,是以我們可以通過FilterNode事件進行處理:
01 | private void treeList1_FilterNode( object sender, DevExpress.XtraTreeList.FilterNodeEventArgs e) |
03 | string NodeText = e.Node.GetDisplayText(treeList1.Nodes[0].Id); |
04 | bool IsVisible = NodeText.ToUpper().IndexOf( "過濾的内容" .ToUpper()) >= 0; |
08 | DevExpress.XtraTreeList.Nodes.TreeListNode Node = e.Node.ParentNode; |
09 | while (Node != null ) |
11 | if (!Node.Visible) |
13 | Node.Visible = true ; |
14 | Node = Node.ParentNode; |
21 | e.Node.Visible = IsVisible; |
22 | e.Handled = true ; |
當我們需要進行過濾時,隻要調用:
view source
print?
1 | treeList1.FilterNodes(); |