Extjs中的树形结构


结果图
树形结构extjs的类能完美解析,后台返回的只是简单list<Map<String,String>>
不过value里的内容要有关系,比如01,0101, 010101以此类推
讲完后台的数据格式再来讲前台的显示
新建权限模型
Ext.define('RightsModel', {
    extend: 'Ext.data.Model',
    idProperty: 'Id',
    fields: [
        {name: 'funID', type: 'string'},
        {name: 'ffunID', type: 'string'},
        {name: 'funName', type: 'string'},
        {name: 'note', type: 'string'}
    ]
});

解析树形核心代码:树形store,存储树形数据
var storeRights = Ext.create('Ext.data.TreeStore', {
    autoLoad: true,
    model: 'RightsModel',
    folderSort: false,
    proxy: {
        type: 'ajax',
        url: 'Sys/loadPermission',
        reader: {type: 'json'}
    },
    listeners: {
        beforeload: function (store, options) {
            var params = {roleId: _RoleID};
            Ext.apply(store.proxy.extraParams, params);
        }
    }
});
列名:
var cmRights = [{
    xtype: 'treecolumn',
    text: '名称',
    sortable: false,
    dataIndex: 'funName',
    width: 250,
    titleAlign: 'center'
}, {
    text: '编号',
    dataIndex: 'funID',
    width: 100,
    titleAlign: 'center'
}, {
    text: '备注',
    sortable: false,
    flex: 1,
    dataIndex: 'note',
    titleAlign: 'center'
}];
树形面板显示数据
var treeRights = Ext.create('Ext.tree.Panel', {
    title: '权限',
    store: storeRights,
    rootVisible: false,
    frame: false,
    columnLines: true,
    checkModel: "parentCascade",
    multiSelect: false,
    singleExpand: true,
    columns: cmRights,
    height: 390,
    listeners: {
        "checkchange": function (node, state) {
            //-------------------------------------------------
            //级联勾选多个父级节点
            checkedParentNode(node, state)
            //-------------------------------------------------
            //级联勾选子级节点
            node.cascadeBy(function (child) {
                child.set("checked", state);
            });
            //-------------------------------------------------
        }

    }
});

function checkedParentNode(node, state) {
    if (node.parentNode != null) {
        if (state) {
            node.parentNode.set('checked', state);
        }
        checkedParentNode(node.parentNode, state)
    }
}
点击的事件,点击一个节点,把他所有的父节点都选中,并且把他所有的子节点都选中,同级的不选。
新建窗口显示这个面板
  var winPerm = new Ext.window.Window({
        title: 'MODBUS子设备信息',
        width: 520,
        height: 350,
        modal: true,
        resizeable: false,
        collapsible: true,
        closeAction: 'close',
        bodyStyle: 'padding:5px;',
        layout: 'fit',
        buttonAlign: 'center',
        items: [formPerm],
        buttons: [{
            type: 'button',
            text: '关 闭',
            handler: function () { winPerm.close(); }
        }]
    });
}
winPerm.show();
完成。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值