easyui combobox 3个下拉框级联新增显示,修改回显

本文详细介绍了一种在实际项目中实现三个级联下拉框的方法,通过使用easyui combobox组件,当选择一个下拉框时,会动态加载下一个下拉框的数据,并支持新增和修改操作。

前言

在实际项目中,有这么一个需求,3个下拉框选项是属于级联级别的,新增时:当选中第1个下拉框的值时,第二个下拉框根据第一下拉框中的类型查询数据,当第二个下拉框选中值时查询第三个下拉框的值并回显,修改时:回显选中第一个下拉框值,然后查询第二个下拉框并回显,然后查询第三个下拉框并回显(啰里啰嗦一大堆,千万不要蒙,接下来看图)
在这里插入图片描述
在这里插入图片描述

代码 (新增和修改使用同一个函数)

//所有类型加载
function eventAllTypeLoad(params){
	//案件类型
	$('.event_type').combobox({
		url:'www.baidu.com/hehe/do?type=1021',
		valueField:'code',  
	    textField:'text' ,
	    panelHeight:'80px',
		editable:false,
		/*data:[{
			id:91,
			text:"事件"
		},{
			id:92, 
			text:"单位"
		},{
			id:93, 
			text:"部件"
		}],*/
		onSelect:function(record){
			//案件大类
			$(".event_big_type").combobox({
				url:'www.baidu.com/hehe.do?type='+record.id,    
				valueField: 'code',    
			    textField: 'text', 
				editable:false,
				onSelect:function(record){
					console.log(record)
					//案件小类
					$(".event_small_type").combobox({
						url:'www.baidu.com/hehe.do?type='+record.id,    
						valueField: 'code',    
					    textField: 'text', 
						editable:false,
					    onLoadSuccess: function (){
				            if (params!=null&&params.event_small_type!=null) {
				                $(".event_small_type").combobox('select',params.event_small_type);
				                params = {};
				            }
				        }
					});
				},
			    onLoadSuccess: function (){ 
		            if (params!=null&&params.event_big_type!=null) {
		                $(".event_big_type").combobox('select',params.event_big_type);
		            }
		        }
			});
	    },
	    onLoadSuccess: function (){ 
    		 if (params!=null&&params.event_type!=null) {
                 $(".event_type").combobox('select',params.event_type);
             }
        }
	});
}

其中函数的参数params是用来修改时赋值的,如果只是添加则不用使用combobox中的onLoadSuccess

修改时的参数params

	var typeParams = {};
	typeParams.event_type = row.event_type;
	typeParams.event_big_type = row.event_big_type;
	typeParams.event_small_type = row.event_small_type;
	//类别选中
	eventAllTypeLoad(typeParams);

添加时的参数params

