需要实现一个多级的中国城市选择树,在以下工程的基础上改进实现了一个:
http://ext-ux-form-combotree.googlecode.com/svn-history/r9/trunk/0.2/Ext.ux.TreeCombo.js
该控件存在两个问题,会导致在同一页面同时存在多个tree控件会产生混乱:
1.
id:Ext.id(),
所有控件共用一个id?
挪到initComponent方法中建立就可以了。
2.root节点是传入的,如果外部调用者复用一个root,同样会导致问题。
可以改进为在initComponent中增加一个自适应检查:
if(!this.root) this.root = new Ext.tree.AsyncTreeNode({ });
控件修改好之后,数据从哪里拿呢?
以下链接给出了中国城市街道列表的json格式,
http://www.1netmedia.cn/base/blogview.asp?logID=1214
感谢同行的工作,赞一个!
但该格式并不符合Ext.tree对数据格式的要求,要求如下形式:
[{ "text": "北京市", "checked": false, "leaf": false, "children": [{ "text": "东城区", "checked": false, "leaf": true }, { "text": "西城区", "checked": false, "leaf": true }
好吧,写一个简单的函数转换形式,打印到浏览器控制台好了。
函数允许设置转换深度level,字符串化利用了浏览器的native JSON API (ECMAScript 3.1定义)
var level_limit = 2; function tree(city,level){ var obj = {text:city.t,checked:false,leaf:true}; if(city.s){ if(level<level_limit){ obj.leaf=false; obj.children=treecitys(city.s,level+1); } } return obj; } function treecitys(citys,level){ var obj=[]; for(var i=0; i<citys.length; i++){ obj[obj.length]=tree(citys[i],level); } return obj; } var tcs = treecitys(areaJson,1); var str_tcs = JSON.stringify(tcs); console.log(str_tcs);
相关推荐
用ext + xml文件 完成 ext tree panel 树结构。延迟加载,支持 多选 单选。前后台数据交互使用的是 json串,挺不错的
ext tree json 例子(不含EXT包)
Json4Ext是“AnyFo – Util”项目下的一个子项目,他提供了多个工具包,它让开发者轻松的通过构建一些简单的Java类,然后自动的将 这些Java类生成符合Ext要求的各种Json格式的字符串。 Json4Ext类简介 在Json4...
Ext tree 实现的是一棵异步加载的Tree,完整Demo项目,导入Eclipse就可以运行
EXT tree 使用 实例 最新 EXT使用实例,很漂亮。
Ext.tree 实例代码文件 并附带封装的json类 ,工程源码,相互指教!
ext树 无限级 json 数据格式 动态加载
一个关于extTree的应用,点击会弹出界面啊,等等
一个不错Ext Tree 自己去下个EXT2.0库吧
ExtJS4+Accordion+SERVLET/STRUTS2+JSON+Ext.tree.Panel实例
EXT TREE 扩展CHECKBOX所需JS loader方法中添加: baseAttrs: {uiProvider: Ext.tree.TreeCheckNodeUI }
Ext4+JSON+Servlet/Struts2+Ext.tree.Panel+Ext.tab.Panel构建Web应用系统框架
ext tree 与ssh2的结合,主要演示ext在ssh2中的使用
Extjs Tree + JSON + Struts2 例子
NULL 博文链接:https://scmky.iteye.com/blog/1174740
自己编写的EXT例子,grid、tree从数据库读取数据动态显示,并进行分页。可以动态更换主题,并存入cookies中。
关于Ext Tree Panel,相关的知识文档
省市区3级数据,ID为全国数据
Ext 带多选框的Tree