如题目所说,被这个问题困惑了很长时间;问题说来其实也很简单,就是在加载一棵树的时候不是马上加载所有节点的信息只是加载他的孩子节点的;由于之前用Ext中的树时候都是一次性加载的,所以遇到这个问题的时候,研究了一段时间,终于解决了;解决的过程不乏一些有趣的问题,刚开始的想法是要改写Ext自带的Js,也就是点了前面那个+或者-号之后执行什么样的事件函数,为此还专门研究 了Ext的源代码也难怪之前自己手写树型的时候都是这样弄的,这可能就是所谓的思维定势吧!问题的解决主要是因为看了一篇文章之后(http://www.dojochina.com/index.php?q=node/937) 突然来了灵感,在此对该文的作者表示感谢;看了这篇文章之后还是有些担心,比如担心一个节点会被加载多次;把代码写好之后才发现这样的担心其实是多余的,这些细节Ext全都帮我们封装好了,最是太High了;现总结如下:
1 前台页面代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>checkbox.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../scripts/ext/resources/css/ext-all.css">
<script type="text/javascript" src="../scripts/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../scripts/ext/ext-all.js"></script>
<script type="text/javascript" src="../scripts/js/MultiComboBox.js"></script>
<script type="text/javascript">
Ext.onReady(function(){
var root=new Ext.tree.AsyncTreeNode({
id:'0',
text:'root'
});
var data=new Ext.tree.TreeLoader({url:'tree.jsp'});
var tree=new Ext.tree.TreePanel({
renderTo:'test',
root:root,
loader:data,
width:300
});
data.on('beforeload',function(treeLoader,node){
this.baseParams.text=node.attributes.text;
},data);
});
</script>
</head>
<body>
<div id="test"></div>
</body>
</html>
2 tree.jsp代码如下:
<%@ page language="java" import="java.util.*,test.Test1"
pageEncoding="UTF-8"%>
<%@ page language="java" import="java.io.PrintWriter;"%>
<%
System.out.println("到达了Tree.jsp");
String text = request.getParameter("text");
System.out.println("text---" + text);
response.setContentType("text/x-json");
PrintWriter outer = response.getWriter();
if (text.equalsIgnoreCase("root")) {
outer.print(Test1.rootChildren);
}
if (text.equalsIgnoreCase("1")) {
outer.print(Test1.firstChildren);
}
if (text.equalsIgnoreCase("2")) {
outer.print(Test1.secordChildren);
}
outer.flush();
outer.close();
%>
有兴趣的朋友可以下载 地址拦中输入:http://localhost:8080/treeTest/test/tree.html 即可以看到效果
分享到:
- 2009-03-09 23:51
- 浏览 1061
- 评论(2)
- 论坛回复 / 浏览 (2 / 1795)
- 查看更多
相关推荐
Ext.ux.tree.treegrid异步加载,点击节点加载数据
extjs4,当点击左边的树,右边会生成相应的面板,代码精简,欢迎大家来学习,有问题可以直接交流。
ztree+dwr实现的异步加载树形菜单
NULL 博文链接:https://8366.iteye.com/blog/544437
本人手写的一款js树形控件,附带图片,代码简洁,注释齐全,可读性高,易于维护,方便移植,结构清晰,思路明了,界面美观,同时支持异步加载,对浏览器的兼容行强,你还可以根据自己的需要扩展功能,可大量应用于...
extjs tree 异步加载树型完整的一个web工程,自已已经试过,可用。
解决ext异步跳转问题,解决过滤器的问题
Ext 异步加载添加 删除节点 修改combobox选择项,相当好的东西,值得参考!希望对你有用!
目录: 1. layout-test-01.html为上下布局,...详细见代码。 ...详细见代码。 ...即:Ext.window ...6.tree-asynch-test.html为异步加载的树 7.tree-edit-test.html为节点可以编辑的树 8.tree-tz-test.html为tree节点拖拽的练习
当树的数据并不多时,把数据一次加载进来,给用户的体验会比较好,这里后台生成数据用递归算法生成json串,前台直接用这个json串作为ext树的数据来源
ext.net 中树加载及实现方式,初学者可以参考,项目中一段代码片段,仅供参考
Ext的gridpanel控件二次加载时丢失解决方案
看看就知道了,不错的下拉树,异步加载树节点,使用Ext做的 下拉树
本软件实现了一个机构管理的小例子,可以点击左边树节点在右边的Grid中显示该节点的下属机构,并提供增删查改功能,主要包括JS文件和生成动态树所需要的JSON格式的数据的JAVA和jsp文件,商业逻辑请自己负责完成
Ext4 动态加载js例子 Ext4 动态加载js例子 Ext4 动态加载js例子 Ext4 动态加载js例子
ext树 无限级 json 数据格式 动态加载
EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT...
我博文 Ext下多tab的延迟加载问题.docx 文章里的原文。
Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载