天天看点

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

1. 需求说明

首先看一下这几个需求:

1.我要将combobox组合框下拉列表内的数据进行拼接,原来是只显示表名,现在我需要以表名(中文名)这种形式显示在下拉列表内,并且在下拉列表中我选择了某一项表数据,我需要同时将我选择的这项内容展示在组合框中
           

原来显示:

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

需要展示:

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

并且选择一项文本框内需要展示:

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

然后看一下后台发送数据:

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

可以看到一个map集合内装了两条数据,表名和表中文名,注意combobox下拉框内只能写一个值比如这样:

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

所以需要进行拼接数据比如这样:

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

这样实现的效果就是:

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

但是当我选择一项内容时文本框内还是只能显示一部分,要么是表名要么是表中文名,所以我果断放弃了这个方法另寻别路!

第二个需求:

2.当在输入框中输入内容时,比如搜索'高血压'可以将所有关于高血压的数据展示在下拉框中供我选择,也就是相当于一个组合框内的搜索功能
           

也就是以下方式展示数据:

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

这个需求结合第一个需求可以使用combobox组合框的loader属性方法实现:

首先

easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据
easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据
easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据
easyUI组合框(combobox)文本内容拼接并实现编辑搜索下拉框数据

下面就是我的完整代码

$("#tag-tableName").combobox({
		width:525,
		panelWidth:525,
		valueField: 'tableName',
		textField: 'tableName',
		mode: "remote",
		loader: function (param, success, error) {
			//获取combobox输入的值
			var q = param.q;
			if (q == undefined || q == "" || q == null){
				core.submitAjax({
					url: 'databind/getOdsAllBizTable',
					type: 'get',
					success: function (data) {
						var obj = [];
						for (var i in data){
							var tableDesc = {};
							var item = data[i];
							var TABLENAME = item.TABLENAME + '(' + item.TABLEDESC + ')';
							tableDesc.tableName = TABLENAME;
							obj.push(tableDesc);
						}
						//执行loader的success回调函数(装载数据)
						success(obj);
					},
					//异常处理
					error: function (xml, text, msg) {
						error.apply(this, arguments);
					}
				});
				return false;
			}
			if(q !== undefined || q !== "" || q !== null){
				core.submitAjax({
					url: "databind/getOdsBizTable",
					type: "post",
					data: { searchTxt: q },
					success: function (data) {
						var obj = [];
						for (var i in data){
							var tableDesc = {};
							var item = data[i];
							var TABLENAME = item.TABLENAME + '(' + item.TABLEDESC + ')';
							tableDesc.tableName = TABLENAME;
							obj.push(tableDesc);
						}
						//执行loader的success回调函数(装载数据)
						success(obj);
					},
					//异常处理
					error: function (xml, text, msg) {
						error.apply(this, arguments);
					}
				});
			}

		}
	});
           

这样实现了以上的全部需求功能,建议好好分析一下我的完整代码,很简单,但是我写的时候写半天(还是自己太菜!!)

更多请参考easyui官方教程:combobox组合框

继续阅读