0

我有一个网格,我正在创建一个格式如下的 JSON 数据源:

[{"user":{"username":"foo","url":"bar"}},
   [{"product":{"name":"banana","price":"85"}},
    {"product":{"name":"peach","price":"66"}},
    {"product":{"name":"strawberry","price":"78"}}
   ]
]

但我不知道如何告诉数据网格使用产品的内容来填充数据网格。这是我的数据网格代码:

        <script>
        require(["dojo/store/JsonRest"], function (JsonRest) {
            myStore = new JsonRest({ target: 'myurl', handleAs: 'json'
            });
        });

        require(["dojox/grid/DataGrid", "dojo/data/ObjectStore", "dojo/domReady!"
        ], function (DataGrid, ObjectStore) {
            grid = new DataGrid({
                store: dataStore = new ObjectStore({ objectStore: myStore }),
                structure: [
                    { name: "Procuct", field: "name", width: "200px" }
                ]
            }, "grid3");

            grid.startup();

        });
    </script>
    <div id="grid3"></div>

我没有收到任何错误,但我看不到网格被填充。

这是一个与THIS类似的问题,但数据结构有点不同。

4

3 回答 3

0

我认为这与您的 json 结构有关。jsonArray 的第一部分是一个对象,第二部分是一个数组:

[对象,ArrayOfProducts]

如果将数据隐藏在数组中的数组中,然后在属性产品中,DataGrid 应该如何找到必要的数据。尝试通过 json 传递一些简单的东西,例如:

 [{"name":"banana","price":"85"},
  {"name":"peach","price":"66"},
  {"name":"strawberry","price":"78"}]
于 2013-04-14T17:36:28.447 回答
0

您是否尝试过 grid.renderArray(dataStore) 用内容填充网格?

于 2013-12-24T05:11:44.327 回答
0

一种选择是在调用 dataStore.query() 之前将新属性附加到 json 对象。这可以通过dojo/aspect来完成。有关其他示例,请参阅文章

aspect.before(dataStore, "query", function(items) {
    items.forEach(function(item) { 
        //Do something here. I'll combine two properties.
        item.newProperty = item.propertyValueA + "-" item.propertyValueB;
            return item;
        });
    return items;
});

当调用 dataStore.query() 时,上面的函数被调用。这会导致向 json 对象添加一个新属性。在上面的示例中,newProperty 是 propertyValueA 和 propertyValueB 的串联。

这可能允许您根据需要操作 json。

于 2014-01-04T22:11:30.907 回答