Edit this page

Basic Filtering

RELATED VIDEOS
Filtering and Expressions in RadGridView for WinForms
In this video, you will learn how to enable three different types of filtering on RadGridView for WinForms.
gridview-filtering-basic-filtering 001

User filtering in RadGridView is enabled by the EnableFiltering property. By default, filtering is disabled at all levels.

Enable filtering

this.radGridView1.EnableFiltering = true;
this.radGridView1.MasterTemplate.EnableFiltering = true;

Me.RadGridView1.EnableFiltering = True
Me.RadGridView1.MasterTemplate.EnableFiltering = True

GridViewDataColumn

When filtering is enabled, each GridViewDataColumn column displays a filter box beneath the corresponding header.

gridview-filtering-basic-filtering 002

See End-User capabilities - Filtering for more information about how the end-user experiences filtering.

RadGridView allows you to prevent the built-in data filtering operation but keep the filtering life cycle as it is, e.g. UI indication, FilterDescriptors and events remain. This is controlled by the MasterTemplate.DataView.BypassFilter property which default value is false. This means that RadGridView won't perform the filtering. This may be suitable for cases in which you bound the grid to a DataTable and you want to apply the filter to the DataTable, not to the grid itself. You can find below a sample code snippet:

Bypass default fitering

DataTable dt = new DataTable();
public void FillData()
{
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Name", typeof(string));
    for (int i = 0; i < 30; i++)
    {
        dt.Rows.Add(i, "Item" + i);
    }
    this.radGridView1.DataSource = dt;
    this.radGridView1.EnableFiltering = true;
    this.radGridView1.MasterTemplate.DataView.BypassFilter = true;
    this.radGridView1.FilterChanged += radGridView1_FilterChanged;
}
private void radGridView1_FilterChanged(object sender, GridViewCollectionChangedEventArgs e)
{
    if (e.Action == NotifyCollectionChangedAction.Add || e.Action == NotifyCollectionChangedAction.ItemChanged)
    {
        dt.DefaultView.RowFilter = this.radGridView1.FilterDescriptors.Expression;
    }
    if (e.Action == NotifyCollectionChangedAction.Remove)
    {
        dt.DefaultView.RowFilter = "";
    }
}

Private dt As New DataTable()
Public Sub FillData()
    dt.Columns.Add("Id", GetType(Integer))
    dt.Columns.Add("Name", GetType(String))
    For i As Integer = 0 To 29
        dt.Rows.Add(i, "Item" & i)
    Next
    Me.RadGridView1.DataSource = dt
    Me.RadGridView1.EnableFiltering = True
    Me.RadGridView1.MasterTemplate.DataView.BypassFilter = True
    AddHandler Me.RadGridView1.FilterChanged, AddressOf radGridView1_FilterChanged
End Sub
Private Sub radGridView1_FilterChanged(sender As Object, e As GridViewCollectionChangedEventArgs)
    If e.Action = NotifyCollectionChangedAction.Add OrElse e.Action = NotifyCollectionChangedAction.ItemChanged Then
        dt.DefaultView.RowFilter = Me.RadGridView1.FilterDescriptors.Expression
    End If
    If e.Action = NotifyCollectionChangedAction.Remove Then
        dt.DefaultView.RowFilter = ""
    End If
End Sub

See Also