Layui数据表格动态cols(字段)动态变化(2)

                                                       Layui数据表格动态cols(字段)动态变化(2)

一、说明:(2)和(1)的不同:

  1. 动态列的计算方式不同
  2. (1)用的是 [ 自动化渲染的重载 ] ;(2)用的是 [ 方法级渲染的重载 ]。(这篇博客主要是想体现这一点,因为有的时候(有 操作列 toolbar 的时候)自动化渲染表格列并不能成功,要用方法级渲染才行)

二、Layer表格重载的API :

    在页面搜索:很多时候,你需要对表格进行重载。比如数据全局搜索。以下方法可以帮你轻松实现这类需求(可任选一种)

三、相关代码如下所示:

//表格渲染
let tableObj = table.render({
    elem: '#LAY-user-table',	//表table标签ID
    url: '/././.',
    where: {type: type},
    cols: [[
        {field: 'id', width: 80, title: 'ID', sort: true},
        {field: 'type', title: '类型'},
        {field: 'source', title: '来源'},
        {field: 'name', title: '姓名'},
        {field: 'age', title: '年龄'},
        {field: 'create_time', title: '创建时间'},
        {title: '操作', width: 210, align: 'center', fixed: 'right', toolbar: '#table-oper-admin'}
    ]],
    text: {
        none: '暂无相关数据!'
    },
    page: true,
    parseData: function(res) {
        return {
            code: res.code,
            msg: res.msg,
            count: res.data.count,
            data: res.data.data
        }
    },
    done:function(){

    }
});

//监听搜索
form.on('submit(LAY-table-search)', function(data){
    let field = data.field;
    field.type = type;

    let tableCols = assembleTableCol(field.type);	//重新定义表格列

    //执行重载
    /*自动化渲染的重载
    table.reload('LAY-user-table', {
        where: field,
        page: {curr: 1},
        cols: tableCols
    });*/


    //方法级渲染的重载
    tableObj.reload({
        where: field,
        page: {curr: 1},
        cols: tableCols
    });
});

//动态处理 表格列
//如果type=1,则显示[类型、来源]列
function assembleTableCol(type){
    let startCols = [
        {field: 'id', width: 80, title: 'ID', sort: true}
    ];

    let middleCols = [];
    if( type == 1 ){
        middleCols = [
            {field: 'type', title: '类型'},
            {field: 'source', title: '来源'}
        ];
    }

    let endCols = [
        {field: 'name', title: '姓名'},
        {field: 'age', title: '年龄'},
        {field: 'create_time', title: '创建时间'},
        {title: '操作', width: 210, align: 'center', fixed: 'right', toolbar: '#table-oper-admin'}
    ];

    let finallyCols = [];
    if(middleCols){
        finallyCols = startCols.concat(middleCols);
    }
    finallyCols = finallyCols.concat(endCols);

    return [finallyCols];
}

四、注意

由于版本不同,可能显示不出我这个Demo的效果。

我这个 Demo 的版本是 2.4.5;2.5.5就显示不出我这个效果。

查看Layui版本:alert(layui.v);

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
layui是一款基于jQuery的前端UI框架,其中的数据表格组件可以快速实现数据的展示和操作。而动态扩展是指在数据表格动态增加或删除的操作。 在layui数据表格中,可以通过设置cols参数)来定义表格数和属性。例如: ``` var table = layui.table; table.render({ elem: '#demo', url: '/data', cols: [[ {field: 'id', title: 'ID', width: 80}, {field: 'username', title: '用户名', width: 120}, {field: 'email', title: '邮箱', minWidth: 200}, {field: 'sex', title: '性别', width: 80}, {field: 'city', title: '城市', width: 100}, // 其他字段... {field: '操作', title: '操作', toolbar: '#barDemo', width: 150} // 操作 ]] }); ``` 在以上代码中,通过设置cols参数来定义表格属性,每个使用一个对象来表示,其中field表示字段名,title表示标题,width表示宽度。除了基本的属性外,还可以使用toolbar属性来定义某的操作按钮,以实现扩展的功能。 如果要动态增加或删除,可以在渲染表格之后,通过遍历并修改cols参数中的数组,实现的增加或删除。例如: ``` var newCols = table.config.cols; // 获取当前表格参数 // 动态增加一个 newCols[0].push({field: 'age', title: '年龄', width: 80}); // 动态删除一个,可以通过遍历找到需要删除的 for(var i=0; i<newCols[0].length; i++){ if(newCols[0][i].field === 'email'){ newCols[0].splice(i, 1); break; } } // 重新渲染表格 table.render({ elem: '#demo', url: '/data', cols: newCols }); ``` 通过以上代码,我们可以实现动态扩展的功能。当需要增加或删除时,可以修改cols参数,并重新渲染表格,即可实现动态扩展的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值