我是Dojo的新手,在我和我的合作伙伴开始一个新项目之前,我正在尝试理解一些非常基本的概念。我已经成功地使用ItemFileWriteStore将从ajax请求返回的数据放入DataGrid中,但我想使用新的内存存储。我使用ObjectStore适配器包装内存存储,并在网格中填充数据。
有一件事让我很担心。在我运行的示例代码中,我用来填充网格的JSON对象中有一些嵌套节点。这是他们在dojo文档中使用的国家/地区JSON对象之一。下面是该对象的一小段代码:
'items': [
{ 'name':'Africa', 'type':'continent', children:[
    { 'name':'Egypt', 'type':'country' },
    { 'name':'Kenya', 'type':'country', children:[
        { 'name':'Nairobi', 'type':'city' },
        { 'name':'Mombasa', 'type':'city' } ]
    },
    { 'name':'Sudan', 'type':'country', 'children':
        { 'name':'Khartoum', 'type':'city' }
    } ]
   },
 ]在深度实例化中,我发送了一个查询,然后将qureyOptions设置为{ DataGrid :true},如下所示:
var grid = new DataGrid({
    style: "width: 500px; height: 300px;",
    store: this._geoStore,
    structure: layoutGeo,
    rowSelector: '20px',
    columnReordering: true,
    query: {},
    queryOptions: { deep: true },
    rowsPerPage: 20
}, document.createElement("div"));当我使用旧的ItemFileWriteStore时,它工作得很好,所有嵌套的数据基本上都被展平并放置在网格中,正如我所期望的那样。但是,当我将其切换到包装在ObjectStore适配器中的内存存储时,网格中显示的唯一数据是数据对象的最顶层父级。在示例数据的情况下,只显示与非洲相关的数据,而不显示其子数据。因此,在使用内存存储时,queryOptions {deep:true}语句似乎没有影响。
有没有办法使用包装在ObjectStore中的内存存储将JSON对象中的嵌套数据放到数据网格中?我本以为包装器类已经解决了这个问题,而且可能会,但我不知道如何修复它。
对于所有提供帮助的人,非常感谢您抽出时间并愿意分享您的专业知识。我真的研究了dojo文档和web很长一段时间,试图弄清楚这些东西。我担心我可能掩盖了一些显而易见的东西,希望你们都能帮助我。
发布于 2012-03-31 02:00:24
我在http://swingingcode.blogspot.com/2012/03/dojo-implementing-viewmodelstore.html上写了关于商店变化的博客
这里的代码使用了新的store对象,但从data api引入了引用表示法。所有对象都将被认为是顶级对象,并且都是可查询的。我没有实现拉出嵌套对象的逻辑。
https://stackoverflow.com/questions/9947778
复制相似问题