为了实现上图的编辑回显功能,其中下图中红框中的内容是动态添加的,它的属性名不确定,但是这些属性的值,都已经在后台查询出来,是一个map的值,并存放到request中,js中使用el表达式,如${xinxi.name}这样就能获取相应的值。
这样问题就来了,向一些固定的参数,如name,这样的参数,我直接可以给input框进行value="${xinxi.name}"这样进行赋值,但动态拼接出来的input,在使用el的时候,就出现问题,el不能进行动态参数的设置,页面书写错误。
为解决这个问题,我的做法是进行一个转化;
1、在后台将得到的map的数据,在填一个,将map转化为json格式,并存储到request中
2、在前台用变量进行json数据的获取
3、获取之后,将js中得到的json串,在转成json格式
4、js使用json的循环,将需要的数据动态取出,并去给相应的input框
最终效果实现:
部分代码如下:
//这是循环动态拼接table中4列参数
for (var i = 0 ; i < data.length ; i ++ ) {
if ((i)%4 == 0 ) {
str += "<tr>";
}
var aa = data[i].csm.toLowerCase();
str += "<td align='right' class='l-table-edit-td'><span style='color: red'>*</span>"+data[i].csmc+"</td>";
str += "<td align='left' class='l-table-edit-td' style='width:160px;'>";
str += "<input id='"+data[i].csm.toLowerCase()+"' name='"+data[i].csm.toLowerCase()+"' value='"+data[i].csz+"' type='text' ltype='text' maxlength='30' class='inputtext' /></td>";
if ((i)%4 == 3) {
str += "</tr>";
}
}
//这个给table中的tbody赋值
$("#zdlxcs").html(str);
//将动态获取的参数的data赋值给全局的一个变量
csdata = data ;
//在相应的方法中,进行动态参数的循环赋值
for (var i = 0 ; i < csdata.length ; i ++ ) {
//获得动态参数的属性名
var cc = csdata[i].csm.toUpperCase();
//获得后台map的相应的json格式的数据
var dd = '${xinxijson}';
var ee = JSON.parse(dd);
//给相应的动态生成的input进行赋值
$("#"+cc.toLowerCase()).val(ee[cc]);
}