Как сделать группировку серверов с использованием сетки кендо? Какой ожидаемый формат JSON?

Я пытаюсь использовать группировку серверов в сетке.

Я не уверен в разнице между "schema.groups" и "schema.data". Я понимаю, что я должен использовать shema.data, когда данные не сгруппированы, и schema.groups, когда данные сгруппированы. Я попытался привести очень простой пример с ajax-запросом к файлу data.json для имитации ответа сервера. Просто поместите файлы testGrouping.html и data.json в корень любого http-сервера, чтобы воспроизвести мою проблему.

Когда я запускаю данный код, у меня нет ошибки, но сетка остается пустой. Я ожидаю, что сетка покажет 1 группу с 5 строками без какой-либо совокупности.

Не могли бы вы помочь найти, что не так в данном примере?

Спасибо за помощь.

Вот HTML-страница, которую я использую (testGrouping.html):

<!DOCTYPE html>
<html>
<head>
<style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style>
<title></title>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2017.1.223/styles/kendo.common-material.min.css" />
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2017.1.223/styles/kendo.material.min.css" />
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2017.1.223/styles/kendo.material.mobile.min.css" />

<script src="https://kendo.cdn.telerik.com/2017.1.223/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2017.1.223/js/kendo.all.min.js">    </script>
</head>
<body>

    <div id="example">
        <div id="grid"></div>
        <script>
            $(document).ready(function() {
                $("#grid").kendoGrid({
                    dataSource: {
                        transport: {
                            read: {
                                url: "data.json?x=1",
                                cache:false,
                                type: 'GET',
                                dataType: 'json',
                                contentType: "application/json"
                            },
                        },
                        error: function(e) {
                          console.log(e.errors); // displays "Invalid query"
                        },
                        schema:{
                          // "data":"titi",
                          "groups":"groups",
                          "total": "total",
                          "model": {
                            "fields": [
                              {
                                "field": "m2"
                              },
                              {
                                "field": "m"
                              },                                  
                            ]
                          }
                        },
                        pageSize: 7
                    },
                    sortable: true,
                    scrollable: false,                        
                    pageable: true,
                    serverPaging: true,
                    serverAggregates: true,
                    serverFiltering: true,
                    serverGrouping: true,
                    serverSorting: true,
                    columns: [
                      {
                        "field": "m2",
                        "title": "Group odd / even"
                      },
                      {
                        "field": "m",
                        "title": "Month"
                      }
                    ]
                });
            });
        </script>
    </div>

И данные, используемые здесь для имитации ответа сервера (data.json):

{
"total":1,
"groups":
 [ {
  "aggregates": [],
  "value": "rrr",
  "hasSubgroups": false,
  "field": "m2",      
  "items": [
    {
      "m2": "rrr",
      "m": 1
    },
    {
      "m2": "rrr",
      "m": 1
    },
    {
      "m2": "rrr",
      "m": 1
    },
    {
      "m2": "rrr",
      "m": 1
    },
    {
      "m2": "rrr",
      "m": 1
    }
  ],
  "aggregates": {}
}]
}

0 ответов

Я боролся с этим в течение нескольких дней, но в итоге я заработал, используя https://docs.telerik.com/kendo-ui/knowledge-base/grid-format-of-the-response-with-server-grouping и https://docs.telerik.com/kendo-ui/framework/datasource/basic-usage для справки

Установите свойство schema.groups источника данных для функции, возвращающей свойство ответа, содержащее группы

schema: {
   groups: function (e) {
      return e.Groups;
   }
}

Верните следующий формат с вашего сервера

Groups = [
   {
      field: "GroupField",
      value: "Group1",
      items: [],
      aggregates: {},
      hasSubgroup: false
   },
   {
      field: "GroupField",
      value: "Group2",
      items: [],
      aggregates: {},
      hasSubgroup: false
   }
]
Другие вопросы по тегам