ASPxFilterControlBase.OperationVisibility Event
Enables you to hide/show the operations for filterable properties within the control.
Namespace: DevExpress.Web
Assembly:
DevExpress.Web.v20.2.dll
NuGet Package:
DevExpress.Web
Declaration
public event FilterControlOperationVisibilityEventHandler OperationVisibility
Public Event OperationVisibility As FilterControlOperationVisibilityEventHandler
Event Data
Property |
Description |
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.
Example
Starting with v2010 vol 1. it is possible to 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.
View Example: https://github.com/DevExpress-Examples/how-to-hide-filter-operation-items-e2218
<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
<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]" />
See Also