RadGridView for WinForms

RadControls Send comments on this topic.
Setting Filters Programmatically
GridView > Filtering > Setting Filters Programmatically

Glossary Item Box

Setting Filters Programmatically

Each data column (represented by GridViewDataColumn) has a Filter property that can be assigned a FilterExpression object. To build a FilterExpression:

  • Create a FilterExpression instance
  • Add to the FilterExpression.Predicates collection. Here you define the binary operation (i.e. AND, OR), a GridKnownFunction enumeration element (e.g. StartsWith, Contains), and the parameter that the first two arguments refer to here. Note: In the example, GridFilterCellElement.ParameterName are used, which at runtime might resolve to "@FilterEditor1".
  • Add to the FilterExpression Parameters collection. The first parameter to Add() is a keyname and the second the comparison value for the filter (for example "@FilterEditor1" and "Qu").

[C#] Building a FilterExpression Copy Code
FilterExpression filter = new FilterExpression();
filter.Predicates.Add(FilterExpression.BinaryOperation.AND,
   GridKnownFunction.StartsWith,
   
"@FilterEditor1");
filter.Parameters.Add(
"@FilterEditor1", "Qu");
this.radGridView1.Columns["ProductName"].Filter = filter;
[VB] Building a FilterExpression Copy Code
Dim filter As New FilterExpression()
filter.Predicates.Add(FilterExpression.BinaryOperation.[AND], GridKnownFunction.StartsWith, "@FilterEditor1")
filter.Parameters.Add("@FilterEditor1", "Qu")
Me.radGridView1.Columns("ProductName").Filter = filter

Setting Multiple Filters

You can add filters to multiple columns by assigning the Filter property of each data column. The example below first shows a filter for a single column "UnitsInStock". The screenshot below shows the results with a number of products with greater than 100 units in stock.

[C#] Assigning Filter for a Single Column Copy Code
FilterExpression filterUnitsInStock = new FilterExpression();
filterUnitsInStock.Predicates.Add(
   FilterExpression.BinaryOperation.AND,
   GridKnownFunction.GreaterThan,
   
"@FilterEditor1");
filterUnitsInStock.Parameters.Add(
"@FilterEditor1", 100);
this.radGridView1.Columns["UnitsInStock"].Filter = filterUnitsInStock;
[VB] Assigning Filter for a Single Column Copy Code
Dim filterUnitsInStock As New FilterExpression()
filterUnitsInStock.Predicates.Add(FilterExpression.BinaryOperation.[AND], GridKnownFunction.GreaterThan, "@FilterEditor1")
filterUnitsInStock.Parameters.Add("@FilterEditor1", 100)
Me.radGridView1.Columns("UnitsInStock").Filter = filterUnitsInStock

By assigning the Filter for a second column the number of records is reduced to products starting with "G" and with over 100 units in stock:

[C#] Assigning Filter for Multiple Columns Copy Code
FilterExpression filterUnitsInStock = new FilterExpression();
filterUnitsInStock.Predicates.Add(
   FilterExpression.BinaryOperation.AND,
   GridKnownFunction.GreaterThan,
   
"@FilterEditor1");
filterUnitsInStock.Parameters.Add(
"@FilterEditor1", 100);
this.radGridView1.Columns["UnitsInStock"].Filter = filterUnitsInStock;
FilterExpression filterProductName =
new FilterExpression();
filterProductName.Predicates.Add(
   FilterExpression.BinaryOperation.AND,
   GridKnownFunction.StartsWith,
   
"@FilterEditor1");
filterProductName.Parameters.Add(
"@FilterEditor1", "G");
this.radGridView1.Columns["ProductName"].Filter = filterProductName;
[VB] Assigning Filter for Multiple Columns Copy Code
Dim filterUnitsInStock As New FilterExpression()
filterUnitsInStock.Predicates.Add(FilterExpression.BinaryOperation.[AND], GridKnownFunction.GreaterThan, "@FilterEditor1")
filterUnitsInStock.Parameters.Add("@FilterEditor1", 100)
Me.radGridView1.Columns("UnitsInStock").Filter = filterUnitsInStock
Dim filterProductName As New FilterExpression()
filterProductName.Predicates.Add(FilterExpression.BinaryOperation.[AND], GridKnownFunction.StartsWith, "@FilterEditor1")
filterProductName.Parameters.Add("@FilterEditor1", "G")
Me.radGridView1.Columns("ProductName").Filter = filterProductName

Logical Operations Between Filters

Logical operations are defined by the FilterExpression BinaryOperation enumeration:

  • AND - a row will appear in the result set if it satisfies all cell filter conditions
  • OR - a row will appear in the result set if it satisfies at least one cell filter condition

Setting Default Filters

The Filter.Function property can be assigned a GridKnownFunction enumeration element (i.e. Contains, StartsWith, NoFilter, etc.). By default RadGridView uses the Contains function for its columns.

The example below looks for columns that contain string data and set the filter function to Contains. sets StartsWidth function for City column and sets the filter parameter to "Ber". As a result the grid will filter the results and will display only the cities that start with "Ber".

[C#] Setting Filter Function Copy Code
private void Form1_Load(object sender, EventArgs e)
       {
           FilterExpression filter =
new FilterExpression(FilterExpression.BinaryOperation.AND,
               GridKnownFunction.StartsWith,
"@FilterEditor1");
           filter.Parameters.Add(
"@FilterEditor1", "Ber");

           
this.radGridView1.Columns["City"].Filter = filter;
       }
[VB] Setting Filter Function Copy Code
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
 Dim filter As New FilterExpression(FilterExpression.BinaryOperation.[AND], GridKnownFunction.StartsWith, "@FilterEditor1")
 filter.Parameters.Add("@FilterEditor1", "Ber")
 Me.radGridView1.Columns("City").Filter = filter
End Sub