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
|