SSH 和 EasyUI结合的 combobox默认值问题解决方法

jsp页面的combobox组件:

<label>所属单位:</label>
<input class="easyui-combobox" name="entityId" id="entityId" data-options="
<span style="white-space:pre">									</span>url:'${ctx}/action/${act}_roleList',
		<span style="white-space:pre">							</span>method:'get',
									valueField:'id',
									textField:'name',
									panelHeight:'auto',
									">

编辑的JS

		function editJS(){
	            var row = $('#dataList').datagrid('getSelected');//获取列表中选中的行对象
	            if (row){
	                $('#dlg').dialog('open').dialog('setTitle','编辑实验室');//弹出编辑对话框,下面赋值,对话框包括一个combobox,和若干input
	                $('#fm').form('load',row);
	                url = '${ctx}/action/${act}_update?editId='+row.id;//更改对话框的提交URL(之前做过添加功能)
	                //获取combobox的列表
	                var data = $('#entityId').combobox('getData');
	                for(var i=0;i<data.length;i++){
	                	if(row.roleId == data[i].id){//匹配该row对象的主键ID与列表中哪个的ID相同
	                		 //设置默认值
	                		 $('#entityId').combobox('setValue',data[i].name);
	                		 break;
	                	}
	                }
	            }
       		}
JAVA后台处理

public String update(){
		result = new Result();
		Lab lab = labService.findById(editId);
		
		lab.setName(name);
		lab.setDescription(description);
		//对entityId这个参数进行判断,如果是数字,说明用户点击了combobox进行选择,如果是字符串,我们刚才的JS会在页面生成一个name为entityId的input,这时如果用户没有改变该项,它的值会是我们设置的默认值,即字符串;相当于默认设置的时候,显示的是input,选择的时候是select
		if(CommonUtility.isNumeric(entityId)){
			//该属性是数字,说明经过select进行选择了
			SysRole role = roleService.findById(Integer.parseInt(entityId));
			lab.setRole(role);
		}else{
			//该属性是字符串,说明没有经过选择,该属性没有改变
			
		}
		labService.update(lab);
		result.setSuccess("修改成功!");
		return sendJson(result);
	}



猜你喜欢

转载自blog.csdn.net/op_kapu/article/details/38395967