- Ext.define("AccordinTreePanel",{
- extend : "Ext.Panel",
- width : 210,
- initComponent : function() {
- Ext.apply(this, {
- layout : 'accordion',
- region : 'west'
- });
- AccordinTreePanel.superclass.initComponent.call(this);
- this.addEvents('afterload');
- if (!this.store) {
- this.store = Ext.create('Ext.data.JsonStore',{
- proxy: new Ext.create('Ext.data.HttpProxy',{
- url: '/smc_web/menu.do?method=getMenu'
- }),
- root : 'menus',
- fields : [ 'code', 'name', 'parentcode', 'iconCls', 'href' ]
- });
- }
- this.store.load({
- callback : this.loadTrees,
- scope : this
- });
- },
- loadTrees : function(records, operation, success) {
- alert("sfdsfsd");
- var pnodes = null, trees = [], tree;
- this.store.sort('code');
- for ( var i = 0; i < records.length; i++) {
- var record = records[i];
- alert(record);
- if (!record.get('parentcode')) {
- tree = this.creatTreeConfig(record);
- trees.push(tree);
- pnodes = [];
- pnodes.push(tree.root);
- } else {
- var next_record = records[i + 1];
- var isLeaf = !next_record
- || next_record.get('parentcode') != record.get('code');
- this.addTreeNode(pnodes, record, isLeaf);
- }
- }
- Ext.each(trees, function(tree) {
- this.add(tree);
- }, this);
- this.fireEvent('afterload', this);
- this.mon(this.el, 'click', this.onClick, this);
- this.doLayout();
- this.store.destroy();
- },
- findNodeById : function(id) {
- var node = false, trees = this.findByType('treepanel', true);
- Ext.each(trees, function(tree) {
- node = tree.getNodeById(id);
- return !node;// 找到的话返回false
- });
- return node;
- },
- onClick : function(e, t, o) {
- if (Ext.fly(t).hasClass('x-tree-ec-icon')) {// 点击伸展按钮时无视
- return;
- }
- var el, id, node;
- if (el = e.getTarget('.x-tree-node-el', 3, true)) {
- e.stopEvent();
- id = el.getAttributeNS('ext', 'tree-node-id');
- node = this.findNodeById(id);
- this.fireEvent('click', node);
- }
- },
- creatTreeConfig : function(record) {
- var config = {
- xtype : 'treepanel',
- autoScroll : true,
- rootVisible : false,
- title : record.get('name'),
- iconCls : record.get('iconCls'),
- root : {
- nodeType : 'async',
- expanded : true,
- id : record.get('code'),
- children : []
- }
- };
- return config;
- },
- addTreeNode : function(pnodes, record, isLeaf) {
- var len = pnodes.length;
- for ( var i = len - 1; i >= 0; i--) {
- if (pnodes[i].id != record.get('parentcode')) {
- pnodes.pop();
- } else {
- var parent = pnodes[i].children;
- var node = {
- text : record.get('name'),
- id : record.get('code'),
- iconCls : record.get('iconCls'),
- href : record.get('href'),
- leaf : isLeaf
- };
- if (!isLeaf) {
- node.children = [];
- pnodes.push(node);
- }
- parent.push(node);
- return;
- }
- }
- }
- });
关于extj4的Ext.data.JsonStore的问题
最新推荐文章于 2022-11-01 18:30:49 发布