如果要控制表格某个单元格不可编辑,如何去做?

提问 已结
15 601
dududu
dududu VIP4 2018-6-9
悬赏:20飞吻
版本:layui 2.3 浏览器:谷歌
如果要控制表格某个单元格不可编辑,如何去做?

比如,表格的某列设置了:

,{field:'Data_value', title: '本年', edit: 'text'}

当 Data_value == 0 的时候,我想关闭此单元格的 edit可编辑,只能读。

回帖
  • [偷笑] 说错了是data-edit~~
    0 回复
  • 自定义模板
    0 回复
  • @疾风的轨迹 试过这个方法,但是自定义并不能控制 edit 可编辑 的属性。请问你的实现方法是什么?
    0 回复
  • 模板引擎是绝对处理不了的,因为是否可编辑的关键内容是td上是否有lay-edit。在done回调中处理,比如下面的
    // 男性不可以修改年龄女性可以
    done: function (res, curr, count) {
    debugger;
    // 当前页面缓存数据
    var dataTemp = table.cache[this.id];
    // 控件渲染出来的table
    var tableElem = this.elem.next();
    layui.each(dataTemp, function (index, data) {
    if (data.sex === 'M') {
    // 关闭年龄的修改
    tableElem.find('tr[data-index="'+index+'"]').find('td[data-field="age"]').removeAttr('data-edit');
    }
    });
    }
    0 回复
  • @岁月小偷 非常感谢!问题已经彻底解决,而且从中学习了table数据缓存其与view元素的使用。我在一个页面上做了几个table,所以对你的方法做了小改动,就是先找出缓存数据的某个表,然后在循环处理。
    0 回复
  • @dududu 不客气[微笑] 测试代码比较粗糙,肯定需要根据当前的环境打磨哈,主要就是能说明白个思路而已[嘻嘻]
    0 回复
  • @dududu 好吧,又被社区的文本编辑器坑了一回,明明我贴进去的代码是如下图的就变成你看到的那样~~
    0 回复
  • @岁月小偷 再次感谢!! 如果早知道这个写法,也不同调试半天去找当前table了!
    另:我用这个思路去改变一个单元格中的显示值,比如原来是“0”,我想修改为空,但为什么要么没有效果,要么表格的边框都没了?
    比如:
    var a= tableElem.find('tr[data-index="'+index+'"]').find('td[data-field="Data_value"]');
    a.html('');
    或者
    a.val('');
    请赐教!
    0 回复
  • 这个你改动的范围有点大啦,你可以右键审查元素看看里面的东西,其实显示的东西都是包在一个div.layui-table-cell里面的,所以要改变的是这里面的html,a.find('div.layui-table-cell').html('');这样试试看。
    0 回复
  • 当然这个根据值的情况去分支显示的这个可以直接用templet就可以了,能用模板的就尽量用模板,免得还要在done里面过一道手。
    0 回复
  • @岁月小偷 明白了!非常感谢![good]
    0 回复
  • @dududu 不客气[微笑]
    0 回复
  • @岁月小偷 在我所有的提问中,您是回答最深入、最详尽的,不仅解决了问题,还开拓了思路。而且我查看了您对其他用户的回答,也是这个风格。有您这样的社区用户,相信layui会越走越好。
    0 回复
  • @dududu 过奖啦[嘻嘻] ,主要是语言组织能力一般啦哈,很难更精简的将想要表达的意识表达出来。每个人都有擅长还有不擅长的地方额,社区是个交流的好地方,大家遇到的问题积累的经验都可以相互借鉴相互学习,实现1+1>2,我也是看到知道的问题或者想搞明白的问题就会钻进去,搞明白了自己后面的开发也会规避很多不必要的弯路。当然也有说错的哈,比如昨天看到var gettpl = demo.innerHTML;这种写法,一直以为是错的,因为id在前面没有定义,后来才发现其实是可以的,它会去找id为demo的dom,也是长见识了哈,基础也有待改善哈,不过自己以后还是不会使用这种写法,容易造成误解的写法还是不用为好,只不过知道了这个以后看别人的代码也就不会理解错了[偷笑]
    0 回复
  • [good] 我已经用你昨天给我的方法和同样有需求的人探讨了!共同努力吧.
    0 回复