Skip to main content
All docs
V25.2
  • GridFilterBuilderTemplateContext.FilterCriteria Property

    Specifies filter criteria applied to grid data.

    Namespace: DevExpress.Blazor

    Assembly: DevExpress.Blazor.v25.2.dll

    NuGet Package: DevExpress.Blazor

    Declaration

    public CriteriaOperator FilterCriteria { get; set; }

    Property Value

    Type Description
    CriteriaOperator

    The current filter criteria.

    Remarks

    Specify a FilterBuilderTemplate to customize the filter builder dialog in the Grid component. Implement two-way data binding between context.FilterCriteria and DxFilterBuilder.FilterCriteria properties to synchronize Filter Builder and Grid components.

    Read Tutorial: Filter Panel and Filter Builder Run Demo: Filter Builder Customization

    Example

    The following code snippet customizes the filter builder dialog as follows:

    • Displays the applied filter condition above the Filter Builder component
    • Limits available logical operators to And and Or
    • Adds a Country filter field
    @inject NwindDataService NwindDataService
    
    <DxGrid Data="Data"
            FilterMenuButtonDisplayMode="GridFilterMenuButtonDisplayMode.Always"
            FilterPanelDisplayMode="GridFilterPanelDisplayMode.Always">
        <Columns>
            <DxGridDataColumn FieldName="SalesPerson" Caption="Salesperson">
                <EditSettings>
                    <DxComboBoxSettings Data="Salespersons" />
                </EditSettings>
            </DxGridDataColumn>
            <DxGridBandColumn Caption="Order">
                <Columns>
                    <DxGridDataColumn FieldName="CompanyName" />
                    <DxGridDataColumn FieldName="OrderDate" Caption="Date" />
                    <DxGridBandColumn Caption="Product">
                        <Columns>
                            <DxGridDataColumn FieldName="ProductName" Caption="Name">
                                <EditSettings>
                                    <DxComboBoxSettings Data="ProductNames" />
                                </EditSettings>
                            </DxGridDataColumn>
                            <DxGridDataColumn FieldName="UnitPrice" />
                        </Columns>
                    </DxGridBandColumn>
                    <DxGridDataColumn FieldName="Quantity" />
                </Columns>
            </DxGridBandColumn>
        </Columns>
        <FilterBuilderTemplate>
            <b>Currently Applied Filter:</b> @(context.Grid.GetFilterCriteria()?.ToString() ?? "No filter")
            <DxFilterBuilder @bind-FilterCriteria="context.FilterCriteria" 
                GroupOperatorTypes="[FilterBuilderGroupOperatorType.And, FilterBuilderGroupOperatorType.Or]">
                <Fields>
                    @context.RenderDefaultFields()
                    <DxFilterBuilderField FieldName="ShipCountry" Caption="Country"
                        CaptionFullPath="Shipping Info.Country">
                        <EditSettings>
                            <DxComboBoxSettings Data="ShipCountries" />
                        </EditSettings>
                    </DxFilterBuilderField>
                </Fields>
            </DxFilterBuilder>
        </FilterBuilderTemplate>
    </DxGrid>
    
    @code {
        object Data { get; set; }
    
        IEnumerable<string> Salespersons { get; set; }
        IEnumerable<string> ProductNames { get; set; }
        IEnumerable<string> ShipCountries { get; set; }
    
        protected override async Task OnInitializedAsync() {
            var invoices = await NwindDataService.GetInvoicesAsync();
            var customers = await NwindDataService.GetCustomersAsync();
    
            var invoiceList = invoices.ToList();
            Salespersons = invoiceList.Select(i => i.Salesperson)
                                  .Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().OrderBy(s => s).ToList();
            ProductNames = invoiceList.Select(i => i.ProductName)
                                  .Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().OrderBy(s => s).ToList();
            ShipCountries = invoiceList.Select(i => i.ShipCountry)
                                  .Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().OrderBy(s => s).ToList();
    
            Data = invoiceList.OrderBy(i => i.OrderDate).Join(customers, i => i.CustomerId, c => c.CustomerId, 
                (i, c) => { return new {
                    CompanyName = c.CompanyName,
                    SalesPerson = i.Salesperson,
                    UnitPrice = i.UnitPrice,
                    OrderDate = i.OrderDate,
                    ProductName = i.ProductName,
                    Quantity = i.Quantity,
                    ShipCountry = i.ShipCountry,
                    ShipCity = i.ShipCity,
                    ShipName = i.ShipName
                };
            });
        }
    }
    

    DevExpress Blazor Grid - Filter Builder Template

    See Also