ExtJs4 Json TreeStore? [英] ExtJs4 Json TreeStore?

查看:93
本文介绍了ExtJs4 Json TreeStore?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将ExtJs3应用程序迁移到ExtJs4。

在ExtJs3中,我有一个树形网格,它有一个加载器来加载树数据,如下所示:

  loader:new Ext.tree.TreeLoader({
dataUrl:'Department / DepartmentTree',
nestedRoot:'Data.items'
})

所以我试图在ExtJs4中创建一个treeStore,如下所示:

  var store = Ext.create('Ext.data.TreeStore',{
model:'DepartmentTreeModel',
folderSort:
代理:{
type:'ajax',
url:'Department / DepartmentTree',
reader:{
type:'json',
root:'Data.items'
}
}
});

当我上面的商店调用加载功能时,我收到一个错误不能读取未定义的属性items



JSON响应如下所示:

  {
数据:{
__type:ListWrapperOfDepartmentTreeNodewnEzJCii:#PortalMvc.Global.Classlibrary.Model.Ui.JSONWrappers,
items:[{
ActualHeadcount:0,
Headcount:0,
Leavers:0,
ParentId:~~ b $ bStarters:0,
children:[{
ActualHeadcount:0,
Headcount:0,
Leavers:0,
ParentId:!#,
Starters:0,
children:[{
ActualHeadcount:0,
Headcount 0,
Leavers:0,
ParentId:* w,
Starters:0,
children:[{
ActualHeadcount:0,
Headcount:0,
Leavers:0,
ParentId:* z,
Starters:0,
children:[],
iconCls:admin_button,
id:* {,
leaf:true,
文本:Parking1_subtree1
}]
}]
}]
}]
}
}


解决方案

它希望为每组子节点重复根。所以对于孩子,它也试图读取Data.items。



如果你不能改变数据结构,根也可以是一个函数喜欢:

  root:function(o){
if(o.Data){
return o .Data.items;
} else {
return o.children;
}
}


I am migrating my ExtJs3 application to ExtJs4.
In ExtJs3 I had a tree grid which had a loader to load the tree data, like below:

loader: new Ext.tree.TreeLoader({ 
            dataUrl: 'Department/DepartmentTree', 
            nestedRoot: 'Data.items'
    })

So I am trying to create a treeStore in ExtJs4 like below:

   var store = Ext.create('Ext.data.TreeStore', {
        model: 'DepartmentTreeModel',
        folderSort: true,
        proxy: {
            type: 'ajax',
            url: 'Department/DepartmentTree',
            reader: {
                type: 'json',
                root: 'Data.items'
            }
        }
    });

I get an error when I call the load function on the above store Cannot read property 'items' of undefined.

The JSON response looks like this:

    {
"Data":{
    "__type":"ListWrapperOfDepartmentTreeNodewnEzJCii:#PortalMvc.Global.Classlibrary.Model.Ui.JSONWrappers",
    "items":[{
        "ActualHeadcount":0,
        "Headcount":0,
        "Leavers":0,
        "ParentId":"~~",
        "Starters":0,
        "children":[{
            "ActualHeadcount":0,
            "Headcount":0,
            "Leavers":0,
            "ParentId":"!#",
            "Starters":0,
            "children":[{
                "ActualHeadcount":0,
                "Headcount":0,
                "Leavers":0,
                "ParentId":"*w",
                "Starters":0,
                "children":[{
                    "ActualHeadcount":0,
                    "Headcount":0,
                    "Leavers":0,
                    "ParentId":"*z",
                    "Starters":0,
                    "children":[],
                    "iconCls":"admin_button",
                    "id":"*{",
                    "leaf":true,
                    "text":"Parking1_subtree1"
                }]
            }]
        }]
    }]
  }
}

解决方案

It expects the root to be repeated for each set of child nodes. So for "children" it's also trying to read "Data.items".

If you can't alter the data structure, the root can also be a function, something like:

root: function(o) {
    if (o.Data) {
        return o.Data.items;
    } else {
        return o.children;
    }
}

这篇关于ExtJs4 Json TreeStore?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