JQGrid 动态添加 Select 下拉框
在JQGrid 添加下拉框通常是这样做的
, {
name : 'week',
index : 'week',
label : '周',
width : 110,
editable : true,
edittype:'select',
editoptions :{value:{0:'周一',1:'周二',2:'周三',3:'周四',4:'周五',5:'周六',6:'周日'}},
search : false
}
在colModel 中 添加一列属性,属性中添加edittype 里面的可选值有text, textarea, select, checkbox, password, button, image and file.我们现在使用的是select 下拉框,然后editoptions 是对于edit时的数据处理以及限制。上面显示的是在jqgrid中直接定义select下拉框的各个值的方式。
而对于从java后台提取数据到表格中,可以类似ajax取数据方式直接在editoptions中添加后台获取数据的地址。
后台代码
List<Role> roleList = roleService.doQueryAll();
StringBuilder builder = new StringBuilder();
builder.append("<select>");
for (int i = 0; i < roleList.size(); i++) {
builder.append("<option value='" + roleList.get(i).getRoleKey() + "'>" + roleList.get(i).getRoleValue() + "</option>");
}
builder.append("</select>");
writeJSON(response, builder.toString());
前台代码
{
name : 'roleCn',
index : 'role',
label : '角色',
width : 100,
editable : true,
edittype : "select",
//editoptions : {value : "ROLE_ADMIN:超级管理员;ROLE_RESTRICTED_ADMIN:普通管理员;ROLE_USER:普通用户"},
editoptions : {
dataUrl : "${contextPath}/sys/role/getRoleSelectList"
},
search : false
}
代码简单易懂,通过在editoptions 中添加一条dataUrl ,将代码数据源定向到后面的getRoleSelectList函数中去,将role中所有属性查询出来,将所有名字放进字符串中(此时也往往是对于需要放入下拉框的各种属性的过滤地点),得到所需填入的值以及名称后,自己手写htmlselect代码,最后得到一个完整的字符串格式的html代码,之后只需通过Json传输出去就好啦。