layui-table动态列实现

本文介绍了如何在layui中实现table动态列的功能。通过从后台获取数据并处理为数组,然后动态添加元素到二维数组中作为动态列,最后在table渲染时指定数据和列。文中提供了一个不依赖后台数据的简单示例来展示动态列的创建过程。

前两天项目遇到一个场景,使用layui table时,除了固定列之外,还需要使用动态列来展示一些动态数据。

mysql查询动态行转动态列,并使用mybatis执行语句

基本思路:
  1. 从后台获取数据,处理成数组类型
  2. 声明一个二维数组,根据列需求动态添加元素作为动态列
  3. table渲染时指定数据和列

套路:


$.ajax({
    url: url
    , type : "GET"
    , dataType: "JSON"
    , success: function(res) {

        //处理数据,tableDate
        //生成动态列二维数组col

        table.render({
            elem: "#tableId"
            , id: tableId
            , data: tableData
            , cols: col
        });
    }
});
举例(这里就不使用后台获取数据的方式了,直接声明):
//固定列
//表格数据tableData
var tableData = [
    {
        "name": "詹溪"
        ,"age": 18
        ,"class": "高三(2)班"
    },
    {
        "name": "徐柯"
        ,"age": 18
        ,"class": "高三(3)班"
    },
    {
        "name": "蓝毅"
        ,"age": 17
        ,"class": "高三(3)班"
    },
    {
        "name": "温邱"
        ,"age": 18
        ,"class": "高三(3)班"
    }
];

//固定列二维数组
var col = [[
    {field: "name", title: "姓名"}
    , {field: "age", title: "年龄"}
    , {field: "class", title: "班级"}
]];

生成动态列(重点):

//动态列
var subjectField = ["math", "chinese", "english"];
var subjectTitle = ["数学", "语文", "英语"];

//给tableData动态添加数据
for (var i = 0; i < subjectField.length; ++i) {
    for (var j = 0; j < tableData.length; ++j) {
        tableData[j][subjectField[i]] = Math.floor((Math.random()*100)+1);
    }
}

//动态添加列属性
for (var i = 0; i < subjectField.length; ++i) {
    //向数组插入元素:splice(index, howmany, items...)
    //index要插入的位置
    //howmany从该位置删除多少项元素
    //items要插入的元素
    //col[0],注意col是二维数组
    col[0].splice(col[0].length, 0, {field: subjectField[i], title: subjectTitle[i]});
}
//
//渲染table
table.render({
    elem: "#tableId"
    , id: tableId
    , data: tableData
    , cols: col
});

效果:
在这里插入图片描述
参考资料:
fly社区 - layui table 能否做到 动态列

layui-soul-table 是一款基于layui框架开发的用于展示数据的表格插件。要快速隐藏列,可以通过以下步骤进行操作: 1. 首先,确保已加载layuilayui-soul-table的相关资源文件。可以在页面中引入layuilayui-soul-table的CSS和JS文件,例如: ```html <link rel="stylesheet" href="path/to/layui/css/layui.css"> <link rel="stylesheet" href="path/to/layui-soul-table/soulTable.css"> <script src="path/to/layui/layui.js"></script> <script src="path/to/layui-soul-table/soulTable.js"></script> ``` 2. 在HTML页面中,创建一个具有固定id的表格元素,例如: ```html <table id="demo" lay-filter="test"></table> ``` 3. 在JavaScript代码中,使用layui-soul-table的自定义参数来创建表格,并设置隐藏列的显示属性。例如: ```javascript layui.use(['table', 'soulTable'], function(){ var table = layui.table; var soulTable = layui.soulTable; table.render({ elem: '#demo', url: '/api/data', // 数据接口 cols: [[ {field:'id', title: 'ID'}, {field:'name', title: '名称'}, {field:'age', title: '年龄'}, // 其他列 {field:'操作', title: '操作', toolbar: '#barDemo', width: 150} // 需要隐藏的列 ]], }); soulTable.on('filter(test)', function(data){ // 判断隐藏列的显示状态 var isHide = data.isHide; if(isHide){ $('#demo .layui-table-view .layui-table').find('[data-field="操作"]').hide(); }else{ $('#demo .layui-table-view .layui-table').find('[data-field="操作"]').show(); } }); }); ``` 通过以上步骤,就可以在 layui-soul-table 中快速隐藏指定的列。具体实现是通过监听"filter(test)"事件,判断隐藏列的状态,然后利用jQuery的hide()和show()方法来控制目标列的显示属性。使用这种方法,我们可以方便地实现快速隐藏列功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值