Skip to main content
All docs
V25.2
  • DxFilterBuilder.GetEditContext() Method

    Returns the component edit context.

    Namespace: DevExpress.Blazor

    Assembly: DevExpress.Blazor.v25.2.dll

    NuGet Package: DevExpress.Blazor

    Declaration

    public EditContext GetEditContext()

    Returns

    Type Description
    EditContext

    The edit context if a filter expression is being modified; otherwise, null.

    Remarks

    Set the ViewMode property to VisualAndText to display the built-in text editor where users can modify the filter condition (in addition to the interactive tree view).

    Run Demo: Filter Builder - View Mode

    In VisualAndText view mode, the Filter Builder supports Blazor form validation and allows you to obtain the component edit context using the GetEditContext method. You can check whether the filter expression was modified and apply validation rules if needed.

    The following code snippet disables the Apply button if a user enters an invalid filter expression in the text area:

    Blazor Filter Builder - Expression Validation in Text Mode

    <DxFilterBuilder @ref="@FilterBuilderRef"
                     @bind-FilterCriteria="@FilterCriteria"
                     ViewMode="@ViewMode">
        <Fields>
            <DxFilterBuilderField FieldName="ProductName" Caption="Product Name" Type="@typeof(string)"/>
            <DxFilterBuilderField FieldName="CategoryId" Caption="Category" Type="@typeof(int)">
                @* ... *@
            </DxFilterBuilderField>
            <DxFilterBuilderField FieldName="SupplierId" Caption="Supplier" Type="@typeof(int)">
                @* ... *@
                <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>
    
    <DxCheckBox @bind-Checked="@ShowTextEditor">Text Editor</DxCheckBox>
    <DxButton Text="Clear" Click="ClearFilterCriteria" />
    <DxButton Text="Apply" Enabled="@IsApplyButtonEnabled"/>
    
    @code {
        CriteriaOperator FilterCriteria { get; set; }
        DxFilterBuilder FilterBuilderRef { get; set; }
        bool ShowTextEditor { get; set; }
        bool IsApplyButtonEnabled { get; set; } = true;
        IEnumerable<Category> Categories { get; set; }
        IEnumerable<Supplier> Suppliers { get; set; }
    
        FilterBuilderViewMode ViewMode => ShowTextEditor ? FilterBuilderViewMode.VisualAndText :
                                                           FilterBuilderViewMode.Visual;
    
        protected override async Task OnInitializedAsync() {
            // ...
            FilterCriteria = CriteriaOperator.Parse("StartsWith([ProductName], 'C') And
                                                     ([UnitPrice] < 50 Or [Discontinued] = true)");
        }
    
        protected override void OnAfterRender(bool firstRender) {
            base.OnAfterRender(false);
    
            if(firstRender) {
                FilterBuilderRef.GetEditContext().OnValidationStateChanged += HandleValidationStateChanged;
            }
        }
    
        private void HandleValidationStateChanged(object? sender, ValidationStateChangedEventArgs e) {
            var isValid = FilterBuilderRef.GetEditContext().GetValidationMessages();
            IsApplyButtonEnabled = !isValid.Any();
    
            StateHasChanged();
        }
    
        void ClearFilterCriteria() {
            FilterCriteria = null;
        }
    }
    
    See Also