2013-09-10 5 views
1

Кто-нибудь знает, как реализовать серверную часть serverGrouping в ASP.NET MVC 4 - с использованием оболочек MVC, предоставляемых Telerik?Kendo Grid, ASP.NET Web API и serverGrouping

У меня есть serverPaging, serverSorting и serverFiltering, но не имеют понятия о том, как структурировать и отправлять сгруппированные данные.

Вот код, в котором я работаю для отправки постраничных, отсортированных и отфильтрованных данных.

public class TicketGridController : ApiController 
{ 
    private SupplierDataContext db = new SupplierDataContext(); 
    HttpRequest request = HttpContext.Current.Request; 

    // GET api/Tickets 
    public Response Get() 
    { 
     int skip = request["skip"] == null ? 0 : int.Parse(request["skip"]); 
     int take = request["take"] == null ? 10 : int.Parse(request["take"]); 
     string group = request["group"] == null ? "" : request["group"]; 
     string status = request["filter[filters][0][value]"] == null ? "" : request["filter[filters][0][value]"]; 
     string sort = request["sort[0][field]"] == null ? "" : request["sort[0][field]"]; 
     bool sortUp = request["sort[0][dir]"] == null ? true : (request["sort[0][dir]"] == "asc" ? true : false); 

     var Tickets = db.Tickets.ToList(); 
     if (!string.IsNullOrEmpty(status)) { 
      Tickets = Tickets.Where(t => t.Issues.Where(i => i.Status == 1).Count() > 0).ToList(); 
     } 

     switch (sort) { 
      case "TicketID": 
       if (sortUp) Tickets = Tickets.OrderBy(t => t.TicketID).ToList(); 
       else Tickets = Tickets.OrderByDescending(t => t.TicketID).ToList(); 
       break; 
      case "TicketName": 
       if (sortUp) Tickets = Tickets.OrderBy(t => t.TicketName).ToList(); 
       else Tickets = Tickets.OrderByDescending(t => t.TicketName).ToList(); 
       break; 
      case "Status": 
       if (sortUp) Tickets = Tickets.OrderBy(t => t.Status).ToList(); 
       else Tickets = Tickets.OrderByDescending(t => t.Status).ToList(); 
       break; 
      default: 
       Tickets = Tickets.OrderByDescending(t => t.DateModified).ToList(); 
       break; 
     } 

     // --------------------------------- 
     // ADD GROUPING SOMEHOW!? 
     // --------------------------------- 

     List<TicketDisplayObject> ts = new List<TicketDisplayObject>(); 
     foreach (Ticket t in Tickets.Skip(skip).Take(take)) 
     { 
      ts.Add(new TicketDisplayObject(t)); 
     } 
     return new Response(ts.ToArray(), Tickets.Count()); 
    } 

    protected override void Dispose(bool disposing) 
    { 
     db.Dispose(); 
     base.Dispose(disposing); 
    } 
} 

Кто-нибудь знает, как реализовать бит группировки?

Заранее благодарен!

ответ

1

проект См KendoGridbinderEx, который доступен на github или nuget

Пожалуйста, дайте мне знать, если это реализует то, что вам нужно.