• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Extjs中通过Tree加载右侧TabPanel具体实现

    发布者: 涵韵3588 | 发布时间: 2025-8-13 16:09| 查看数: 59| 评论数: 0|帖子模式

    最近在做一个物流管理的项目,公司必须要求用Extjs4.1来做界面,因为以前一直也没有接触过所以开发的过程中遇到了很多的困难。同时Extjs4.1的资料在网上也相对来说较少。好了,不说废话上代码:
    1.左侧的功能树

    Ext.define("AM.view.SystemTree", {
    extend : 'Ext.tree.Panel',
    alias : 'widget.systemTree',
    rootVisible : false,// 不展示ROOT
    displayField : 'text',
    // title:'物流运输系统',
    viewConfig : { // 具有拖拽功能
    plugins : {
    ptype : 'treeviewdragdrop'
    },
    listeners : { // 拖拽
    drop : function(node, data, overModel, dropPosition, options) {
    alert("把: " + data.records[0].get('text') + " 移动到: "
    + overModel.get('text'));
    }
    }
    },
    dockedItems : [ {
    xtype : 'toolbar',
    items : [ {
    xtype : 'button',
    id : 'allopen',
    icon : 'resources/img/lock_open.png',
    text : '展开全部'
    }, {
    xtype : 'button',
    id : 'allclose',
    icon : 'resources/img/lock.png',
    text : '收起全部'
    } ]
    } ],
    root : {
    text : 'root',
    leaf : false,
    id : '0',
    children : [ {
    text : '运输管理',
    checked : false, // 显示被选中
    leaf : false, // 是否是叶子节点
    icon : 'resources/img/folder_user.png',
    id : '01',
    children : [ {
    text : '车辆信息管理',
    checked : false,
    icon : 'resources/img/report_edit.png',
    leaf : true,
    id : 'vehiclelist',  //主要的要点在这里,这里的id要指定为你要打开的那个视图的别名
    }]
    }]
    }
    });

    要点介绍
    •tree一定不要忘记添加别名alias
    •设置树形结构的子节点的id值为你需要在右侧显示的view的别名alias(重要) ------可参考下方的view代码
    2.需要打开的对应的view

    Ext.define("AM.view.transportation.VehicleList",{
    extend:'Ext.grid.Panel',
    alias:'widget.vehiclelist',   //这里一定要设置别名
    id:'vehiclelist',
    store:'VehicleStore',
        ......中间代码省略
    columns : [
    {text:'车辆编号',dataIndex:'vehicleNo',
    field:{
    xtype:'textfield',
    allowBlank:false
    }
    },
    {text:'车辆描述',xtype:'templatecolumn',
    tpl:'车辆的编号为{vehicleNo} 所在地区为{vehicleArea}'
    }
    ],
    initComponent:function(){
    this.callParent(arguments);
    }
    });

    3.建立一个右侧的TabPanel

    Ext.define('AM.view.TabPanel',{ //主页面的tab面板
    extend: 'Ext.tab.Panel',
    alias:'widget.tabpanel',
    closeAction: 'destroy',
    defaults :{
    bodyPadding: 10
    },
    items: [{
    title: '主页',
    autoLoad:'content.jsp'    //只有一个基本的panel
    }],
    });

    4.设置点击tree的触发事件

    'systemTree':{
    itemclick:function(tree,record,item,index,e,options){
    var tabs = tree.ownerCt.ownerCt.ownerCt
    .child('#center-grid').child("#tabpanel");
    //获取当前点击的节点
    var treeNode=record.raw;
    var id = treeNode.id;
    var text=treeNode.text;
    //获取点击的树节点相同的tab标签
    var tab = tabs.getComponent(id);
    if(!tab){//如果不存在
    tabs.add({//用点击树的节点的ID、text新建一个tab
    id:id,
    closable: true,
    title:text,
    iconCls:id,
    xtype:id  //将tree设置好的id对应的TabPanel中去,相当与把对应的view填充到TabPanel中
    }).show();
    }else{//如果存在
    tabs.setActiveTab(tab);//Active
    }
    }
    },

    结果上效果图:

    总结:Extjs做出来的效果确实很炫,但是学起来也有一定的难度,特别是比较新的版本,网上很难找到什么好的教程。还好我们有API,可以多对着API中的例子进行练习,这样掌握起来也很快。最近才接触Extjs,希望各位大神不要吐槽!
    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表