Extjs4学习笔记(七)----combobox下拉动态树

combobox下拉动态树

主要自定义js文件

/**
 * 下拉树
 */
 Ext.define('TeaComboTreeBox', {
    extend: 'Ext.form.field.ComboBox',
    multiSelect: false,  //控制单选,多选
    fieldLabel: '责 任 班 组',
    emptyText: '--请选择班组--',
    displayField: 'text',
    valueField: 'text',
    createPicker: function () {
        var me = this;
        var store = Ext.create('Ext.data.TreeStore', {
            proxy: {
                type: 'ajax',
                url: 'getFirstBm.action'
            },
            folderSort: false,
            autoLoad:true
        });

        store.load();
        var picker = Ext.create('Ext.tree.Panel', {

            store: store,
            listeners: {/*
            afteritemexpand:function(node,index,item,eOpts){
                node.removeAll();
                console.log(node.raw.code);
                Ext.Ajax.request({
                    url:'getSecondData.action',
                    params:{
                        code:node.raw.code
                    },
                    success:function(responce){
                        console.log(responce.responseText);
                        node.appendChild(eval("("+responce.responseText+")")); 
                    }
                })
                }
            */},
            rootVisible: false,
            selModel: {
                mode: me.multiSelect ? 'SIMPLE' : 'SINGLE'
            },
            floating: true,
            hidden: true,
            focusOnToFront: false
        });
        me.mon(picker, {
            itemclick: me.onItemClick,
            refresh: me.onListRefresh,
            scope: me
        });

        me.mon(picker.getSelectionModel(), {
            beforeselect: me.onBeforeSelect,
            beforedeselect: me.onBeforeDeselect,
            selectionchange: me.onListSelectionChange,
            scope: me
        });
        this.picker = picker;
        return picker;
    }
});

在其他js中调用自定义动态树代码

var combotree = Ext.create('TeaComboTreeBox', {
        multiSelect: true,//可实现多选
        labelWidth: 70,
        id: 'wz_zrbz',
        anchor: '96%'
    });

后台:在service层代码

@Override
    public List<Map<String, Object>> getFirstBm() {
        List<Map<String, Object>> list = wzdjDao.getFirstBm();
        getNextLevels(list);
        return list;
    }

    //递归调用查找所有孩子
    private void getNextLevels(List<Map<String, Object>> tempList) {
        for (Map<String, Object> map : tempList) {
            if (map.get("leaf").equals("false")) {
                List<Map<String, Object>> nextData = wzdjDao.getSecondData((String)map.get("code"));
                getNextLevels(nextData);
                map.put("children",nextData);
            }
        }

    }

首先,先获取父层数据

List<Map<String, Object>> list = wzdjDao.getFirstBm(); 然后,根据递归将孩子数据得到传到前台。
效果图如下
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值