使用ExtJS2,以JSON(JavaScript Object Notation)TreeLoader 异步读取数据,构造一棵异步加载的树
1. 下载ExtJS2,地址:http://www.extjs .com/
下载Ext JS 2.1 SDK:ext-2.2.zip。
examples文件夹下全部是ExtJS 例子演示程序。
ExtJS2主要的会用到以下几个文件:ext-all.css、ext-base.js、ext-all.js,使用方法可以参考Demo。
Ext文档中心:
http://www.ajaxjs.com/docs/docs/
http://www.jackytsu.com/extcn/docs/
2. 下载JSON-lib,地址:http://json-lib.sourceforge.net/
打开网址后,首页上有一段话:
Json-lib requires (at least) the following dependencies in your classpath:
jakarta commons-lang 2.3
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1
ezmorph 1.0.4
下载上述jar文件,配合JSON-lib 一起使用。
commons 下载地址:http://commons.apache.org/
ezmorph 下载地址:http://ezmorph.sourceforge.net
或者,到 http://www.docjar.com 搜索下载。
JSON的用法,可参考相关文档。
3. 使用ExtJS 写tree.js文件。
关于Ext.tree.TreePanel,可以参考:
http://www.jackytsu.com/extcn/docs/output/Ext.tree.TreePanel.html
8.
1). 如果要做ExtJS Tree的DEMO,生成TreeLoader()时,尽量不要使用静态的JSON格式文件。
如:
Tree.TreeLoader({dataUrl:'/jsondata.txt'});
Tree.TreeLoader({dataUrl:'/jsondata.js'});
等诸如此类。
在网上查资料时,做ExtJS Tree时,很多资料说使用静态的JSON文件做Demo,我使用ExtJS2.1,一次没有成功。
为此浪费了很多时间精力,付出惨重代价。
2). 使用JSON的时候,需要一些jar文件来配合使用。
从网上下载的时候,很多是zip文件,当时没有多加考虑,按照以往的经验,直接修改后缀名为jar,然后导入到lib文件夹,结果会报错。
诸如:
javax.servlet.ServletException: org/apache/commons/lang/exception/NestableRuntimeException
java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
其实,真正的jar文件需要解压zip文件后才能得到的。低级错误.
3). 关于s.gif文件的问题
该问题会在系统不连互联网的情况下暴露。
因为ExtJS 在生成Tree时,默认情况下,总是访问http://extjs .com/s.gif下载这个s.gif图片文件。
在不连网的情况下,树节点的导航图片显示不出,通过右键属性可知,是http://extjs .com/s.gif。
通过搜索,发现该s.gif是在ext-base.js这个文件中定义的:
BLANK_IMAGE_URL:"http:/"+"/extjs .com/s.gif"
并且ExtJS 中的示例程序是带有这个s.gif图片文件的。
根据具体应用情况,把ext-base.js修改成为:
BLANK_IMAGE_URL:"../images/default/s.gif"
4). 调试的时候,JS报错:未结束的字符串常量。
这个问题是因为JS调用时没有指定字符集,造成JS里的汉字出现乱码引起的。
调用JS时,可以指定使用字符集。
如:<script type="text/javascript" defer=true src="xxx.js" charset="GBK">
9. AJAX
AJAX:Asynchronous JavaScript and XML(异步JavaScript和XML)
只是为了树,也要学ExtJS 。
ExtJS2.1+JSON = 动态异步加载的树