Dojo网格嵌套json

Dojo网格嵌套json,json,dojo,grid,Json,Dojo,Grid,我想要一个dojo网格,它连接到输出以下json的服务器url: {标识符:“id” 项目:[{id:“1”,姓名:“约翰”,大学:{姓名:“XXX”,地址:“YYY”}] 基本上我有一个嵌套的json,我想在网格中将大学名称和大学地址表示为单独的列 我尝试使用dojox.grid.DataGrid对象并创建网格布局,但不知道如何引用嵌套的elments和university.name和university.address似乎不起作用。 我正在使用Dojo1.6.1 有人有什么建议吗 这是我使用

我想要一个dojo网格,它连接到输出以下json的服务器url: {标识符:“id” 项目:[{id:“1”,姓名:“约翰”,大学:{姓名:“XXX”,地址:“YYY”}]

基本上我有一个嵌套的json,我想在网格中将大学名称和大学地址表示为单独的列

我尝试使用dojox.grid.DataGrid对象并创建网格布局,但不知道如何引用嵌套的elments和university.name和university.address似乎不起作用。 我正在使用Dojo1.6.1

有人有什么建议吗

这是我使用的js代码:

    dojo.require("dojox.grid.DataGrid");
    dojo.require("dojo.data.ItemFileReadStore");

    dojo.addOnLoad(function(){
    // our test data store for this example:
    var jsonStore = new dojo.data.ItemFileReadStore({
        url: '/MainDeployer/ajax/users/get.json'
    });

    var layoutUsers = [
       [{
               field: "name",
               name: "Name",
               width: 10
           },
           {
               field: "university.name",
               name: "University Name",
               width: 10
           },
           {
               field: "university.address",
               name: "University Address",
               width: 'auto'
           }]];

    // create a new grid:
    var grid = new dojox.grid.DataGrid({
        query: {},
        store: jsonStore,
        clientSort: true,
        rowSelector: '20px',
        structure: layoutUsers
    },
    document.createElement('div'));

    dojo.byId("usersTable").appendChild(grid.domNode);

    grid.startup();
});
谢谢,
Cristian

您使用的是哪种类型的存储?请查看dojo.data.ItemFileReadStore文档,这里有一个类似您的情况的示例:

这将有助于通过对“fetch”方法的一次调用获取所有项。如果由于json结构不同,由于某些原因它无法工作,您可以继续使用ItemFileReadStore,并创建一个函数来循环json中的所有对象,并使用loadItem方法以这种方式逐个添加项(虽然不漂亮,但很管用):


您使用的是哪种类型的存储?请查看dojo.data.ItemFileReadStore文档,这里有一个类似您的情况的示例:

这将有助于通过对“fetch”方法的一次调用获取所有项。如果由于json结构不同,由于某些原因它无法工作,您可以继续使用ItemFileReadStore,并创建一个函数来循环json中的所有对象,并使用loadItem方法以这种方式逐个添加项(虽然不漂亮,但很管用):

se格式化程序:

    var nameFormatter = function(value, rowIdx){
        return value.name;
    };
    var addressFormatter = function(value, rowIdx){
        return value.address;
    };

    var layoutUsers = [
       [{
               field: "name",
               name: "Name",
               width: 10
           },
           {
               field: "university",
               name: "University Name",
               width: 10,
               formatter: nameFormatter 
           },
           {
               field: "university",
               name: "University Address",
               width: 'auto',
               formatter: addressFormatter 
           }]];
se格式化程序:

    var nameFormatter = function(value, rowIdx){
        return value.name;
    };
    var addressFormatter = function(value, rowIdx){
        return value.address;
    };

    var layoutUsers = [
       [{
               field: "name",
               name: "Name",
               width: 10
           },
           {
               field: "university",
               name: "University Name",
               width: 10,
               formatter: nameFormatter 
           },
           {
               field: "university",
               name: "University Address",
               width: 'auto',
               formatter: addressFormatter 
           }]];

我在文档中读到了这一部分,并尝试使用我第一篇文章中给定json结构的ItemFileReadStore,但我不工作(在网格中给出了一个“对不起,遇到了错误”)。我认为我的主要问题是,在gridlayout中,我应该给出一个字段值,以映射嵌套的元素,我以“university.name”的形式进行映射,但我不认为这是映射它们的方法它确实应该起作用。你能分离出代码的这一部分并发布它吗?在开始的文章中添加了它。明白了。由于没有适用于这种情况的工作示例,我通过创建一个Xhret并逐个读取对象,然后使用loadI将它们添加到存储中,解决了类似的问题tem方法非常好。请在我答案的左侧打勾,这样它就不会出现在未答复列表中。我阅读了文档中的该部分,并尝试使用我第一篇文章中给定json结构的ItemFileReadStore,但我无法工作(在网格中给出了“对不起,遇到错误”).我的主要问题是,在gridlayout中,我应该给出一个字段值,以映射嵌套的元素,我以“university.name”的形式进行映射,但我不认为这是映射它们的方法它确实应该起作用。你能分离出代码的这一部分并发布它吗?在开始的文章中添加了它。明白了。由于没有适用于这种情况的工作示例,我通过创建一个Xhret并逐个读取对象,然后使用loadI将它们添加到存储中,解决了类似的问题非常好。请在我的答案的左边打勾,这样它就不会出现在未回答的列表中了