[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
- [EXTJS]combo下拉框可多选
- extjs--form combo下拉列表框
- Extjs的下拉框combo传多个值到后台
- Extjs combo
- extjs combo下拉框 ie显示问题(跑到左上方)
- EXTJS combo下拉框插入脚本生成的数据
- Extjs Combo控件 下拉选择之后的事件触发
- Extjs 下拉框combo实现显示框和下拉框加背景色
- ExtJs combo设置分页
- Extjs Combo Tree
- ExtJS combo 从数据库抽取数据动态绑定下拉菜单及获取值
- 对Extjs“Combo with Templates and Ajax”改进(下拉数据中添加图标标识)
- Extjs日期控件(date),文本框(textfield)和下拉(combo)的清空控件
- easyui-combo下拉框
- Extjs combo 两级菜单联动
- ExtJs combo的二级联动
- extjs combo的联动问题
- extjs combo 级联 loading提示
- mahout 实战
- oracle错误(四) ORA-04088: 触发器 'SL.CMS_CHANNEL_TRI' 执行过程中出错的解决办法
- Asp.net Socket客户端(远程发送和接收数据)
- 国内手机号段校验正则(转载)
- CAS实现单点登录(SSO)经典完整教程
- [EXTJS]combo下拉框可多选
- 对视图有时为什么使用select top 100 percent * 而不使用 select * 呢?
- 树后台数据存储(采用webmethod)
- ora-12638: credential retrieval failed
- iOS 数据持久化
- PHP 配置上传大文件
- FFmpeg的HEVC解码器源代码简单分析:解码器主干部分
- the climbing price of film faced plywood
- SQL 语言划分