[EXTJS]combo下拉框可多选

来源:互联网 发布:三星手机数据迁移 编辑:程序博客网 时间:2024/05/19 06:16
combo下拉出一个grid,grid可多选。则可实现combo的多选。
<span style="color:#ff6666;">注:写代码过程中出现过一个bug,后找了好久才发现combo的id和hiddenName不能相同。</span>
var srzd_combo = new Ext.form.ComboBox({hideOnSelect : false,loadingText : '加载数据...',fieldLabel : '<font color=red>*输入参数</font>',grid : Object(), id:'@FZDZJ@_'+zfid,SFDX:true,hiddenName :'@FZDZJW@_'+zfid,displayField : 'label',valueField : 'name',triggerAction : 'all',editable : false,resizable : false,enableKeyEvents : true ,onSelect : Ext.emptyFn, start:true, selectedClass : '',mode : 'local',readOnly : true, arr : [],store:new Ext.data.SimpleStore({fields:['label','name'], data:srlm_data}),tpl : '<div id="cxtj_combo_gridTpl'+zfid+'" style="height:200"></div>',listeners:{collapse : function (combo){var grid = Ext.getCmp('cxtj_combo_grid'+zfid);var select = grid.getSelectionModel().getSelections();var ids = [];var val_arr = [];for(var i=0;i<select.length;i++){var v = select[i].get('label');var val = select[i].get('name');if(v!=''){ids.push(v); val_arr.push(val);}}combo.arr = val_arr;comboObj['@FZDZJ@_'+zfid]=combo.arr;//alert('val_arr:'+val_arr.toString()+'---ids:'+ids.toString())combo.setValue(val_arr.toString());combo.setRawValue(ids.toString());var form=fs;for(var i=0;i<xzzj.length;i++){xzzj[i].setDisabled(false);}xzzj=[];for(var i=0;i<val_arr.length;i++){var value = val_arr[i];var zj1=form.find('name',value)[0];var zj2=form.find('name',value+'_nyr')[0];var zj3=form.find('name',value+'_sfm')[0];var zj4=form.find('hiddenName',value)[0];var zj5=form.find('name',value+'_xzbm')[0];if(zj2&&zj3){//日期类型xzzj.push(zj2);xzzj.push(zj3);}else if(zj4){//下拉框xzzj.push(zj4);}else{if(zj5){xzzj.push(zj5);}if(zj1){xzzj.push(zj1);}}}for(var i=0;i<xzzj.length;i++){if(xzzj[i]){xzzj[i].clearInvalid();xzzj[i].setDisabled(true);}}},expand : function(combo) {srlm_data=[];var sz_value = combo.arr;for(var i=0;i<fs.items.length;i++){var item=fs.items.get(i);var name=item.name;var hiddenName=item.hiddenName;for(var m=0;m<sz_value.length;m++){var value = sz_value[m];if(value==name||value==hiddenName||value+'_nyr'==name){srlm_data.push([combo.getRawValue().split(',')[m],value]);}}if(item==combo||item.title=='扩展查询条件'||'要输出的资源'==item.fieldLabel){}else if(!item.disabled&&item.fieldLabel){var lable=item.fieldLabel;lable=lable.substr(lable.indexOf('  ')+12);if(name==undefined){name=item.hiddenName;}else if(name.lastIndexOf('_sfm')==name.length-4){continue;}else if(name.lastIndexOf('_nyr')==name.length-4){name=name.substr(0,name.length-4); }else{name=name.replace('_xzbm',''); }lable=lable+item.labelSeparator;srlm_data.push([lable,name]);}}if(combo.start){var sm = new Ext.grid.CheckboxSelectionModel();var col={header: '全部', width: 1, sortable: true ,dataIndex: 'label'};combo.grid = new Ext.grid.EditorGridPanel({id : 'cxtj_combo_grid'+zfid,sm : sm , height : 200,frame : true, iconCls : 'icon-grid' ,viewConfig : { forceFit : true } ,    store : new Ext.data.SimpleStore({    fields:['label','name'], data:srlm_data}),    columns : [ sm, col ],    listeners : {    afterlayout : function(combo){        }        }}).render('cxtj_combo_gridTpl'+zfid);combo.start=false;}else{combo.grid.getStore().loadData(srlm_data);var grid = Ext.getCmp('cxtj_combo_grid'+zfid);if(grid){var ids = combo.getRawValue().split(',');var rows = [];for(var i = 0; i < grid.getStore().getCount() ; i++){var v = grid.getStore().getAt(i);for(var j=0;j<ids.length;j++){if(v.get('label') == ids[j]){rows.push(i);}}}grid.getSelectionModel().selectRows(rows);}}}}});

0 0
原创粉丝点击