LAYUI更新表格行数据

  • Post author:
  • Post category:其他


公司有个需求,需要异步更新表格数据,尝试使用表格刷新功能,但是会有闪一下的现象,我自己看都难受,别提交付给客户了,大家可以自行试一下。

function reload_table_data(){
    //获取当前页
    var recodePage = $(".layui-laypage-skip .layui-input").val();
    //获取当前页条数
    var recodeLimit = $(".layui-laypage-limits").find("option:selected").val();
    console.log("当前页", recodePage)
    console.log("当前条数", recodeLimit)
    layui.table.reload("devices_table_table", {
        page: {
            curr: recodePage
        }
    })
}

解决方案如下:

第一步:定义表格时,给表格需要更新的列加上一个标签。

{
    title: '门禁状态',
    field: 'door_status',
    align: 'center',
    minWidth: 50,
    templet: function (d){
        res = ""
        switch (parseInt(d.door_status)) {
            case 1:
                res = "<span data-door='"+ d.id +"' style=\"color: #00B83F\">开启</span>"
                break
            case 2:
                res = "<span data-door='"+ d.id +"' style=\"color: gray\">关闭</span>"
                break
            case 3:
                res = "<span data-door='"+ d.id +"' style=\"color: #FF0022\">异常</span>"
                break
            default:
                res = "<span data-door='"+ d.id +"' style=\"color: #FF0022\">其他</span>"
        }
        return res
    }
},

第二步:然后动态更新标签内内容即可。

function doorStatusDisplay(device){
    var device_obj = $("span[data-door="+ device.id +"]")
    switch (parseInt(device.status)) {
        case 1:
            device_obj.css("color", "#00B83F").html("开启")
            break
        case 2:
            device_obj.css("color", "gray").html("关闭")
            break
        case 3:
            device_obj.css("color", "#FF0022").html("异常")
            break
        default:
            device_obj.css("color", "#FF0022").html("其他")
        }
}


$.ajax({
    type: 'get',
    url: GET_DEVICES,
    data: {page: recodePage, limit: recodeLimit, keyword: keyword},
    beforeSend: null,
    success: function (res) {
        if (res.code) {
            return;
        }
        res.data.devices.forEach(item => {
            doorStatusDisplay(item)
        })
    },
})


关键步骤是给需要修改的列添加上自定义标签,然后通过标签获取到元素,实现动态更新。至于获取数据,你们可以ajax轮询更新数据或者用websocket,按照自己需求来。



版权声明:本文为weixin_40647516原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。