Skip to main content
Tab

ASPxGridView.FindFilterCellTemplateControl(GridViewColumn, String) Method

Searches for the server control contained within the specified filter row cell template.

Namespace: DevExpress.Web

Assembly: DevExpress.Web.v24.2.dll

NuGet Package: DevExpress.Web

#Declaration

public Control FindFilterCellTemplateControl(
    GridViewColumn column,
    string id
)

#Parameters

Name Type Description
column GridViewColumn

A GridViewColumn descendant that is a column within the ASPxGridView.

id String

A String value that identifies the control within the specified filter cell.

#Returns

Type Description
Control

A Control object that is the control contained within the specified filter cell’s template.

#Example

In some cases, when the default filter row editor’s functionality is not enough, you can provide custom filter cell content using the GridViewColumn.FilterTemplate.

In this example, a default cell editor is replaced with the ASPxGridLookup control. The control’s ASPxClientEdit.ValueChanged client-side event is used to send a callback to the server side, invoking the grid’s ASPxGridView.CustomCallback event. In the event handler, a filter criteria is created and applied to the grid using the ASPxGridView.ApplyFilterToColumn method.

View Example

<head runat="server">
    <title></title>
    <script type="text/javascript">
        function Lookup_ValueChanged(s, e) {
            grid.PerformCallback("FilterByCategories");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div style="max-width: 960px">
        <dx:ASPxGridView runat="server" ID="Grid" AutoGenerateColumns="False" DataSourceID="ProductsDataSource"
            ClientInstanceName="grid" OnCustomCallback="Grid_CustomCallback" EnableViewState="false">
            <Columns>
                <dx:GridViewDataTextColumn FieldName="CategoryName">
                    <FilterTemplate>
                        <dx:ASPxGridLookup runat="server" ID="Lookup" AutoGenerateColumns="False" DataSourceID="CategoriesDataSource"
                            KeyFieldName="CategoryID" SelectionMode="Multiple" TextFormatString="{0}">
                            <Columns>
                                <dx:GridViewCommandColumn ShowSelectCheckbox="true" />
                                <dx:GridViewDataTextColumn FieldName="CategoryName" />
                                <dx:GridViewDataBinaryImageColumn FieldName="Picture">
                                    <PropertiesBinaryImage ImageWidth="48" />
                                </dx:GridViewDataBinaryImageColumn>
                            </Columns>
                            <ClientSideEvents ValueChanged="Lookup_ValueChanged" />
                        </dx:ASPxGridLookup>
                    </FilterTemplate>
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn FieldName="ProductName" />
                <dx:GridViewDataTextColumn FieldName="ProductSales" />
                <dx:GridViewDataDateColumn FieldName="ShippedDate" />
            </Columns>
            <Settings ShowFilterRow="true" />
        </dx:ASPxGridView>
        <asp:AccessDataSource ID="ProductsDataSource" runat="server" DataFile="~/App_Data/nwind.mdb"
            SelectCommand="SELECT * FROM [ProductReports]" />
        <asp:AccessDataSource ID="CategoriesDataSource" runat="server" DataFile="~/App_Data/nwind.mdb"
            SelectCommand="SELECT * FROM [Categories]" />
        </div>
    </form>
</body>
</html>
using DevExpress.Data.Filtering;
using DevExpress.Web;

public partial class _Default : System.Web.UI.Page {
    protected void Grid_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e) {
        if(e.Parameters == "FilterByCategories") {
            var column = Grid.DataColumns["CategoryName"];
            var lookup = Grid.FindFilterCellTemplateControl(column, "Lookup") as ASPxGridLookup;
            if(lookup != null)
                Grid.ApplyFilterToColumn(column, CreateCriteria(lookup, column.FieldName));
        }
    }

    protected CriteriaOperator CreateCriteria(ASPxGridLookup gridLookup, string fieldName) {
        var values = gridLookup.GridView.GetSelectedFieldValues(fieldName);
        return values.Count > 0 ? new InOperator(fieldName, values) : null;
    }
}
See Also