extjs 中 异步调入部门信息并根据部门信息生成 checkboxGroup

这个东西折腾了我两天时间,GOOGLE和BAIDU都没有,问的人也不少,今天放出来 与大家分享一下, 放在这里以备查询

/**
 * 调入所有本单位员工,为建立部门选择组作准备
 */
var empstore = new Ext.data.ArrayStore( {
    url : 'flowAudit/listEmpByDepID',
    fields : [ 'depid','id', 'name','checked' ],
    sortInfo : {
        field : 'id',
        direction : 'ASC'
    },
    autoLoad:true
});
/**
 * 在frm内建立部门及人员复选组
 * @param frm
 * @return
 */
function createDepCheckboxGroup(frm){

    function genDetails(depid,depname){
        items= [{id:'d-'+depid,boxLabel: ''+depname+'', checked: false}];
        empstore.each(function(record){
            var thedepid=record.get('depid');
            if(depid==thedepid){
                var theid= record.get('id');
                var thename=record.get('name');
                var thechked=record.get('checked');
                items.push({id:'p-'+theid,boxLabel:''+thename,checked:thechked});
            }
        })
        return items;
    }

    var store = new Ext.data.ArrayStore( {
        url : 'department/comboxJson',
        fields : [ 'id', 'name' ],
        sortInfo : {
            field : 'id',
            direction : 'ASC'
        }
    });
    store.on('load',function(){
        Ext.getCmp(frm).removeAll();
        store.each(function(record) {
            var thedepid=record.get('id');
            var thedepname=record.get('name');
            var CBG = new Ext.form.CheckboxGroup({
                id:'depchkg'+thedepid,
                fieldLabel: thedepname,
                xtype: 'checkboxgroup',
                itemCls: 'x-check-group-alt',
                columns: 4,
                items:genDetails(thedepid,thedepname)
            });
            Ext.getCmp(frm).items.add(CBG);
            Ext.getCmp(frm).doLayout(true);
        });
    });
    store.load();
};

你可能感兴趣的:(JAVA学习,extjs,function,autoload,url,google)