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

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