Back to Devexpress

FilterBuilderViewMode Enum

blazor-devexpress-dot-blazor-81ad048f.md

latest4.2 KB
Original Source

FilterBuilderViewMode Enum

Lists filter expression view modes.

Namespace : DevExpress.Blazor

Assembly : DevExpress.Blazor.v25.2.dll

NuGet Package : DevExpress.Blazor

Declaration

csharp
public enum FilterBuilderViewMode

Members

NameDescription
Visual

Users can build/edit filter conditions using a tree view only.

| | VisualAndText |

Users can build/edit filter conditions using both a tree view and a built-in text editor.

|

The following properties accept/return FilterBuilderViewMode values:

Remarks

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

Run Demo: Filter Builder - View Mode

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

razor
<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

DevExpress.Blazor Namespace