最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Ext Js生成動(dòng)態(tài)樹實(shí)例代碼

 更新時(shí)間:2008年09月08日 21:41:28   作者:  
今天在公司幫同事寫了個(gè)用Ext Js生成動(dòng)態(tài)樹的Demo,在這里分享一下,也好供以后自己查閱。
一. 需求

要求生成一顆部門樹,初始只列出根部門
當(dāng)點(diǎn)擊一個(gè)部門節(jié)點(diǎn)時(shí),動(dòng)態(tài)載入該部門下的直屬子部門,并展開該部門節(jié)點(diǎn)
部門節(jié)點(diǎn)要求支持右鍵單擊事件,當(dāng)點(diǎn)擊右鍵時(shí),列出相關(guān)操作菜單
二. 關(guān)鍵類

這里主要涉及Ext JS的兩個(gè)類:

Ext.tree.TreeNode
Ext.menu.Menu
相關(guān)API可以參考:http://extjs.com/deploy/ext/docs/

三. 代碼示例

1. 先看一下測試頁面
復(fù)制代碼 代碼如下:

<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" />
<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="reorder.js"></script>


<!-- Common Styles for the examples -->
<link rel="stylesheet" type="text/css" href="../shared/examples.css" />
<link rel="stylesheet" type="text/css" href="../shared/lib.css" />


<script type="text/javascript">
/**************
onload事件
***************/
window.onload=function(){
createTree(3);
}
</script>


</head>
<body>
<script type="text/javascript" src="../shared/examples.js"></script>
<h1>現(xiàn)在要生成一顆動(dòng)態(tài)樹</h1>
<div id="container">
</div>
</body>
</html>

2. 再看一下生成樹的函數(shù)
復(fù)制代碼 代碼如下:

/***********************************
創(chuàng)建樹
by chb
************************************/
function createTree(n){


Ext.QuickTips.init();
var mytree=new Ext.tree.TreePanel({
el:"container",
animate:true,
title:"Extjs動(dòng)態(tài)樹",
collapsible:true,
enableDD:true,
enableDrag:true,
rootVisible:true,
autoScroll:true,
autoHeight:true,
width:"30%",
lines:true
});

//根節(jié)點(diǎn)
var root=new Ext.tree.TreeNode({
id:"root",
text:"集團(tuán)公司",
expanded:true
});


for(var i=0;i<n;i++){
var sub1=new Ext.tree.TreeNode({
id:i+1,
text:"子公司"+(i+1),
singleClickExpand:true,
listeners:{
//監(jiān)聽單擊事件
"click":function(node){
myExpand(node);
},
//監(jiān)聽右鍵
"contextmenu":function(node,e){
//列出右鍵菜單
menu=new Ext.menu.Menu([
{
text:"打開當(dāng)前節(jié)點(diǎn)",
icon:"list.gif",
handler:function(){
myExpand(node);
}
},
{
text:"編輯當(dāng)前節(jié)點(diǎn)",
icon:"list.gif",
handler:function(){
alert(node.id);
}
},
{
text:"刪除當(dāng)前節(jié)點(diǎn)",
icon:"list.gif",
handler:function(){
alert(node.id);
}
}]);
//顯示在當(dāng)前位置
menu.showAt(e.getPoint());
}
}
});
root.appendChild(sub1);
}
mytree.setRootNode(root);//設(shè)置根節(jié)點(diǎn)
mytree.render();//不要忘記render()下,不然不顯示哦
}

3. 展開子節(jié)點(diǎn)的代碼
復(fù)制代碼 代碼如下:

/******************************************
展開節(jié)點(diǎn)
******************************************/
function myExpand(node){
if(node.id=='1'){
if(node.item(0)==undefined){
node.appendChild(new Ext.tree.TreeNode({
id:node.id+'1',
text:node.text+"的第一個(gè)兒子",
hrefTarget:"mainFrame",
listeners:{//監(jiān)聽
"click":function(node,e){
expand2(node)
}
}
}));
}


node.expand();


}else if(node.id=='2'){
node.appendChild(new Ext.tree.TreeNode({
id:node.id+'2',
text:node.text+"的第一個(gè)兒子",
hrefTarget:"mainFrame",
listeners:{//監(jiān)聽
"click":function(node){
expand2(node)
}
}
}));
}else{
alert(node.id+"沒有子部門了");
}
}

讀者可以自己運(yùn)行一下如上代碼,會(huì)發(fā)現(xiàn)如下現(xiàn)象:無論點(diǎn)擊“子公司1”多少次,只會(huì)列出“子公司1的第一個(gè)兒子”一個(gè)節(jié)點(diǎn),而每點(diǎn)擊一次“子公司2”,就會(huì)多出一個(gè)“子公司2的第一個(gè)兒子”節(jié)點(diǎn),這是為什么呢?

