前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Thinkphp+layui动态表格的使用

Thinkphp+layui动态表格的使用

作者头像
申霖
发布2019-12-27 17:46:05
3.8K1
发布2019-12-27 17:46:05
举报

今天早上想将后台中的表格部分使用layui的动态表格模块来实现,早上简单的看了下手册,晚上回家详细的看了手册,写了代码,实现了功能。下面直接上代码及效果图:

一、效果图

动态表格
动态表格

描述:实现可表头宽度自动适应,对关键字段进行了排序操作(ID,排序),添加了常用的操作按钮(编辑、删除),右上角添加了工具栏(tool),包含内置的筛选、打印、导出等三个功能,都是layui内置好的。

Thinkphp
Thinkphp

二、thinkphp代码

/**
 * 数据
 * @return \think\response\Json
 * @throws \think\exception\DbException
 */
public function apiGetIndex()
{
    $limit = input('get.limit');
    $data  = $this->link_model->getPageList([], '', '', $limit);
    $data  = json_decode(json_encode($data), true);
    return json(['code' => 0, 'data' => $data['data'], 'count' => $data['total']]);
}

注意事项:code = 0 表示成功,data = [ ] 表示返回的数据,count = '' 表示总数  此三项为必须项

三、HTML代码

<table id="table" lay-filter="test"></table>
<script type="text/html" id="barDemo">
    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>

四、JS代码

<script>
    layui.use('table', function () {
        var table = layui.table;
        //第一个实例
        table.render({
            elem: '#table'
            , height: 312   //表格高度
            , even: true    //隔行换色
            , url: '/admin/link/api.html' //数据接口
            , page: true //开启分页
            , toolbar: true //开启表格头部工具栏区域
            , defaultToolbar: ['filter', 'print', 'exports'] //工具栏右侧的图标
            , text: {
                none: '暂无相关数据' //默认:无数据。注:该属性为 layui 2.2.5 开始新增
            }
            , cols: [[ //表头
                {field: 'id', title: 'ID', sort: true, fixed: 'left'}
                , {field: 'create_time', title: '添加时间'}
                , {field: 'link_name', title: '链接名称'}
                , {field: 'link_url', title: '链接地址'}
                , {field: 'link_order', title: '排序', sort: true}
                , {field: 'link_status', title: '展现状态'}
                , {field: 'link_open', title: '打开方式'}
                , {fixed: 'right', title: '操作', width: 150, align: 'center', toolbar: '#barDemo'} //这里的toolbar值是模板元素的选择器
            ]]
        });
        //监听工具条
        table.on('tool(test)', function (obj) {
            //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
            var data = obj.data; //获得当前行数据
            var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
            var tr = obj.tr; //获得当前行 tr 的DOM对象

            if (layEvent === 'del') { //删除
                layer.confirm('真的删除此数据吗?', function (index) {
                    obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
                    layer.close(index);
                    //向服务端发送删除指令
                });
            } else if (layEvent === 'edit') { //编辑
                //do something
                //同步更新缓存对应的值
                obj.update({
                    username: '123'
                    , title: 'xxx'
                });
            }
        });
    });
</script>

此代码已经上传至码云

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档