如何使用Ajax响应加载树面板树存储

时间:2013-08-14 09:19:11

标签: extjs extjs4

如何使用Ajax响应加载树面板树存储。

如何使用Ajax响应json加载树面板树存储。

我可以在本地加载它,即如果我有本地可用的json文件,那么我可以使用treeStore.load()方法通过配置的代理加载它。

但是现在如果我有来自Ajax响应的数据,那我该怎么做呢?

型号:

Ext.define('dimExpModel', {
extend : 'Ext.data.Model',
fields : [
{
    name: 'memberName'
},
{
    name: 'memberCode'
},
{
    name: 'dimension'
}
]
});

商店:

var dimExpStore = Ext.create('Ext.data.TreeStore',{
         storeId:'dimExpStore',
         model:dimExpModel,
         proxy: {
                    type: 'memory',
                    reader: {
                        type: 'json'
                    }
                }

    });

树小组:

{
"xtype": "treepanel",
"height": 250,
"id": "treePanel",
"width":400,
"title":"My Tree Panel",
"store": "dimExpStore",
"displayField":"memberName",
"useArrows":true,
"viewConfig": {

}
};

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

T会这样做:

{
"xtype": "treepanel",
"height": 250,
"id": "treePanel",
"width":400,
"title":"My Tree Panel",
"rootVisible":false,
"store":{autoLoad:true,"fields":[{"name":"id",type:"string"},
{"name":"memberName","type":"string"},{"name":"memberCode","type":"string"},
{"name":"memberCode","type":"dimension"}],
proxy:{type:'ajax',url:'json.php'},root:{text:"Members","id":"src","expanded":true}}
"displayField":"memberName",
"useArrows":true,
"viewConfig": {

}
};

在我的示例json.php中,以正确的形式重新调整所需的json。

修改的 看看root块内的“id”参数。每次当你点击包含子节点的树节点时,你应该在服务器端形成一个正确的响应,这取决于所有这些子节点实际上是id_parent的“id”。

答案 1 :(得分:0)

您需要将商店代理定义为ajax并调用store.load()

var dimExpStore = Ext.create('Ext.data.TreeStore',{
     storeId:'dimExpStore',
     model:dimExpModel,
     proxy: {
        type: 'ajax',
        url : 'users.json',
        reader: {
            type: 'json',
            root: 'records',
            totalProperty:  'recordCount',
            successProperty: 'success'
        }
    }
});