2

私のコントローラクラスと JsonResult としての GetGroupedLogReport で、次のプロパティを持つリストを返します: Name,State,...

ビューでは、このデータを名前と状態でグループ化する必要があります。コードは次のとおりです。

 function SetReportGrid(pageNumber, extra) {
    $("#gvReportList tbody").html('');
    $('#pagination').html('');
    $.getJSON('/Report/GetGroupedLogReport', {
        fromDate: $('#FromDate').val() || "",
        toDate: $('#ToDate').val() || ""


    }, function (data) {
     //here

        }
                       gvReportList.init();
        });
    });

json データを取得し、名前と状態でグループ化してからグリッドに配置する必要があります。どのようにグループ化できますか?

ここにデータサンプルがあります:

[Object { Id=563,Name="test",State="test"},{Id=543,Name="test2",State="test2"}]
4

2 に答える 2

0

これら 2 つのフィールド (Name と State) でグループ化する必要がある場合は、Alasqlライブラリを使用して行うことができます。

var data = [{ Id:563,Name:"test",State:"test"},{Id:543,Name:"test2",State:"test2"},
            {Id:544,Name:"test2",State:"test2"}, {Id:545,Name:"test2",State:"test2"}];

var res = alasql('SELECT Name, State FROM ? GROUP BY Name, State',[data]);

この例を jsFiddle で試してください。

于 2014-12-21T05:57:10.390 に答える
0

JSON は単なるデータ表記、構造であり、いかなる種類のクエリも提供しません。そのgroup by操作を実現する 1 つの方法は、すべての要素を反復処理し、前のキーを記憶して、変更されているかどうかを比較することです。

var key;
data.forEach(function(obj) {
   var k = obj.Name + ":" + obj.State;
   if (key !== k) {
       key = k;
       console.log("New group " + key);
   }
   console.log(obj.Id);
});

データが正しく順序付けられていない場合は、次のツールを試すことができます:  .NET LINQ から着想を得たLINQ to JavaScript 。select、、、などの クエリを可能whereorderします</p>

結論として、これをサーバー側で行うことができれば、より良い (より速い) 結果が得られる可能性があります。

于 2012-05-06T07:54:00.123 に答える