В Kendo Grid не отображаются данные с правильным возвращением json - PullRequest
1 голос
/ 10 мая 2019

Моя сетка кендо не отображает данные после успешного вызова веб-метода и просмотра данных, возвращаемых в запросе ajax.

$(document).ready(function () {
              var filterSource = new kendo.data.DataSource({
                  transport: {
                      read: function (options) {
                          $.ajax({
                              type: "GET",
                              url: "DoJo.aspx/GetProjects",
                              contentType: "application/json; charset=utf-8",
                              dataType: "json",
                              success: function (msg) {
                                  // msg.d has the json data
                              }
                          });
                      }

                  },
                  schema: {
                      model: {
                          fields: {
                              ProjNum: { type: "string" },
                              Stat: { type: "string" }
                          }
                      },
                      data: "d"
                  },
                  change: function (e) {
                      // e.items is empty
                  }
              });


              $("#grid").kendoGrid({
                  dataSource: filterSource,
                  columns: [
                      {
                          field: "ProjNum", title: "Project Number", width: "130px", filterable: {
                              multi: true,
                              dataSource: filterSource
                          }
                      },
                      {
                          field: "Stat", title: "Status", filterable: {
                              multi: true,
                              dataSource: filterSource
                          }
                      }
                  ]
              }); 
          })

JSON ниже представлен в формате массива.

[{"ProjNum":"12345","Stat":null,"ProjTitle":"Test Title","ClientName":"Test Client","ClientContactName":"Test Name","ClientFacilityLocation":"Test Location","SourceOfContact":"Test Contact","ProjManager":"Test Manager","Department":"Test Department"}]

Почему обратный вызов change возвращает пустой e.items? Если я удаляю данные: «d» возвращает e.Item с данными json.

1 Ответ

1 голос
/ 10 мая 2019

Когда вы устанавливаете dataSource.transport.read для функции и сами вызываете ajax-вызов, вам нужно передать результат (или ошибку) обратно в источник данных, например:

          var filterSource = new kendo.data.DataSource({
              transport: {
                  read: function (options) {
                      $.ajax({
                          type: "GET",
                          url: "DoJo.aspx/GetProjects",
                          contentType: "application/json; charset=utf-8",
                          dataType: "json",
                          success: function (msg) {
                              // msg.d has the json data
                              // notify the data source that the request succeeded
                              options.success(msg);
                          },
                          error: function(msg) {
                              // notify the data source that the request failed
                              options.error(msg);
                          }
                      });
                  }
              },
              schema: {
                  model: {
                      fields: {
                          ProjNum: { type: "string" },
                          Stat: { type: "string" }
                      }
                  },
                  data: "d"
              },
              change: function (e) {
                  // e.items is empty
              }
          });

См. документация для получения дополнительной информации.

...