[javascript] view plain copy
<script type="text/javascript">
Ext.onReady(function()
{
//樹形結構
//創建一棵樹:
var tree = new Ext.tree.TreePanel(
{el:'tree'}//表示渲染的DOM的id.界面中有<div id = "tree"></div>相對應最後這棵樹就出現在這個div位置上
);
//創建根節點:
var root = new Ext.tree.TreeNode({text:'山東'});
tree.setRootNode(root);//把根節點添加到樹中
tree.render();//對樹進行渲染
//添加枝葉
var node1 = new Ext.tree.TreeNode({text:'濟南'});
var node11 = new Ext.tree.TreeNode({text:'市中區'});
var node12 = new Ext.tree.TreeNode({text:'章丘市'});
var node2 = new Ext.tree.TreeNode({text:'青島'});
var node21 = new Ext.tree.TreeNode({text:'黃島區'});
var node22 = new Ext.tree.TreeNode({text:'城陽區'});
var node3 = new Ext.tree.TreeNode({text:'淄博'});
var node31 = new Ext.tree.TreeNode({text:'沂源'});
var node32 = new Ext.tree.TreeNode({text:'張店'});
var node33 = new Ext.tree.TreeNode({text:'博山'});
root.appendChild(node1);
root.appendChild(node2);
root.appendChild(node3);
node1.appendChild(node11);
node1.appendChild(node12);
node2.appendChild(node21);
node2.appendChild(node22);
node3.appendChild(node31);
node3.appendChild(node32);
node3.appendChild(node33);
root.expand(true,true);//加載後立即展開樹
}
);
</script>
<2>使用TreeLoader加載數據:
[javascript] view plain copy
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>Tree</title>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../ext-all.js"></script>
<script type="text/javascript" src="localXHR.js"></script>
<script type="text/javascript">
Ext.onReady(function(){
var tree = new Ext.tree.TreePanel(
{
el: 'tree',
//TreeLoader完成數據轉換和裝配節點的功能
loader: new Ext.tree.TreeLoader({dataUrl: '03-03.txt'})
}
);
//Ext.tree.TreeNode換成Ext.tree.AsyncTreeNode實現異步加載效果
var root = new Ext.tree.AsyncTreeNode({text:'CHINA'});
tree.setRootNode(root);
tree.render();
//只展開第一層節點
root.expand();
//展開全部節點
//root.expand(true,true);
}
);
</script>
</head>
<body>
<script type="text/javascript" src="../shared/examples.js"></script>
<div id="tree" style="height:300px;"></div>
</body>
</html>
03-03.txt
[javascript] view plain copy
[
{
text:'SHANDONG',
children:[
{text:'QINGDAO',leaf:true},
{
text:'ZIBO',
children:[
{text:'ZHANGDIAN',leaf:true},
{text:'YIYUAN',leaf:true}
]
},
{text:'JINAN',leaf:true}
]
},
{text:'BEIJING',leaf:true}
]
注意:
下載localXHR.js:點擊打開鏈接
<3>樹的事件
[javascript] view plain copy
//添加事件監聽機制
tree.on("expandnode",function(node){
Ext.Msg.alert(node + "展開了");
});
tree.on("collapsenode",function(node){
Ext.Msg.alert(node + "摺疊了");
});
tree.on("click",function(node){
Ext.Msg.alert("你單擊了" + node);
});
tree.on("dblclick",function(node){
Ext.Msg.alert("你雙擊了" + node);
});
alert() 無法觸發雙擊事件。
<4>右鍵菜單
[javascript] view plain copy
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Ext Buttons</title>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/>
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../ext-all.js"></script>
<script type="text/javascript" src="../examples.js"></script>
<script type="text/javascript">
Ext.onReady(function()
{
//樹形結構
//創建一棵樹:
var tree = new Ext.tree.TreePanel(
{el:'tree'}//表示渲染的DOM的id.界面中有<div id = "tree"></div>相對應最後這棵樹就出現在這個div位置上
);
//創建根節點:
var root = new Ext.tree.TreeNode({text:'山東'});
tree.setRootNode(root);//把根節點添加到樹中
tree.render();//對樹進行渲染
//添加枝葉
var node1 = new Ext.tree.TreeNode({text:'濟南'});
var node11 = new Ext.tree.TreeNode({text:'市中區'});
var node12 = new Ext.tree.TreeNode({text:'章丘市'});
var node2 = new Ext.tree.TreeNode({text:'青島'});
var node21 = new Ext.tree.TreeNode({text:'黃島區'});
var node22 = new Ext.tree.TreeNode({text:'城陽區'});
var node3 = new Ext.tree.TreeNode({text:'淄博'});
var node31 = new Ext.tree.TreeNode({text:'沂源'});
var node32 = new Ext.tree.TreeNode({text:'張店'});
var node33 = new Ext.tree.TreeNode({text:'博山'});
root.appendChild(node1);
root.appendChild(node2);
root.appendChild(node3);
node1.appendChild(node11);
node1.appendChild(node12);
node2.appendChild(node21);
node2.appendChild(node22);
node3.appendChild(node31);
node3.appendChild(node32);
node3.appendChild(node33);
//<1>製作自定義菜單
var contextmenu = new Ext.menu.Menu(
{
id:'theContextMenu',
items:[
{
text:'添加',
handler:function(){
alert("還未實現添加功能");
}
},
{
text:'刪除',
handler:function(){
alert("還未實現刪除功能");
}
},
{
text:'修改',
handler:function(){
alert("還未實現修改功能");
}
}
]
}
);
//<2>綁定contextMenu事件
tree.on('contextMenu',function(node,e){
//防止瀏覽器彈出他默認的功能菜單
e.preventDefault();
//選中當前節點
node.select();
//在點擊的位置彈出菜單
contextmenu.showAt(e.getXY());
});
}
);
</script>
</head>
<body>
<div id = "tree">
</div>
</body>
</html>
<5>修改節點的默認圖標
[javascript] view plain copy
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Ext Buttons</title>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/>
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../ext-all.js"></script>
<script type="text/javascript" src="../examples.js"></script>
<style type="text/css">
.x-tree-node-leaf .icon-male {
background-image: url(user_male.png)
}
</style>
<script type="text/javascript">
/*
每個樹形結點都有icon和iconCls屬性,他們負責指定結點的圖標。
<1>使用icon屬性:
var node = new Ext.tree.TreeNode({text:'淄博',icon:'user_female.png'});
<2>使用iconCls屬性,我們還需要在HTML中添加對應的CSS定義。
var node = new Ext.tree.TreeNode({text:'淄博',iconCls:'icon-male'});
<style type="text/css">
.x-tree-node-leaf .icon-male {
background-image: url(user_male.png)
}
注意:x-tree-node-leaf .icon-male和代碼中iconCls:'icon-male'相對應。
</style>
*/
Ext.onReady(function()
{
//樹形結構
//創建一棵樹:
var tree = new Ext.tree.TreePanel(
{el:'tree'}//表示渲染的DOM的id.界面中有<div id = "tree"></div>相對應最後這棵樹就出現在這個div位置上
);
//創建根節點:
var root = new Ext.tree.TreeNode({text:'山東',icon:'user_male.png'});
tree.setRootNode(root);//把根節點添加到樹中
tree.render();//對樹進行渲染
//添加枝葉
var node3 = new Ext.tree.TreeNode({text:'淄博',icon:'user_female.png'});
var node31 = new Ext.tree.TreeNode({text:'沂源',icon:'user_female.png'});
var node32 = new Ext.tree.TreeNode({text:'張店',icon:'user_female.png'});
var node33 = new Ext.tree.TreeNode({text:'博山',iconCls:'icon-male'});
root.appendChild(node3);
node3.appendChild(node31);
node3.appendChild(node32);
node3.appendChild(node33);
}
);
</script>
</head>
<body>
<div id = "tree">
</div>
</body>
</html>
這裏寫圖片描述
<6>從節點彈出對話框
[javascript] view plain copy
tree.on('click',function(node){
Ext.Msg.show(
{
title:'提示',
msg:'你點擊了'+node,
animEl:node.ui.textNode
}
);
});
<7>節點提示信息
[javascript] view plain copy
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Ext Buttons</title>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/>
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../ext-all.js"></script>
<script type="text/javascript" src="../examples.js"></script>
<script type="text/javascript">
/*
爲每個節點添加qtip:'xxxx'屬性。
在JavaScript中對Ext的提示功能進行初始化。Ext.QuickTips.init();
*/
Ext.onReady(function()
{
Ext.QuickTips.init();
//樹形結構
//創建一棵樹:
var tree = new Ext.tree.TreePanel(
{el:'tree'}//表示渲染的DOM的id.界面中有<div id = "tree"></div>相對應最後這棵樹就出現在這個div位置上
);
//創建根節點:
var root = new Ext.tree.TreeNode({text:'山東'});
tree.setRootNode(root);//把根節點添加到樹中
tree.render();//對樹進行渲染
//添加枝葉
var node3 = new Ext.tree.TreeNode({text:'淄博',qtip:'中國歷史文化名城,國家園林城市,中國瓷都。歷史文化源遠流長,曾作爲山東政治中心近兩千年,有“齊國故都”之稱'});
var node31 = new Ext.tree.TreeNode({text:'沂源',qtip:'沂源縣是山東古人類發源地、山東屋脊生態高地、中國北方溶洞之鄉和牛郎織女之鄉'});
var node32 = new Ext.tree.TreeNode({text:'張店'});
var node33 = new Ext.tree.TreeNode({text:'博山'});
root.appendChild(node3);
node3.appendChild(node31);
node3.appendChild(node32);
node3.appendChild(node33);
}
);
</script>
</head>
<body>
<div id = "tree">
</div>
</body>
</html>
<8>爲節點設置超鏈接
[javascript] view plain copy
var node32 = new Ext.tree.TreeNode({text:'張店',href:'tree事件監聽.html',hrefTarget:'_blank'});
<9>直接修改樹節點名稱
[javascript] view plain copy
//只要創建一個TreeEditor,再把TreePanel放進去就可以了。
var treeEditor = new Ext.tree.TreeEditor(tree,{
allowBlank:false
});