1.tree的异步加载:
前台代码:
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL="/commons/extjs2.1/extjs/resources/images/default/s.gif";
var root= new Ext.tree.AsyncTreeNode( { id:'1',
var loader= new Ext.tree.TreeLoader( {dataUrl: 'aa.jsp'});
var treePanel;
treePanel= new Ext.tree.TreePanel( {
} );
},loader);
});
后台代码:aa.jsp
<%
String id= request.getParameter("id");
if(id.equals("1")){
}else if(id.equals("2")){
}
%>
2.同步加载树,将所有的树的信息以json语句都返回并加载到 tree上,不用点一个节点去访问以下后台
前台代码:
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL="/commons/extjs2.1/extjs/resources/images/default/s.gif";
var root= new Ext.tree.AsyncTreeNode( { id:'1',
var loader= new Ext.tree.TreeLoader( {dataUrl: 'bb.jsp'});
var treePanel;
treePanel= new Ext.tree.TreePanel( {
} );
后台代码:bb.jsp
%>
注意:个人感觉用异步加载好,因为这样不浪费资源,需要查看什么节点从后台获取节点数据显示,而同步加载不管需不需要看,都会将所有节点都返回
遇到的问题:当使用同步加载后,例如删除了node这个节点(非root节点)下的某个子节点,想要刷新该节点node并重新展开该节点时,不知道怎么办,
方法1:行不通
使用
但是此方法行不通,因为同步树加载时已经将所有的节点都返回并加载到了root上,再使用loader.load并不会再次访问 bb.jsp,如果将loader.load(node)换成loader.load(root)时就可以访问bb.jsp,看方法2,方法3
方法2:行不通
使用
loader.load(root, function(){
当loader.load(root)时,可以再次访问bb.jsp,但是node.expand(true, true)却会报错,因为这个时候root并没有展开,它找不到深藏的node节点
方法3: 可以试试,我自己试了可以行得通
使用
var path= node.getPath();
})
注意:异步加载不会出现这样的问题,例如想要重新加载node,就可以使用
loader.load(node, function() {