Back to Devexpress

ASPxFilterControlBase.OperationVisibility Event

aspnet-devexpress-dot-web-dot-aspxfiltercontrolbase-63b8f342.md

latest6.4 KB
Original Source

ASPxFilterControlBase.OperationVisibility Event

Enables you to hide/show the operations for filterable properties within the control.

Namespace : DevExpress.Web

Assembly : DevExpress.Web.v25.2.dll

NuGet Package : DevExpress.Web

Declaration

csharp
public event FilterControlOperationVisibilityEventHandler OperationVisibility
vb
Public Event OperationVisibility As FilterControlOperationVisibilityEventHandler

Event Data

The OperationVisibility event's data class is FilterControlOperationVisibilityEventArgs. The following properties provide information specific to this event:

PropertyDescription
CustomFunctionNameGets a custom filter function name.
FunctionTypeGets a function-based comparison operator type.
OperationGets the comparison operator type.
PropertyInfoGets the filterable property of the filter expression.
VisibleGets or sets a value specifying whether the filter operation is visible.

Remarks

The OperationVisibility event is raised for each comparison operator, and allows you to dynamically control its visibility.

The event parameter’s FilterControlOperationVisibilityEventArgs.PropertyInfo and the FilterControlOperationVisibilityEventArgs.Operation properties identify the filterable property (the column being filtered) and its operations. To specify the operator’s visibility, use the FilterControlOperationVisibilityEventArgs.Visible property.

Example

You can hide filter operation items (Contains, Equals, etc.). In the OperationVisibility event handler, a database field name is analyzed, and based on custom conditions, unnecessary operations are hidden.

aspx
<dx:ASPxFilterControl ID="filter" runat="server" ClientInstanceName="filter" OnOperationVisibility="filter_FilterOperationVisibility">
    <Columns>
        <dx:FilterControlSpinEditColumn PropertyName="CategoryID" />
        <dx:FilterControlTextColumn PropertyName="CategoryName" />
        <dx:FilterControlTextColumn PropertyName="Description" />
    </Columns>
    <ClientSideEvents Applied="function(s, e) { grid.ApplyFilter(e.filterExpression);}" />
</dx:ASPxFilterControl>
...
<dx:ASPxButton runat="server" ID="btnApply" Text="Apply" AutoPostBack="false" UseSubmitBehavior="false">
    <ClientSideEvents Click="function() { filter.Apply(); }" />
</dx:ASPxButton>
...
<dx:ASPxGridView ID="grid" ClientInstanceName="grid" runat="server" DataSourceID="AccessDataSource1"
    KeyFieldName="CategoryID" Width="100%" AutoGenerateColumns="False">
    <Columns>
        <dx:GridViewDataTextColumn FieldName="CategoryID" VisibleIndex="0" />
        <dx:GridViewDataTextColumn FieldName="CategoryName" VisibleIndex="1" />
        <dx:GridViewDataTextColumn FieldName="Description" VisibleIndex="2" />
    </Columns>
</dx:ASPxGridView>

<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/nwind.mdb"
    SelectCommand="SELECT * FROM [Categories]" />
csharp
using DevExpress.Data.Filtering.Helpers;
using DevExpress.Web.ASPxEditors;

public partial class _Default : System.Web.UI.Page {
    static List<ClauseType> AllowedOperations {
        get {
            return new List<ClauseType>(new ClauseType[6]{ 
                    ClauseType.Equals, ClauseType.DoesNotEqual,
                    ClauseType.BeginsWith, ClauseType.EndsWith,
                    ClauseType.Contains, ClauseType.DoesNotContain
                });
        }
    }
    protected void Page_Load(object sender, EventArgs e) {
        if(!IsPostBack) {
            filter.FilterExpression = grid.FilterExpression = "[CategoryName] Like '%ns%'";
        }
    }
    protected void filter_FilterOperationVisibility(object sender, FilterControlOperationVisibilityEventArgs e) {
        if(e.PropertyInfo.PropertyName == "CategoryName" || e.PropertyInfo.PropertyName == "Description") {
            e.Visible = AllowedOperations.Contains(e.Operation);
        }
    }
}
vb
Imports DevExpress.Data.Filtering.Helpers
Imports DevExpress.Web.ASPxEditors

Partial Public Class _Default
    Inherits System.Web.UI.Page
    Private Shared ReadOnly Property AllowedTypes() As List(Of ClauseType)
        Get
            Return New List(Of ClauseType)(New ClauseType(5){ ClauseType.Equals, ClauseType.DoesNotEqual, ClauseType.BeginsWith, ClauseType.EndsWith, ClauseType.Contains, ClauseType.DoesNotContain })
        End Get
    End Property
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        If (Not IsPostBack) Then
            grid.FilterExpression = "[CategoryName] Like '%ns%'"
            filter.FilterExpression = grid.FilterExpression
        End If
    End Sub
    Protected Sub filter_FilterOperationVisibility(ByVal sender As Object, ByVal e As FilterControlOperationVisibilityEventArgs)
        If e.PropertyInfo.PropertyName = "CategoryName" OrElse e.PropertyInfo.PropertyName = "Description" Then
            e.Visible = AllowedTypes.Contains(e.Operation)
        End If
    End Sub
End Class

See Also

Filter Control

ASPxFilterControlBase Class

ASPxFilterControlBase Members

DevExpress.Web Namespace