1

Telerik が提供する MVC ラッパーを使用せずに、ASP.NET MVC 4 で 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);
    }
}

グループ化ビットを実装する方法を知っている人はいますか?

前もって感謝します!

4

1 に答える 1