JsGrid将嵌套对象加载到表中

我正在Django开发一个web项目并使用jsGrid。 我遇到了问题,无法找到解决方案。

我有一个嵌套的JSON数据,它是通过组合多个数据库表记录创建的。 这是我的JSON:

{ "count":3, "results":[ { "personnel":{ "name":"david", "age":34 }, "company":"IBM" }, { "personnel":{ "name":"john", "age":28 }, "company":"Google" }, { "personnel":{ "name":"Yuri", "age":42 }, "company":"Microsoft" } ] } 

这是我的js脚本:

 function () { $("#personnelsgrid").jsGrid({ height: "500px", width: "100%", filtering: !0, editing: !0, sorting: !0, paging: !0, autoload: !0, pageSize: 15, pageButtonCount: 5, deleteConfirm: "Do you really want to delete the client?", controller: { loadData: function (filter) { return $.ajax({ type: "GET", url: "/get_personnels", dataType: "json", data: filter }); } }, fields: [ {name: "personnel.name", type: "text", width: 50}, {name: "personnel.age", type: "number", width: 50, filtering: false}, {name: "company", type: "text", width: 200}, ] 

如图所示,我的数据中有一个嵌套对象。 虽然JSON来自服务器,但它没有加载到jsGrid表中。 我该怎么办?

在您的响应中,json数据以response.results格式出现。 因此,在loadData方法中,您需要使用$.Deferred()这样传递results

 loadData: function(filter) { var deferred = $.Deferred(); $.ajax({ type: "GET", url: "/get_personnels", dataType: "json", data: filter, success: function(response) { deferred.resolve(response.results); } }); return deferred.promise(); } 

DEMO

 $("#jsGrid").jsGrid({ width: "100%", height: "auto", filtering: !0, editing: !0, sorting: !0, paging: !0, //for loadData method Need to set auto load true autoload: true, pageSize: 15, pageButtonCount: 5, deleteConfirm: "Do you really want to delete the client?", noDataContent: "Directory is empty", controller: { loadData: function(filter) { var deferred = $.Deferred(); $.ajax({ type: "get", url: "//api.stackexchange.com/2.2/questions?order=desc&sort=activity&tagged=jsgrid&site=stackoverflow", dataType: "json", success: function(response) { deferred.resolve(response.items); } }); return deferred.promise(); } }, fields: [{ name: "owner.display_name", title: 'Name', type: "text", width: 50 }, { name: "title", title: 'Title', type: "text", width: 200 }] });