Filtering in UWP TreeGrid (SfTreeGrid)
18 May 20223 minutes to read
Overview
SfTreeGrid provides support for programmatic filtering. It can be achieved by setting SfTreeGrid.View.Filter delegate and calling SfTreeGrid.View.RefreshFilter method.
public bool FilerNodes(object o)
{
var data = o as Employee;
if (data.Salary > 70000)
return true;
return false;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
treeGrid.View.Filter = FilerNodes;
treeGrid.View.RefreshFilter();
}
Here, FilterNodes
delegate filters the data based on Salary. FilterNodes
delegate is assigned to SfTreeGrid.View.Filter predicate to filter the tree grid. After that, SfTreeGrid.View.RefreshFilter method is called to refresh the nodes. If the node satisfies the filter conditions, true will be returned. Else false will be returned.
While filtering, if the node satisfies filter condition, IsFiltered property of TreeNode will be set as false. Else, it will be true. If IsFiltered
value is True, the node will not be displayed in view, else it will be displayed in view.
NOTE
SfTreeGrid refreshes the filtering on property change if SfTreeGrid.LiveNodeUpdateMode property is set as
AllowDataShaping
.
You can download the sample from here.
FilterLevel
You can filter the nodes based on level by using SfTreeGrid.FilterLevel property.
treeGrid.FilterLevel = FilterLevel.All;
-
Root - Filter will be applied to root nodes only in SfTreeGrid.
-
All - Filter will be applied to all the nodes in SfTreeGrid.
-
Extended - Filter will be applied to all the nodes. If a node matches the filter condition, it’s all ancestors will also be displayed, even though parent node does not match the filter condition.
Root
Filter will be applied to root nodes only in SfTreeGrid. For other nodes, IsFiltered
value will be false and they always will be displayed in view.
All
Filter will be applied to all the nodes in SfTreeGrid. If the parent node does not match the filter condition, filter will not be applied for child nodes. Else, filter will be applied to its child nodes also.
Extended
Filter will be applied to all the nodes. If a node matches the filter condition, it’s all ancestors will also be displayed, even though parent node does not match the filter condition and parent node’s IsFiltered
value will be set as false.
NOTE
It is also possible to change
FilterLevel
at runtime.
Clear filters
You can clear the filters applied in tree grid by setting SfTreeGrid.View.Filter
delegate as null and calling SfTreeGrid.View.RefreshFilter
method.
treeGrid.View.Filter = null;
treeGrid.View.RefreshFilter();
HasVisibleChildNodes
You can find whether particular node has child node(s) displayed in a view (matches filtering criteria) or not by using HasVisibleChildNodes property in TreeNode.
var treeNode=treeGrid.View.Nodes[0];
var hasVisibleChildNodes = treeNode.HasVisibleChildNodes;