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, |
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).
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:

<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;
}
}