Skip to main content
All docs
V25.2
  • GridFilterBuilderTemplateContext.RenderDefaultFields() Method

    Returns filter fields automatically generated for the filter builder based on Grid columns.

    Namespace: DevExpress.Blazor

    Assembly: DevExpress.Blazor.v25.2.dll

    Declaration

    public RenderFragment RenderDefaultFields()

    Returns

    Type Description
    RenderFragment

    A collection of auto-generated filter fields (UI fragment) that the browser renders in the filter builder’s markup.

    Remarks

    The filter builder dialog is a centralized viewer/editor for Grid component’s filter conditions. Users can edit and combine filter criteria applied to any number of columns, all within the same window. The Grid automatically generates and configures available filter fields based on the following column settings:

    The filter field hierarchy is based on the column band hierarchy.

    Specify a FilterBuilderTemplate to customize the filter builder dialog. To use autogenerated fields in this template, call the context.RenderDefaultFields method within the Filter Builder component’s Fields tag.

    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