//所有类型案件类型
eventAllTypeLoad(null);
<think> 我们参考提供的引用信息来解答关于EasyUI combobox多选下拉框的实现方法和配置。 根据引用[1]和[2],实现多选的关键配置是设置`multiple:true`,并且可以指定分隔符`separator`(默认是逗号)。 同时,在初始化时,如果需要设置默认选中的值,可以在`onLoadSuccess`事件中使用`setValues`方法,将字符串按分隔符分割成数组设置。 引用[3]提到在选中和取消选中时通过`getValues`获取值并赋值给隐藏域(或其他地方),这说明了如何实时获取多选的值。 引用[4]展示了后端获取数据的方法,但这不是前端配置的重点。 因此,我们可以总结如下: 1. 配置多选:`multiple: true` 2. 可选配置分隔符(例如分隔符为逗号):`separator: &#39;,&#39;` 3. 设置默认值:在`onLoadSuccess`事件中,使用`combobox(&#39;setValues&#39;, array)`,其中array是值的数组。 4. 获取多选的值:使用`combobox(&#39;getValues&#39;)`,返的是数组,也可以用分隔符连接成字符串。 下面是一个完整的配置示例,参考引用[1]和[2]: ```javascript $(&#39;#comboId&#39;).combobox({ url: &#39;...&#39;, // 数据源URL editable: false, // 是否可编辑 multiple: true, // 开启多选 separator: &#39;,&#39;, // 分隔符,默认也是逗号,所以可以不写 valueField: &#39;id&#39;, // 值字段 textField: &#39;text&#39;, // 显示文本字段 onLoadSuccess: function() { // 设置默认值,假设默认值是一个用逗号分隔的字符串 var defaultValue = "value1,value2,value3"; $(this).combobox(&#39;setValues&#39;, defaultValue.split(&#39;,&#39;)); } }); // 获取选中的值(数组形式) var selectedValues = $(&#39;#comboId&#39;).combobox(&#39;getValues&#39;); // 如果需要字符串形式,可以用分隔符连接 var selectedString = selectedValues.join(&#39;,&#39;); ``` 另外,引用[2]中还展示了在面板显示时调整面板高度的例子(根据选项数量动态调整高度),这也是一个常用的优化。 注意:在设置默认值时,`setValues`方法需要传入一个数组,所以我们把字符串用`split`方法分割成数组。 如果需要实时将选中的值更新到某个地方(如隐藏域),可以监听`onSelect`和`onUnselect`事件,例如: ```javascript onSelect: function(record) { var values = $(this).combobox(&#39;getValues&#39;); $(&#39;#hiddenField&#39;).val(values.join(&#39;,&#39;)); }, onUnselect: function(record) { var values = $(this).combobox(&#39;getValues&#39;); $(&#39;#hiddenField&#39;).val(values.join(&#39;,&#39;)); } ``` 这样,每次选择或取消选择时,隐藏域的值都会被更新为当前选中的值(以逗号分隔的字符串)。 以上便是EasyUI combobox实现多选下拉框的主要方法和配置。 </think> ### EasyUI Combobox 多选下拉框的实现方法与配置 要实现 EasyUI combobox 的多选功能,需通过以下关键配置和事件处理(参考引用[1][2][3]): #### 1. **核心配置属性** ```javascript $(&#39;#yourCombo&#39;).combobox({ multiple: true, // 启用多选模式 [^1] separator: &#39;,&#39;, // 值分隔符(默认逗号)[^1] valueField: &#39;id&#39;, // 值字段(如数据库ID) textField: &#39;name&#39;, // 显示文本字段 editable: false, // 禁止手动输入(推荐)[^2] url: &#39;data_source.json&#39; // 数据源URL }); ``` #### 2. **设置默认值** 在 `onLoadSuccess` 事件中初始化选中值(引用[1][2]): ```javascript onLoadSuccess: function() { // 将字符串(如"v1,v2")转为数组设置 $(&#39;#yourCombo&#39;).combobox("setValues", "val1,val2".split(&#39;,&#39;)); } ``` #### 3. **获取选中值** ```javascript // 返数组:["val1", "val2"] const values = $(&#39;#yourCombo&#39;).combobox(&#39;getValues&#39;); // 返逗号分隔的字符串(配置的分隔符) const str = values.join(&#39;,&#39;); ``` #### 4. **动态监听选择** 实时响应选择/取消操作(引用[3]): ```javascript onSelect: function(record) { const currentValues = $(this).combobox(&#39;getValues&#39;); console.log("当前选中值:", currentValues); }, onUnselect: function(record) { const currentValues = $(this).combobox(&#39;getValues&#39;); console.log("取消后剩余值:", currentValues); } ``` #### 5. **高度动态调整** 根据选项数量自动调整下拉高度(引用[2]): ```javascript onShowPanel: function() { const count = $(this).combobox(&#39;panel&#39;)[0].childElementCount; $(this).combobox(&#39;panel&#39;).height(count > 10 ? 200 : "auto"); } ``` #### 6. **后端数据示例(Java)** 返数据需匹配 `valueField/textField`(引用[4]): ```java public List<Map> getComboboxData(String code) { String sql = "SELECT id AS valueField, name AS textField FROM table"; // 执行查询并返 List<Map> } ``` > **注意事项** > - 多选时数据源字段需唯一,避免重复值冲突 > - 大量数据建议启用分页(需配合 `pagination:true`) > - 默认值字符串格式需与 `separator` 配置一致 --- ### 相关问题 1. EasyUI combobox 多选时如何实现全选/全不选功能? 2. 当 combobox 多选数据量过大时,应该如何优化性能? 3. 如何将 combobox 多选的值提交到表单并后台接收? 4. 在多选模式下,如何自定义下拉选项的显示样式? [^1]: easyui combobox 多选 [^2]: EasyUI实现combobox下拉框多选以及取值 [^3]: 关于easyui combobox下拉框实现多选框的实现 [^4]: easyui combobox下拉框实现多选框以及全选、全不选的实现
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值