通过事件筛选
可以通过 TreeList.FilterNode 事件动态筛选数据。 使用此事件能为您提供最大的灵活性,因为可以人工控制任何特定节点的可视性。
此事件为每个节点发生。 当接管此事件时,需要指定当前被处理的节点是否应被隐藏或保持可视。 要隐藏某个节点,则把事件的 Visible 参数设置为 false,并把 Handled 参数设置为 true。
除了通过 TreeList.FilterNode 事件筛选数据之外,还可以通过创建筛选条件 (这些条件定义了隐藏节点的规则。 请参阅 创建筛选条件 主题来学习更多内容) 来筛选数据。 此外,可以同时使用 TreeList.FilterNode 事件和筛选条件来筛选数据。 在这种情况下,按如下顺序筛选数据。 首先 TreeList.FilterNode 事件发生。 在此事件之后,根据筛选条件筛选数据。 但是,如果事件的 Handled 参数被设置为 true,则当前被处理节点的筛选条件将被舍弃。
假设有一个隐藏某个节点的筛选条件。 如果需要该节点保持可视,则接管 TreeList.FilterNode 事件,并且为该节点将事件的 Visible 和 Handled 参数都设置为 true。
示例
下面的示例演示了如何隐藏 budget 小于 $100,000 的 departments。
下面的插图展示了结果:
C# | 复制代码 |
---|---|
using DevExpress.XtraTreeList; private void treeList1_FilterNode(object sender, FilterNodeEventArgs e) { if(Convert.ToInt32(e.Node[colBUDGET]) < 100000) { e.Node.Visible = false; e.Handled = true; } } |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.XtraTreeList Private Sub TreeList1_FilterNode(ByVal sender As Object, _ ByVal e As FilterNodeEventArgs) Handles TreeList1.FilterNode If Convert.ToInt32(e.Node(colBUDGET)) < 100000 Then e.Node.Visible = False e.Handled = True End If End Sub |