如何获取Ext tree里面的JSON格式数据?
无双Rama
2010-12-17
我现在有一个树的对象,我想在页面中编辑它,然后当我点击确定按钮的时候,我想把它里面的每个节点的text获取到,以json的格式或者其它的形式也行。有没有直接的方法可以实现呢?请各位大牛指点指点
![]() |
|
无双Rama
2010-12-18
获取一两个属性是可以通过遍历来解决的,但是如果要得到整个tree的json格式数据保存在cookie里面,用于下次再次读取。如何做呢?
|
|
TonyLian
2010-12-20
1)获得tree控件的root属性(或者root的children),是个json对象
2)var str = Ext.util.JSON.encode(myTree.root); 把它转成字符串 3)把str存到cookie里 4)下次从cookie中读出str 5)myTree.root = Ext.util.JSON.decode(str); 原理就是把JSON对象转换(序列化)为字符串,用以保存,用的时候再反序列化回来 同理,保存的DB的一个大字段也可以。 如果保存在XML格式就不用encode/decode了,Ext提供了XMLTreeLoader。 不知道你想要的是不是这个。 |
|
无双Rama
2010-12-22
TonyLian 写道 1)获得tree控件的root属性(或者root的children),是个json对象
2)var str = Ext.util.JSON.encode(myTree.root); 把它转成字符串 3)把str存到cookie里 4)下次从cookie中读出str 5)myTree.root = Ext.util.JSON.decode(str); 原理就是把JSON对象转换(序列化)为字符串,用以保存,用的时候再反序列化回来 同理,保存的DB的一个大字段也可以。 如果保存在XML格式就不用encode/decode了,Ext提供了XMLTreeLoader。 不知道你想要的是不是这个。 谢谢你提供的方法,Ext.util.JSON.encode()确实能够把传入的参数变成一个tree结构的json,用这个方法它报:too much recursion 错 (function(){var h=Ext.util,k=Ext.each,g=..."dblclick",this.onNodeDblClick,this)}});, 不知道如何解决呀 是不是我的 root:{nodeType: 'async',..}造成的呢? |
|
TonyLian
2010-12-27
Ext这东西就得多试。
几乎很少有一次书写的代码就通过的,还是自己多调试一下吧。 一般Tree的Node都用AsyncTreeNode的,再多看看API中的事例吧。 |
|
TonyLian
2010-12-27
too much recursion
是你的调用死循环了。或许是哪一句使Ext内核里的代码死循环了, 逐一注掉每一行代码定位吧。 |