Ext获取treepanel的root的json字符串,该如何解决
Ext获取treepanel的root的json字符串
就一个很点单的界面,
我现在想点击确定按钮,弹出个alert,并且显示treepanel的root的json字符串。就是他的dataURL获得的东西。
但是我用的代码:var str = Ext.util.JSON.encode(Ext.getCmp('tree').root);
alert(str);报错,说堆栈溢出!有什么解决方法或者有什么其他方法来实现这个功能吗?
求高手赐教。
------解决方案--------------------
好像不行,会循环调用导致堆栈溢出。
你可以通过getStore得到store,然后遍历store来获取所有数据行
------解决方案--------------------
root里面是一个ExtJS 数据对象并不是JSON对象,而你用的Ext.util.JSON.encode是专门针对转换JSON数据格式和String时使用。
试试这个:GOODLUCK
就一个很点单的界面,
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);