欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

利用Ext Js生成動態樹

系統 2137 0

利用Ext Js生成動態樹

今天在公司幫同事寫了個用Ext Js生成動態樹的Demo,在這里分享一下,也好供以后自己查閱。

一. 需求

  1. 要求生成一顆部門樹,初始只列出根部門
  2. 當點擊一個部門節點時,動態載入該部門下的直屬子部門,并展開該部門節點
  3. 部門節點要求支持右鍵單擊事件,當點擊右鍵時,列出相關操作菜單

二. 關鍵類

這里主要涉及Ext JS的兩個類:

  • Ext.tree.TreeNode
  • Ext.menu.Menu

相關API可以參考: http://extjs.com/deploy/ext/docs/

三. 代碼示例

1. 先看一下測試頁面

  1. < html >
  2. < head >
  3. < meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" >
  4. < title > ReorderTreePanel </ title >
  5. < link rel = "stylesheet" type = "text/css" href = "../../resources/css/ext-all.css" />
  6. < script type = "text/javascript" src = "../../adapter/ext/ext-base.js" > </ script >
  7. < script type = "text/javascript" src = "../../ext-all.js" > </ script >
  8. < script type = "text/javascript" src = "reorder.js" > </ script >
  9. <!--CommonStylesfortheexamples-->
  10. < link rel = "stylesheet" type = "text/css" href = "../shared/examples.css" />
  11. < link rel = "stylesheet" type = "text/css" href = "../shared/lib.css" />
  12. < script type = "text/javascript" >
  13. /**************
  14. onload事件
  15. ***************/
  16. window.onload = function (){
  17. createTree(3);
  18. }
  19. </ script >
  20. </ head >
  21. < body >
  22. < script type = "text/javascript" src = "../shared/examples.js" > </ script >
  23. < h1 > 現在要生成一顆動態樹 </ h1 >
  24. < div id = "container" >
  25. </ div >
  26. </ body >
  27. </ html >

2. 再看一下生成樹的函數

  1. /***********************************
  2. 創建樹
  3. bychb
  4. ************************************/
  5. function createTree(n){
  6. Ext.QuickTips.init();
  7. var mytree= new Ext.tree.TreePanel({
  8. el: "container" ,
  9. animate: true ,
  10. title: "Extjs動態樹" ,
  11. collapsible: true ,
  12. enableDD: true ,
  13. enableDrag: true ,
  14. rootVisible: true ,
  15. autoScroll: true ,
  16. autoHeight: true ,
  17. width: "30%" ,
  18. lines: true
  19. });
  20. //根節點
  21. var root= new Ext.tree.TreeNode({
  22. id: "root" ,
  23. text: "集團公司" ,
  24. expanded: true
  25. });
  26. for ( var i=0;i<n;i++){
  27. var sub1= new Ext.tree.TreeNode({
  28. id:i+1,
  29. text: "子公司" +(i+1),
  30. singleClickExpand: true ,
  31. listeners:{
  32. //監聽單擊事件
  33. "click" : function (node){
  34. myExpand(node);
  35. },
  36. //監聽右鍵
  37. "contextmenu" : function (node,e){
  38. //列出右鍵菜單
  39. menu= new Ext.menu.Menu([
  40. {
  41. text: "打開當前節點" ,
  42. icon: "list.gif" ,
  43. handler: function (){
  44. myExpand(node);
  45. }
  46. },
  47. {
  48. text: "編輯當前節點" ,
  49. icon: "list.gif" ,
  50. handler: function (){
  51. alert(node.id);
  52. }
  53. },
  54. {
  55. text: "刪除當前節點" ,
  56. icon: "list.gif" ,
  57. handler: function (){
  58. alert(node.id);
  59. }
  60. }]);
  61. //顯示在當前位置
  62. menu.showAt(e.getPoint());
  63. }
  64. }
  65. });
  66. root.appendChild(sub1);
  67. }
  68. mytree.setRootNode(root); //設置根節點
  69. mytree.render(); //不要忘記render()下,不然不顯示哦
  70. }

3. 展開子節點的代碼

  1. /******************************************
  2. 展開節點
  3. ******************************************/
  4. function myExpand(node){
  5. if (node.id== '1' ){
  6. if (node.item(0)==undefined){
  7. node.appendChild( new Ext.tree.TreeNode({
  8. id:node.id+ '1' ,
  9. text:node.text+ "的第一個兒子" ,
  10. hrefTarget: "mainFrame" ,
  11. listeners:{ //監聽
  12. "click" : function (node,e){
  13. expand2(node)
  14. }
  15. }
  16. }));
  17. }
  18. node.expand();
  19. } else if (node.id== '2' ){
  20. node.appendChild( new Ext.tree.TreeNode({
  21. id:node.id+ '2' ,
  22. text:node.text+ "的第一個兒子" ,
  23. hrefTarget: "mainFrame" ,
  24. listeners:{ //監聽
  25. "click" : function (node){
  26. expand2(node)
  27. }
  28. }
  29. }));
  30. } else {
  31. alert(node.id+ "沒有子部門了" );
  32. }
  33. }

讀者可以自己運行一下如上代碼,會發現如下現象:無論點擊“子公司1”多少次,只會列出“子公司1的第一個兒子”一個節點,而每點擊一次“子公司2”,就會多出一個“子公司2的第一個兒子”節點,這是為什么呢?

因為每次點擊都會激發myExpand函數,而“子公司1”上加了node.item(0)==undefined的判斷,這里明白了?

即:如果該部門下沒有子部門,則載入子部門,否則只展開,不重新載入。

截圖

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

利用Ext Js生成動態樹


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品一区二区三区在线观看 | 蜜臀国产 | 色老头xxxwww作爱视频 | 天堂中文网 | 2021年无线乱码播放高清完整 | 一级黄色淫片 | 91在线品视觉盛宴免费 | 国产精品久久久久无毒 | 亚洲经典激情春色另类 | 国产露脸精品爆浆视频 | 一级做a爰片久久毛片 | 丝袜 亚洲 另类 欧美 综合 | 国内自拍一二三四2021 | 日韩亚洲欧美一区 | 啊啊啊好紧好爽 | 狠狠干天天 | 色网站免费视频 | 日韩xxxx做受欧美 | 亚洲影视在线 | 国产在线网站 | 久久se精品一区精品二区 | 免费观看国产大片资源视频 | 毛片1毛片2毛片3毛片4 | 国产精品久久久久不卡 | 久草福利资源网站免费 | 亚洲最大黄色网址 | 日韩欧美一区二区三区免费观看 | 色网站在线免费观看 | 日韩一区不卡 | 日韩性色| 国产精品久久久久久搜索 | 九九九九九九精品免费 | 欧美又黄又嫩大片a级 | 国产成人精品视频免费 | 久久久国产视频 | 日本不卡视频在线观看 | 午夜午夜精品一区二区三区文 | 成人免费淫片aa视频免费 | 色屁屁影院www免费 特片网久久 | 九九视频精品全部免费播放 | 亚洲国产三级 |