Layui框架之弹窗动态列表默认选中已选中项的方法
重新进入弹窗页后默认选中已选择项目
本人的公司前端一直在用Layui前端框架,所以一直在研究基于Layui框架的前端页面编写方法。前段时间做的项目中遇到一个问题:在一个弹窗中点击“检查事项”选择,选择检查事项后返回父页面,当需要继续添加事项后重新加点击进入页面。此时需默认选择刚才已选择的事项。具体实现方法如下:
前台:
// 弹窗页面列表回显
var tableIns = table.render({
elem: '#topic',
url: '/访问后台路径',
cellMinWidth: 95,
page: true,
height: "full-100",
limit: 20,
limits: [10, 20, 30],
id: "topic",
method: 'post',
cols: [[
{type: "checkbox", fixed: "left", width: 50},
{field: 'id', title: '主键',hide:true, align: 'center'},
{field: 'tdName', title: '名录名称', align: 'center'},
{field: 'empStr', title: '部门', align: 'center'},
{field: 'tdTypeValue', title: '类别', align: 'center'},
{field: 'containSubject', title: '包含主体', align: 'center'},
]],
//此处即为判断是否为已选中项
parseData: function(res){ //res 即为原始返回的数据
for(var i=0; i<res.data.length; i++){
if(res.data[i].checked==1){
//默认选中状态
res.data[i].LAY_CHECKED=true;
}
}
return {
"code": res.code, //解析接口状态
"msg": res.msg, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
}
});
后台:
实体类中需添加一条是否默认选中字段,此处我添加了枚举类
/**回显选中**/
@Transient
private int checked = CheckItemEnums.CheckedEnum.NO.getChecked();
控制层进行判断:
主要原理就是获取前台传回的id字符串,之后进行判断,如果为选中项,则给选中项checked字段赋予选中值;
//回显上次选中
String bodyIds = request.getParameter("bodyIds");
String[] split = bodyIds.split(",");
if (split[0]!=""){
List<TopicDirectory> list =
new ArrayList<TopicDirectory>();
for (int i=0;i<split.length;i++){
TopicDirectory topicOne =
this.service.getTopicDirectoryOne(Integer.parseInt(split[i]));
list.add(topicOne);
}
if (list != null && list.size() > 0){
for (int i=0;i<ret.getData().size();i++){
for (int e=0;e<list.size();e++){
Integer id = ret.getData().get(i).getId();
Integer id1 = list.get(e).getId();
if (id - id1==0){
ret.getData().get(i).setChecked(CheckItemEnums.CheckedEnum.YES.getChecked());
}
}
}
}
}