欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 国产福利不卡视频在免费 | 一区二区三区高清视频在线观看 | 久草视频在线观 | 黄在线免费看 | 午夜专区 | 欧美日韩一区二区高清视 | 久久精品在线 | 日本中文字幕网站 | 国产一级特黄aa大片免费 | 王的女人印度剧电视剧免费观看32集 | 草草影院w37 | 凤囚凰 电视剧 | 91视频观看 | 精品国产一区在线观看 | 国产精品午夜电影 | 高清视频一区 | 波多野结衣手机在线播放 | 亚洲www啪成人一区二区麻豆 | 新婚人妻不戴套国产精品 | 国产99久久精品一区二区 | 久久亚洲欧美成人精品 | 成人在线观看av | 久久综合玖玖爱中文字幕 | 特级全黄一级毛片免费 | 欧美福利视频一区二区三区 | 精品久久久久久久久久久久久久 | 亚洲AV久久无码精品九号 | 波多野结衣中文字幕视频 | 精品欧美一区二区三区四区 | www.精品| 亚洲精品一区中文字幕乱码 | www.99热这里只有精品 | 天天操91 | 两性仑乱视频 | 精品国产一级毛片大全 | 国产视频91在线 | 午夜不卡一区二区 | 午夜影院试看五分钟 | 久久精品一区二区三区四区 | 日韩欧美综合在线二区三区 | 亚洲情乱|