关于extj4的Ext.data.JsonStore的问题

来源:互联网 发布:六爻排盘软件 编辑:程序博客网 时间:2024/05/29 08:54
  1. Ext.define("AccordinTreePanel",{    
  2.     extend : "Ext.Panel",   
  3.     width : 210,  
  4.     initComponent : function() {  
  5.         Ext.apply(this, {  
  6.             layout : 'accordion',  
  7.             region : 'west'  
  8.         });  
  9.         AccordinTreePanel.superclass.initComponent.call(this);  
  10.         this.addEvents('afterload');  
  11.         if (!this.store) {  
  12.             this.store = Ext.create('Ext.data.JsonStore',{  
  13.                 proxy: new Ext.create('Ext.data.HttpProxy',{  
  14.                     url: '/smc_web/menu.do?method=getMenu'  
  15.                 }),  
  16.                 root : 'menus',  
  17.                 fields : [ 'code''name''parentcode''iconCls''href' ]  
  18.             });  
  19.         }  
  20.         this.store.load({  
  21.             callback : this.loadTrees,  
  22.             scope : this  
  23.         });  
  24.     },  
  25.     loadTrees : function(records, operation, success) {  
  26.         alert("sfdsfsd");  
  27.         var pnodes = null, trees = [], tree;  
  28.         this.store.sort('code');  
  29.         for ( var i = 0; i < records.length; i++) {  
  30.             var record = records[i];  
  31.             alert(record);  
  32.             if (!record.get('parentcode')) {  
  33.                 tree = this.creatTreeConfig(record);  
  34.                 trees.push(tree);  
  35.                 pnodes = [];  
  36.                 pnodes.push(tree.root);  
  37.             } else {  
  38.                 var next_record = records[i + 1];  
  39.                 var isLeaf = !next_record  
  40.                         || next_record.get('parentcode') != record.get('code');  
  41.                 this.addTreeNode(pnodes, record, isLeaf);  
  42.             }  
  43.         }  
  44.         Ext.each(trees, function(tree) {  
  45.             this.add(tree);  
  46.         }, this);  
  47.         this.fireEvent('afterload'this);  
  48.         this.mon(this.el, 'click'this.onClick, this);  
  49.         this.doLayout();  
  50.         this.store.destroy();  
  51.     },  
  52.     findNodeById : function(id) {  
  53.         var node = false, trees = this.findByType('treepanel'true);  
  54.         Ext.each(trees, function(tree) {  
  55.             node = tree.getNodeById(id);  
  56.             return !node;// 找到的话返回false  
  57.         });  
  58.         return node;  
  59.     },  
  60.     onClick : function(e, t, o) {  
  61.         if (Ext.fly(t).hasClass('x-tree-ec-icon')) {// 点击伸展按钮时无视  
  62.             return;  
  63.         }  
  64.         var el, id, node;  
  65.         if (el = e.getTarget('.x-tree-node-el'3true)) {  
  66.             e.stopEvent();  
  67.             id = el.getAttributeNS('ext''tree-node-id');  
  68.             node = this.findNodeById(id);  
  69.             this.fireEvent('click', node);  
  70.         }  
  71.     },  
  72.     creatTreeConfig : function(record) {  
  73.         var config = {  
  74.             xtype : 'treepanel',  
  75.             autoScroll : true,  
  76.             rootVisible : false,  
  77.             title : record.get('name'),  
  78.             iconCls : record.get('iconCls'),  
  79.             root : {  
  80.                 nodeType : 'async',  
  81.                 expanded : true,  
  82.                 id : record.get('code'),  
  83.                 children : []  
  84.             }  
  85.         };  
  86.         return config;  
  87.     },  
  88.     addTreeNode : function(pnodes, record, isLeaf) {  
  89.         var len = pnodes.length;  
  90.         for ( var i = len - 1; i >= 0; i--) {  
  91.             if (pnodes[i].id != record.get('parentcode')) {  
  92.                 pnodes.pop();  
  93.             } else {  
  94.                 var parent = pnodes[i].children;  
  95.                 var node = {  
  96.                     text : record.get('name'),  
  97.                     id : record.get('code'),  
  98.                     iconCls : record.get('iconCls'),  
  99.                     href : record.get('href'),  
  100.                     leaf : isLeaf  
  101.                 };  
  102.                 if (!isLeaf) {  
  103.                     node.children = [];  
  104.                     pnodes.push(node);  
  105.                 }  
  106.                 parent.push(node);  
  107.                 return;  
  108.             }  
  109.         }  
  110.     }  
  111. });  
原创粉丝点击