layui表格复选框动态显示

描述:

根据后台返回的数据,
1.判断表格数据的是否可编辑;
2.判断每一行数据是否能被选中提交;

可编辑性

idEdit是标识字段:1为可编辑,0为不可编辑。

{field: 'itemValue', title: '数据',
	edit:"text",editFn:function (data) {
         return data["isEdit"]=="1";//true为可编辑
 }}

。。。。好想要设置其他颜色的代码色哇!

是否可被选中

方案一:将复选框改为禁止选中的样式

在表格加载成功的回调函数中进行处理。

for(var k in list){
	//isCheckBox为标识,为0设置不可选中样式
   if(list[k]["isCheckBox"] == "0"){
     $(".layui-table tr[data-index="+ k +"] input[type='checkbox']").prop("disabled",true)
     $(".layui-table tr[data-index="+ k +"] input[type='checkbox']").next().addClass("layui-btn-disabled");
     }
 }

ok!完成
这样复选框就无法被选中了。
然而问题出现了。。。。。
在这里插入图片描述
当点击表头的全选按钮时,所有的复选框都被选中,我的天,,,那就换方案呗

方案二:当isCheckBox为0时,直接将该数据前的复选框去掉。

相同的地方,直接用空的span标签替换复选框

for(var k in list){
   if(list[k]["isEdit"] == "0"){
       $("tr[data-index="+ k +"] td[data-field='0'] div").replaceWith("
") } }

效果呈现
在这里插入图片描述
这样就可以了。
测试之后又出现了问题。。。。。还是在全选按钮上
全选之后获取的选中数据,与实际的要提交数据不吻合。具体的逻辑我还是没搞懂,,,
查找之后发现 layui表格的缓存数据,存在layui.table.cache中,选中的数据会增加一个字段LAY_CHECKED:true,这个字段的有无,与需要的数据不符,所以小菜鸡只能手动的改掉该字段。
写一个checkbox的监听

table.on("checkbox",function (data) {
  let {dataCheckTable} = table.cache;//拿到缓存数据
  if(data.type == "all"){   //all表示全选
      for(let k in dataCheckTable){
          if(dataCheckTable[k]["isCheckBox"] == 1){
              dataCheckTable[k]["LAY_CHECKED"] = true;
          }else{
              dataCheckTable[k]["LAY_CHECKED"] = false;
          }
      }
  }
})

继续测试
嗯,问题无处不在,当所有的数据都没有复选框时。。。。。
在这里插入图片描述
没错,因为加的span标签没设置宽高,当没有数据撑起后,就出现了这个问题,在这里感谢一下后台小哥不小心删掉了数据,发现了这个问题!
所以/。。】给span设置一个宽高吧。

继续测试
目前的解决就是这样,不晓得还有没有潜在问题,还需要测试。。。。

你可能感兴趣的:(layui表格复选框动态显示)