Skip to main content
All docs
V25.1
  • DxFilterBuilder.FilterCriteria Property

    Specifies filter criteria.

    Namespace: DevExpress.Blazor

    Assembly: DevExpress.Blazor.v25.1.dll

    NuGet Package: DevExpress.Blazor

    Declaration

    [DefaultValue(null)]
    [Parameter]
    public CriteriaOperator FilterCriteria { get; set; }

    Property Value

    Type Default Description
    CriteriaOperator null

    The filter criteria.

    Remarks

    Use the FilterCriteria property to specify filter expression and build the corresponding filter condition. To respond to filter criteria changes, handle the FilterCriteriaChanged event. This event is handled automatically when you use two-way data binding for the FilterCriteria property (@bind-FilterCriteria).

    The following code snippet binds the Filter Builder to the DevExpress Blazor Grid component using the FilterCriteria property. An Apply button click filters grid data using a DxGrid.SetFilterCriteria method call. A Clear button click clears all filter conditions.

    Filter Builder - Connect the Component to Grid

    <DxFilterBuilder @bind-FilterCriteria="FilterCriteria">
        <Fields>
            <DxFilterBuilderField FieldName="ProductName" Caption="Product Name" Type="@typeof(string)" />
            <DxFilterBuilderField FieldName="CategoryId" Caption="Category" Type="@typeof(int)">
                <EditSettings>
                    <DxComboBoxSettings Data="Categories" ValueFieldName="CategoryId" TextFieldName="CategoryName" />
                </EditSettings>
            </DxFilterBuilderField>
            <DxFilterBuilderField FieldName="SupplierId" Caption="Supplier" Type="@typeof(int)">
                <EditSettings>
                    <DxComboBoxSettings Data="Suppliers" ValueFieldName="SupplierId" TextFieldName="CompanyName">
                        <ItemDisplayTemplate>
                            @{
                                var item = (Supplier)context.DataItem;
                            }
                            @item.CompanyName (@item.ContactName)
                        </ItemDisplayTemplate>
                    </DxComboBoxSettings>
                </EditSettings>
                <Fields>
                    <DxFilterBuilderField FieldName="Supplier.CompanyName" Caption="Company Name" CaptionFullPath="Supplier.Company Name" Type="@typeof(string)" />
                    <DxFilterBuilderField FieldName="Supplier.ContactName" Caption="Contact Name" CaptionFullPath="Supplier.Contact Name" Type="@typeof(string)" />
                </Fields>
            </DxFilterBuilderField>
            <DxFilterBuilderField FieldName="UnitPrice" Caption="Unit Price" Type="@typeof(int)" />
            <DxFilterBuilderField FieldName="UnitsInStock" Caption="Units in Stock" Type="@typeof(int)" />
            <DxFilterBuilderField FieldName="QuantityPerUnit" Caption="Quantity per Unit" Type="@typeof(int)" />
            <DxFilterBuilderField FieldName="Discontinued" Type="@typeof(bool)" />
        </Fields>
    </DxFilterBuilder>
    
    <div>
        <DxButton Text="Clear" Click="ClearFilterCriteria" RenderStyle="ButtonRenderStyle.Secondary"/>
        <DxButton Text="Apply" Click="ApplyFilterCriteria" />
    </div>
    
    <DxGrid @ref="Grid" Data="Data"
            PageSize="15"
            ColumnResizeMode="GridColumnResizeMode.NextColumn"
            TextWrapEnabled="false" VirtualScrollingEnabled="true"
            FilterCriteriaChanged="GridFilterCriteriaChanged"
            FilterMenuButtonDisplayMode="GridFilterMenuButtonDisplayMode.Always">
        <Columns>
            <DxGridDataColumn FieldName="ProductName" MinWidth="100" />
            <DxGridDataColumn FieldName="Category.CategoryName" Caption="Category" MinWidth="100" />
            <DxGridDataColumn FieldName="Supplier.CompanyName" Caption="Company Name" MinWidth="100" />
            <DxGridDataColumn FieldName="Supplier.ContactName" Caption="Contact Name" MinWidth="100" />
            <DxGridDataColumn FieldName="UnitPrice" DisplayFormat="c" Width="10%" />
            <DxGridDataColumn FieldName="UnitsInStock" Caption="Units in Stock" Width="10%" />
            <DxGridDataColumn FieldName="QuantityPerUnit" Caption="Quantity per Unit" Width="15%" MinWidth="80" />
            <DxGridDataColumn FieldName="Discontinued" Width="10%" MinWidth="90" />
        </Columns>
    </DxGrid>
    
    @code {
        IGrid Grid { get; set; }
        object Data { get; set; }
        CriteriaOperator FilterCriteria { get; set; } = CriteriaOperator.Parse("StartsWith([ProductName], 'C') And ([UnitPrice] < 50 Or [Discontinued] = true)");
        IEnumerable<Product> Products { get; set; }
        IEnumerable<Category> Categories { get; set; }
        IEnumerable<Supplier> Suppliers { get; set; }
        List<Category> SelectedCategories { get; set; } = [];
        protected override async Task OnInitializedAsync() {
            Suppliers = await NwindDataService.GetSuppliersAsync();
            Categories = await NwindDataService.GetCategoriesAsync();
            Products = await NwindDataService.GetProductsAsync();
            // ...
        }
        protected override void OnAfterRender(bool firstRender) {
            base.OnAfterRender(false);
            if (firstRender && Grid != null)
                ApplyFilterCriteria();
        }
        void ApplyFilterCriteria() {
            Grid.SetFilterCriteria(FilterCriteria);
        }
        void ClearFilterCriteria() {
            FilterCriteria = null;
            Grid.ClearFilter();
        }
        void GridFilterCriteriaChanged(GridFilterCriteriaChangedEventArgs args) {
            FilterCriteria = args.FilterCriteria;
        }
    }
    

    Run Demo: Filter Builder

    See Also