layui吧 关注:389贴子:1,028
  • 3回复贴,共1

数据表格使用update更新一行数据时,使用了templet的列变成空了

只看楼主收藏回复

数据表格使用update方法更新一行数据时,使用了templet的列就变成空了;
请问如何解决


IP属地:山东1楼2019-03-15 10:33回复
    搜索table.js中的update方法
    替换为:
    (贴吧格式化有问题,自行把多个空格换行就行)
    ,update: function(fields){
    //修改行数据
    fields = fields || {}; layui.each(fields,function(key,value){ data[key] = value; }); that.eachCols(function(i, item2){ console.log(item2); // 判断指定字段是否使用模板进行数据展示。 // 是的话就直接赋值模板。 let html=''; let td = tr.children('td[data-field="'+ item2.field +'"]'); td.data('content', data[item2.field]); if((!item2.field ) || item2.type != 'normal'){ // to do nothing; }else if(item2.templet){ const templet = item2.templet; html = parseTempData({templet}, data[item2.field], data); }else{ html = data[item2.field]; } if(item2.field === 'adv_status'){ console.log(html); } td.children(ELEM_CELL).html(html); }); // 兼容一行中有好几个列使用toolbar的情况,所以使用数组。 var toolbarTemps = []; // 在下面继续更新toolbar的内容。 that.eachCols(function (index, colOption) { // 筛选出配置了toolbar的条目。 if (colOption.toolbar) { // 拿到了之后,除了需要模板id外,还需要一个key。这个key在初始化时内部已经生成 // 要通过它来定位这个toolbar放在哪一个位置表格td下的位置,所以也获取下来。 toolbarTemps.push({ temp: colOption.toolbar, key: colOption.key }); } }); // 直接循环已经获取到的模板id。 layui.each(toolbarTemps, function (index, value) { var temp = value.temp; // 模板id。 var key = value.key; // 用于定位的key。 // 用来保存新的渲染结果。 var tempStr; if (temp.indexOf("#") > -1) { // 说明这是模板id。 tempStr = $(temp).html(); } else { // 否则认为这个字符串本身就是一个模板字符串。 tempStr = temp; } // 使用数据重新渲染 if (tempStr) { var result = laytpl(tempStr).render(data); // 要使用key来确定具体的选择器,才能正确的找到位置。然后将结果设置进去。 rowTr.find("td[data-off='true'] div.laytable-cell-1-" + key).html(result); } }); }


    IP属地:广东2楼2021-04-11 22:29
    回复
      大哥解决了吗


      IP属地:河南3楼2023-06-26 17:28
      回复
        19年的问题了..


        IP属地:福建4楼2023-10-20 15:47
        回复