New to Telerik UI for ASP.NET MVCStart a free 30-day trial

Get All Grid Filters Recursively and Modify Them on the Server

Environment

ProductTelerik UI for ASP.NET MVC Grid
Product version2025.1.227

Description

How can I access all requested filters recursively and modify them on the server?

Solution

You can achieve this requirement using the following implementation:

  1. Configure the Grid for Ajax data binding.

    Razor
    @(Html.Kendo().Grid<Telerik.Examples.Mvc.Areas.GridModifyFiltersOnTheServer.Models.Order>()
        .Name("grid")
        .Filterable()
        .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("Read", "Home"))
            ... // Additional options.
        )
        ... // Additional configuration.
    )
  2. Retrieve the requested filters through the DataSourceRequest object and adjust filter criteria on the server side before processing the request.

    C#
    public ActionResult Read([DataSourceRequest] DataSourceRequest request)
    {
        ModifyFilters(request.Filters);
    
        return Json(OrderRepository.GetAll().ToDataSourceResult(request));
    }
    
    private void ModifyFilters(IEnumerable<IFilterDescriptor> filters)
    {
        if (filters.Any())
        {
            foreach (var filter in filters)
            {
                var descriptor = filter as FilterDescriptor;
                if (descriptor != null && descriptor.Member == "OrderDate")
                {
                    descriptor.Member = "OrderDate.Date";
                }
                else if (filter is CompositeFilterDescriptor)
                {
                    ModifyFilters(((CompositeFilterDescriptor)filter).FilterDescriptors);
                }
            }
        }
    }

To see the complete example, refer to the project on how to access all Grid filters and modify them on the server based on your requirements.

More ASP.NET MVC Grid Resources

See Also