Ext 中 Tree 加载.json 文件为什么只显示根节点js 并没有报错
代码如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Reorder TreePanel</title>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" /> <!-- GC -->
<!-- LIBS -->
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<!-- ENDLIBS --> <script type="text/javascript" src="../../ext-all.js"></script>
<link rel="stylesheet" href="../examples.css" type="text/css"> </link>
<script type="text/javascript" src="../examples.js"> </script>
<script type="text/javascript">
Ext.BLANK_IMAGE_URL = "images/s.gif"
var tree = null;
Ext.onReady(function(){
// shorthand
var Tree = Ext.tree;
tree = new Tree.TreePanel({
el:'tree-div',
autoScroll:true,
animate:true,
enableDD:true,
containerScroll: true,
loader: new Tree.TreeLoader({
dataUrl:'03.json'
})
});
tree.on('checkchange', function(node, checked) {
node.expand();
node.attributes.checked = checked;
node.eachChild(function(child) {
child.ui.toggleCheck(checked);
child.attributes.checked = checked;
child.fireEvent('checkchange', child, checked);
});
}, tree);
// set the root node
var root = new Tree.AsyncTreeNode({
text: 'root',
draggable:false,
id:'root'
});
tree.setRootNode(root);
// render the tree
tree.render();
root.expand();
});
var fn = function() {
alert(tree.getChecked('id'));
};
</script>
</head>
<body scroll="no">
<b>Checked Nodes: </b> <input type="text" id="cn" value="" size="40" autocomplete="off" /><br />
<div id="tree-div" style="overflow:auto; height:300px;width:300px;border:1px solid #c3daf9;"></div>
<input type="button" id="gacv" value="getAllCheckedValue" onClick="fn()" />
</body>
</html> json 文件为 03.json[{id:300,text:'01',cls:'task-folder',children:[{id:'2',text:'01-01',leaf:true, cls:'task'},{id:'3',text:'01-02',children:[{id:'4',text:'01-02-01',leaf:true},{id:'5',text:'01-02-02',leaf:true}]},{id:'6',text:'01-03',leaf:true}]},{id:'7',text:'02',leaf:true}]
代码如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Reorder TreePanel</title>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" /> <!-- GC -->
<!-- LIBS -->
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<!-- ENDLIBS --> <script type="text/javascript" src="../../ext-all.js"></script>
<link rel="stylesheet" href="../examples.css" type="text/css"> </link>
<script type="text/javascript" src="../examples.js"> </script>
<script type="text/javascript">
Ext.BLANK_IMAGE_URL = "images/s.gif"
var tree = null;
Ext.onReady(function(){
// shorthand
var Tree = Ext.tree;
tree = new Tree.TreePanel({
el:'tree-div',
autoScroll:true,
animate:true,
enableDD:true,
containerScroll: true,
loader: new Tree.TreeLoader({
dataUrl:'03.json'
})
});
tree.on('checkchange', function(node, checked) {
node.expand();
node.attributes.checked = checked;
node.eachChild(function(child) {
child.ui.toggleCheck(checked);
child.attributes.checked = checked;
child.fireEvent('checkchange', child, checked);
});
}, tree);
// set the root node
var root = new Tree.AsyncTreeNode({
text: 'root',
draggable:false,
id:'root'
});
tree.setRootNode(root);
// render the tree
tree.render();
root.expand();
});
var fn = function() {
alert(tree.getChecked('id'));
};
</script>
</head>
<body scroll="no">
<b>Checked Nodes: </b> <input type="text" id="cn" value="" size="40" autocomplete="off" /><br />
<div id="tree-div" style="overflow:auto; height:300px;width:300px;border:1px solid #c3daf9;"></div>
<input type="button" id="gacv" value="getAllCheckedValue" onClick="fn()" />
</body>
</html> json 文件为 03.json[{id:300,text:'01',cls:'task-folder',children:[{id:'2',text:'01-01',leaf:true, cls:'task'},{id:'3',text:'01-02',children:[{id:'4',text:'01-02-01',leaf:true},{id:'5',text:'01-02-02',leaf:true}]},{id:'6',text:'01-03',leaf:true}]},{id:'7',text:'02',leaf:true}]
解决方案 »
- jQuery动态创建DOM的代码,有点不懂,求大神解释
- js怎么设置ie6的top和bottom属性
- 如何使用JS得到html:select的选择值 ?
- 关于网页文件编码的疑问。
- 使用target="order" 使打开的页面在同一窗口,怎么聚焦到那个页面?
- js动态加载DropDownList,清空如何实现
- 急 ! 如何实现 这样(打开主页时显示一个大幅图片,然后自动消失)的广告效果。
- 如何在css里写onmouseover等event?
- 如何不提交页面,改变一个hidden变量的值
- 如何使用javascript在网页中加入音乐?
- 关于Firefox不支持JS的selectSingleNode()和selectNodes(),高手们帮帮忙阿!!!谢谢拉!!!
- 修改<input type="file">的外观
tree.loader.dataUrl = 'createTree.do?id='+node.id;
}); tree.loader.dataUrl 的值需要返回的就是该节点id的下一级的json数据数据量大的时候异步加载要好的多,服务层也代码比起一次性全部加载的反复递归调用省不少。
原码如下所示:
<div id="east-div">
east
</div>
<div id="tree" style="float:left;width:300px;heigh:600px;background:green;">
tree
</div>
<div id="center-div">
center
</div>剩下的就是代码了:
<script>
Ext.onReady(function(){
// Ext.MessageBox.alert('helloworld', '你好.');
// var win=new Ext.Window({title:"hello",width:300,height:200,html:'<h1>Hello,easyjf<br> open your source</h1>'});
//win.show();
//var panel=new Ext.TabPanel({width:300,height:200,items:[ {title:"面板1",height:30},{title:"面板2",height:30},{title:"面板3",height:30}]});
var Tree = Ext.tree;
var tree = new Tree.TreePanel({
el: 'tree',
autoScroll: true,
animate: true,
enableDD: true,
width: 600,
height: 600,
containerScroll: true,
loader: new Tree.TreeLoader({
dataUrl: 'indexjsontree.jsp?id=父节点id'
})
});
// set the root node
var root = new Tree.AsyncTreeNode({
text: '最顶层节点名称',
draggable: false,
checked: false,
id: '1'
});
tree.setRootNode(root);
tree.on('beforeload', function(node){
//alert(node.id+node.text);
tree.loader.dataUrl = 'indexjsontreechecked.jsp?id=' + node.id;
});
// render the tree
tree.render();
root.expand();
});
</script>