JqGrid的colNames动态查询展示
由于正式环境后台服务器搭建在堡垒机,每次用plSql去查询数据寻找问题都要经过验证登录进去,一次还只能一个人连接远程连接数据库,老大让我做一个在系统上可以直接查询数据的附加小功能。 拿到任务后,经过分析,和以往jqGrid列表展示colNames固定了不同。唯一的难点就是jqGrid的colNames的动态展示和colModel的数据填充。首先想到的是网上查询下,看下前辈们的经验,一查例子很多。在自己搞的过程中还是遇到一些问题的,这里不多阐述,就把功能的实现说下。 ![很low的一个textarea+个button] 首先,肯定是需要根据输入的sql把colNames确定下来。 后台代码如下:
@ResponseBody
@RequestMapping("/getData")
public AjaxResult searchSql(ModelMap mm) {
String bsqinfo = getParameter("bsqinfo");
JqGrid paginate = (JqGrid) paginate(bsqinfo);
mm.put("bsqinfo", bsqinfo);
if (!Func.isEmpty(paginate)) {
mm.put("paginate", paginate);
return new AjaxResult().success(mm).setMessage("查询成功");
} else {
return new AjaxResult().setMessage("暂无数据");
}
}
前台:ajax返回成功后
先固定colNames,再后台查询一边填充colModel
function initGrid(rows, bsqinfo) {
var _colnames = [];
var _colmodel = [];
//遍历固定colNames ****
$.each(rows[0], function (key, value) {
_colnames.push(key);
_colmodel.push({
name: key,
index: key
})
});
//填充colModel 再走后台,正常查询即可 ***
jQuery(grid_selector).jqGrid({
url: "${ctxPath!}/${code!}/list?bsqinfo=" + bsqinfo,
shrinkToFit: false,
colNames: _colnames,
colModel: _colmodel,
pager: pager_selector
});
}
最终结果如下(演示):