首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

Ext获取treepanel的root的json字符串,该如何解决

2013-04-20 
Ext获取treepanel的root的json字符串就一个很点单的界面,var tree new Ext.tree.TreePanel({id:tree,h

Ext获取treepanel的root的json字符串
就一个很点单的界面,


var tree = new Ext.tree.TreePanel({
id:'tree',
        height: 300,
        width: 400,
        useArrows:true,
        autoScroll:true,
        animate:true,
        enableDD:true,
        containerScroll: true,
        rootVisible: false,
        frame: true,
        root: {
            nodeType: 'async'
        },
        
        dataUrl: 'OutputTree',
        
        listeners: {
            'checkchange': function(node, checked){
                if(checked){
                    node.getUI().addClass('complete');
                }else{
                    node.getUI().removeClass('complete');
                }
            }
        }
    });

    tree.getRootNode().expand(true);
    
var win2=new Ext.Window({
title:"选择指标",
id:'win2',
width:414,
height:375,
layout:"absolute",
tools:tools,
items:[
tree,
{
xtype:"button",
text:"确定",
x:300,
y:310,
handler:function(){
alert(Ext.getCmp('tree').root);
var str = Ext.util.JSON.encode(Ext.getCmp('tree').root);
alert(str);
}
},
{
xtype:"button",
text:"取消",
x:350,
y:310,
handler:function(){
Ext.getCmp('win2').destroy();
}
}
]
});
win2.show();

我现在想点击确定按钮,弹出个alert,并且显示treepanel的root的json字符串。就是他的dataURL获得的东西。
但是我用的代码:var str = Ext.util.JSON.encode(Ext.getCmp('tree').root);
alert(str);报错,说堆栈溢出!有什么解决方法或者有什么其他方法来实现这个功能吗?
求高手赐教。
[解决办法]
好像不行,会循环调用导致堆栈溢出。

你可以通过getStore得到store,然后遍历store来获取所有数据行

var store=Ext.getCmp('tree').getStore();
var models=store.getRange()//得到Ext.data.Model[]数组
for(i=0;i<models.length;i++)
alert(models[i].getData())

[解决办法]
root里面是一个ExtJS 数据对象并不是JSON对象,而你用的Ext.util.JSON.encode是专门针对转换JSON数据格式和String时使用。
试试这个:GOODLUCK

var str =Ext.util.JSON.encode(Ext.getCmp('tree').root.attributes);
alert(str);


热点排行