表格 含下拉框 新增一行问题

提问 未结 14 299
谢Sir
谢Sir VIP4 2019-11-17
悬赏:20飞吻
版本:layui 浏览器:
table使用下拉框新增一行时重载会清空之前选定的数据。哪位有解决方法
回帖
  • IDyun
    2019-11-17
    可参考 https://fly.layui.com/jie/59054/#item-1571908642416
    你渲染下拉框模板的时候赋值 选择项。 当前行数据 d 里面有 上次 选中的值。然后使用laytpl 语法赋值。
    https://www.layui.com/doc/modules/laytpl.html#syntax
    1 回复
  • 监听select change事件,有改变时修改cache数据,reload时不就在了。。
    1 回复
  • HiTerry
    2019-11-17
    把下拉框写在外面,表格重载的时候整个表格会刷新的
    0 回复
  • 谢Sir
    2019-11-17
    @IDyun 下拉框也是动态渲染的,不是固定的
    0 回复
  • 谢Sir
    2019-11-17
    @追逐_梦想 是的reload 就没有了
    0 回复
  • @谢Sir 是的呀。监听select change事件,有改变时修改cache数据 。。 还看不懂我就没办法了。

    // 监听下拉框,当值有更新时,修改缓存中的数据
    let selects = $(`[lay-id='${tableId}'] .layui-table select[data-name] `)
    for (let i = 0; i < selects.length; i++) {
    let select = selects[i]
    form.on(`select(${select.getAttribute('lay-filter')})`, function (obj) {
    let row = obj.elem.getAttribute('data-index')
    let name = obj.elem.getAttribute('data-name')
    table.cache[tableId][row][name] = obj.value
    });
    }
    0 回复
  • 上面那段代码有点小问题,copy的过来的时候选错分支了。 以下是主要代码。 select 需要添加 lay-filter

    form.on(`select(select_filter)`, function (obj) {
    let row = obj.elem.getAttribute('data-index')
    let name = obj.elem.getAttribute('data-name')
    table.cache[tableId][row][name] = obj.value
    });
    0 回复
  • 谢Sir
    2019-11-17
    @追逐_梦想 我的图片里有类似的修改,但是新增一行重载表格就没有了
    0 回复
  • @谢Sir 哦哦,不好意思,没太注意。 重载会清空之前选定的数据 ,假如cache里面数据正确的话,那就只是没选中的问题。 而选中 需要你的 template里面做判断
    0 回复
  • 谢Sir
    2019-11-17
    @追逐_梦想 感谢您的回复
    0 回复