高手帮帮忙: EXTJS怎样实现动态添加 Checkbox,譬如从后台读出多少个省份,在前台就显示多少个 Checkbox,最好能放到 CheckboxGroup中 

解决方案 »

  1.   

    把所有省份都列出来,只控制它们的display属性就是了.
      

  2.   

      下面的代码是我在 filedset 里面动态的从后台 url 中读取出权限,生成 checkbox 并填充到 filedset 中
    // 动态在 fieldset 中添加 checkbox(用户权限)
    function addUserModule(){
    var size = storeUserRole.getTotalCount();

    // 获得 fieldset
    var fieldset = Ext.getCmp("userRoleFieldset"); for(var i=0;i<size;i++){
    var moduleId = storeUserRole.getAt(i).data.moduleId;
    var moduleName = storeUserRole.getAt(i).data.moduleName;

    var checkboxModule = new Ext.form.Checkbox({
    id:"addboxModule"+i,
    name:"userModule",
    boxLabel : moduleName,  
                                     labelSeparator:"",  // 当没有标题时,不要 “:” 号,不要标题分隔                
                                                inputValue : moduleId
    }); 

    if(moduleName == "用户管理"){
    // 因为只有管理员才有“用户管理的权限”,所以一般封掉“用户管理”权限的选项
    roleBoxIndex1 = i;
    Ext.getCmp("addboxModule"+i).setDisabled(true);
    }

    fieldset.add(checkboxModule); // 这里我是一个 fieldset ,你也可以是一个 form 或者别的东西。
    }

      

  3.   

    没贴完 下面是 store 的代码:var storeUserRole=new Ext.data.JsonStore({
    autoLoad : true,
      url: "<%=path%>/userManage.do?action=findAllModule",
        fields: [  'moduleId','moduleName']
      });
      

  4.   

    function openProvWin() {
    dwr.engine.setAsync(false);
    var dataStr = "[";
    aclService.findAllProv(function(data) {
    for(var i=0; i< data.length; i++) {
    dataStr = dataStr + "{boxLabel: '" + data[i][1]+ "'}";
    if(i<data.length-1) {
    dataStr = dataStr + ",";
    }
    }

    });
    dataStr = dataStr + "]";
    dataStr = Ext.decode(dataStr);
    var chkgroup = new Ext.form.CheckboxGroup({
    fieldLabel: '省份',
    baseCls: 'x-plain',
    id: 'chkgroup',
            columns: 3,
            items: dataStr
    });

    var provFormPanel = new Ext.FormPanel({
    frame: true,
    autoHeight: true,
    anchor: '100%',
    items: chkgroup,
    labelWidth: 70
    });

    var newProvWin = new Ext.Window({
    title: '设置省份',
    width: 600,
    autoHeight: true,
    frame: true,
    modal: true,
    //html: 'dddd'
    items: provFormPanel
    });
    newProvWin.show();
    };
      

  5.   

    var cjvalue = ext.getcmp("combo_qjzc").value;
      var cbg_obj=ext.getcmp(cbg_id);
      var items=cbg_obj.items,
      columns=cbg_obj.panel.items,
      column=columns.itemat(items.getcount()%columns.getcount()),
      checkbox=column.add({boxlabel:guoguo,name:1});
      items.add(checkbox);
      items.items.remove(1,true);
      cbg_obj.dolayout();
      

  6.   

    如果能实现checkbox动态树,最好了!!!