aspnet-devexpress-dot-web-dot-aspxfiltercontrolbase-63b8f342.md
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
public event FilterControlOperationVisibilityEventHandler OperationVisibility
Public Event OperationVisibility As FilterControlOperationVisibilityEventHandler
The OperationVisibility event's data class is FilterControlOperationVisibilityEventArgs. The following properties provide information specific to this event:
| Property | Description |
|---|---|
| CustomFunctionName | Gets a custom filter function name. |
| FunctionType | Gets a function-based comparison operator type. |
| Operation | Gets the comparison operator type. |
| PropertyInfo | Gets the filterable property of the filter expression. |
| Visible | Gets or sets a value specifying whether the filter operation is visible. |
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.
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.
<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]" />
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);
}
}
}
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