因?yàn)槊看吸c(diǎn)擊都會(huì)激發(fā)myExpand函數(shù),而“子公司1”上加了node.item(0)==undefined的判斷,這里明白了?
即:如果該部門下沒有子部門,則載入子部門,否則只展開,不重新載入。

好了,就到這里吧,困了,就不詳細(xì)解釋了o(∩_∩)o...哈哈

相關(guān)文章

  • JavaScript中this機(jī)制是如何真正工作的

    JavaScript中this機(jī)制是如何真正工作的

    JavaScript中this機(jī)制提供了更優(yōu)雅的方式來隱含地“傳遞”一個(gè)對象引用,導(dǎo)致更加干凈的API設(shè)計(jì)和更容易的復(fù)用,this既不是函數(shù)自身的引用,也不是函數(shù)詞法作用域的引用,this實(shí)際上是在函數(shù)被調(diào)用時(shí)建立的一個(gè)綁定,它指向什么是完全由函數(shù)被調(diào)用的調(diào)用點(diǎn)來決定的
    2023-11-11
  • JS動(dòng)態(tài)給對象添加屬性和值的實(shí)現(xiàn)方法

    JS動(dòng)態(tài)給對象添加屬性和值的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄狫S動(dòng)態(tài)給對象添加屬性和值的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • echarts展示區(qū)域地圖添加紋理圖片操作指南

    echarts展示區(qū)域地圖添加紋理圖片操作指南

    這篇文章主要給大家介紹了關(guān)于echarts展示區(qū)域地圖添加紋理圖片操作的相關(guān)資料,ECharts地圖組件支持使用圖片作為地圖區(qū)域的填充紋理,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • ?javascript數(shù)組中的lastIndexOf方法

    ?javascript數(shù)組中的lastIndexOf方法

    這篇文章主要介紹了?javascript數(shù)組中的lastIndexOf方法,該方法可返回一個(gè)指定的字符串值最后出現(xiàn)的位置,在一個(gè)字符串中的指定位置從后向前搜索,下文詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • 原生JS實(shí)現(xiàn)百葉窗特效

    原生JS實(shí)現(xiàn)百葉窗特效

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)百葉窗特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • zTree獲取當(dāng)前節(jié)點(diǎn)的下一級子節(jié)點(diǎn)數(shù)實(shí)例

    zTree獲取當(dāng)前節(jié)點(diǎn)的下一級子節(jié)點(diǎn)數(shù)實(shí)例

    下面小編就為大家?guī)硪黄獄Tree獲取當(dāng)前節(jié)點(diǎn)的下一級子節(jié)點(diǎn)數(shù)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 可視化埋點(diǎn)平臺元素曝光采集intersectionObserver思路實(shí)踐

    可視化埋點(diǎn)平臺元素曝光采集intersectionObserver思路實(shí)踐

    這篇文章主要為大家介紹了可視化埋點(diǎn)平臺元素曝光采集的思路—intersectionObserver的實(shí)戰(zhàn)經(jīng)驗(yàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • JS 獲取頁面尺寸的方法詳解

    JS 獲取頁面尺寸的方法詳解

    通過 JS 獲取頁面相關(guān)的尺寸是比較常見的操作,尤其是在動(dòng)態(tài)計(jì)算頁面布局時(shí),今天我們就來學(xué)習(xí)一下幾個(gè)獲取頁面尺寸的基本方法,需要的朋友可以參考下
    2023-09-09
  • javascript正則表達(dá)式基礎(chǔ)知識入門

    javascript正則表達(dá)式基礎(chǔ)知識入門

    很長時(shí)間沒看正則表達(dá)式了,碰巧今天用到,溫故知新了一把,這里記錄下來,分享給大家,都是些基礎(chǔ)的知識,重點(diǎn)給大家講解的是正則表達(dá)式中4種常用的方法,50% 的舉一反三練習(xí)中的原創(chuàng)。
    2015-04-04
  • JavaScript canvas實(shí)現(xiàn)九宮格切圖效果

    JavaScript canvas實(shí)現(xiàn)九宮格切圖效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript canvas實(shí)現(xiàn)九宮格切圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論

大埔县| 汶川县| 浦东新区| 沅陵县| 霍林郭勒市| 郴州市| 高要市| 吐鲁番市| 通榆县| 古浪县| 新余市| 正定县| 库车县| 抚州市| 庆安县| 湟中县| 余干县| 阳城县| 大余县| 黎平县| 芦溪县| 北川| 鄄城县| 秦皇岛市| 新泰市| 府谷县| 灵璧县| 嘉禾县| 沙坪坝区| 石嘴山市| 繁昌县| 新丰县| 永胜县| 农安县| 社旗县| 拜城县| 古浪县| 平山县| 房产| 镇赉县| 额尔古纳市|