Thursday, June 21, 2012

Custom Telerik MVC Grid Ajax Binding

Here's a code block demonstrating the manual sort/filter/paging of an ajax-bound Telerik MVC Grid request--it's handy for hook-ins of various flavors.

public ActionResult CustomBindingResult(IEnumerable items)
{
    int page = int.Parse(Request["page"]);
    int size = int.Parse(Request["size"]);
    string orderBy = Request["orderBy"];
    string groupBy = Request["groupBy"];
    string filter = Request["filter"];

    var list = items.ToList();
    var filtered = (IEnumerable)list.AsQueryable().ToGridModel(1, int.MaxValue, null, null, filter).Data;
    var results = (IEnumerable)filtered.AsQueryable().ToGridModel(page, size, orderBy, groupBy, null).Data;
    var data = results.Select(result => Activator.CreateInstance(typeof(TDestination), result));
    var model = new GridModel { Data = data, Total = filtered.Count() };
    return View(model);
}

Will need the Telerik.Web.Mvc.Extensions namespace.

No comments:

Post a Comment