1. 需求说明
首先看一下这几个需求:
1.我要将combobox组合框下拉列表内的数据进行拼接,原来是只显示表名,现在我需要以表名(中文名)这种形式显示在下拉列表内,并且在下拉列表中我选择了某一项表数据,我需要同时将我选择的这项内容展示在组合框中
原来显示:
需要展示:
并且选择一项文本框内需要展示:
然后看一下后台发送数据:
可以看到一个map集合内装了两条数据,表名和表中文名,注意combobox下拉框内只能写一个值比如这样:
所以需要进行拼接数据比如这样:
这样实现的效果就是:
但是当我选择一项内容时文本框内还是只能显示一部分,要么是表名要么是表中文名,所以我果断放弃了这个方法另寻别路!
第二个需求:
2.当在输入框中输入内容时,比如搜索'高血压'可以将所有关于高血压的数据展示在下拉框中供我选择,也就是相当于一个组合框内的搜索功能
也就是以下方式展示数据:
这个需求结合第一个需求可以使用combobox组合框的loader属性方法实现:
首先
下面就是我的完整代码
$("#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组合框