LayUI+JavaScript表格动态列+表格分页

Vue+Element-UI见博文:Vue+Element表格动态列+表格分页
LayUI效果如下:
在这里插入图片描述
引入文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../../js/jquery-1.9.0.min.js" ></script>
    <script src="../../layui/layui.js" charset="utf-8"></script>
    <script src="../../js/url.js"></script>
    <link rel="stylesheet" href="../../layui/css/layui.css" media="all" />
    <title>LayUI+JavaScript表格动态列+表格分页</title>
</head>

先初始化一个table,然后对table进行渲染

<body>

<!-- table,注意id、lay-filter -->
<table id="allChannel" lay-filter="test3" lay-even lay-skin="nob"></table>

<!-- 最右边操作列定义,注意id -->
<script type="text/html" id="barDemo">
	<!-- lau-event点击触发的事件 -->
    <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>

接着

<script>
    layui.use('table', function(){
    	//表头str数组,field及title是必要的
        var str = [{field:"id", title:"ID"},{field:"title", title:"节目名称"}];
        $.ajax({	//请求表头中动态部分,返回结果是List<Map>
            type:"get",
            url:getURL("properties"),
            dataType : "json",
            success:function(data) {
                for(var i = 0 ; i  < data.length ; i++){
                    var field = data[i].propertyName;
                    var title = data[i].propertyShow;
                    str.push({field:field, title:title});	//遍历 push
                }
                //最后一列操作列,toolbar: '#barDemo'与上一致
                str.push({fixed: 'right',title:'操作', width:150, align:'center', toolbar: '#barDemo'});
                var table = layui.table;
                table.render({
                    elem: '#allChannel'
                    // ,toolbar: '#toolbarDemo'
                    ,cellMinWidth: 80
                    ,url: getURL("list")	//请求表格数据
                    ,response:{
                        statusCode: 200
                    }	//LayUI表格请求数据返回格式下面会有展示
                    ,cols: [str]	//表头数组就是处理完的str
                    ,page: true	//与Element-UI最不同的是LayUI表格的分页只需要这一行
                    ,text: {
                        none: '没有节目~'
                    }	//如果返回数据为空,提示 没有节目~
                });
            	//事件
                table.on('tool(test3)', function(obj){
                    var data = obj.data; //获得当前行数据
                    var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
                    if(layEvent === 'del'){ //删除
                        layer.confirm('确定删除节目么', function(index){
                            obj.del(); //删除对应行
                            $.ajax({
                                url: getURL("delete"),
                                method: "POST",
                                data: {
                                    id: data.id
                                },
                                success: function (data) {
                                    layer.alert(data)
                                }
                            })
                            layer.close(index);
                        });
                    } else if(layEvent === 'edit'){ //编辑
                        window.location.href=getURL("pages/property/modify.html")+"?id="+data.id
                    }
                });
            }
        });
    });
</script>
</body>
</html>

返回数据参考:
getURL(“properties”)返回数据如下:

[{
	"propertyName": "actors",
	"propertyShow": "演员"
}, {
	"propertyName": "points",
	"propertyShow": "评分"
}, {
	"propertyName": "release_time",
	"propertyShow": "上映时间"
}, {
	"propertyName": "dfdfds",
	"propertyShow": "测试"
}, {
	"propertyName": "desc",
	"propertyShow": "简介"
}]

getURL(“list”)
list?page=1&limit=10返回数据

{
	"code": 200,
	"size": 10,
	"count": 12,
	"curr": 1,
	"data": [{
		"actors": "没有48787",
		"id": "10270",
		"title": "测试",
		"points": "10",
		"release_time": "2019.08.09",
		"desc": "测试"
	}, {
		"actors": "1",
		"id": "10271",
		"title": "测试",
		"points": "2",
		"release_time": "3",
		"desc": "4"
	}, {
		"actors": "12",
		"shuxing": "12",
		"name": "",
		"id": "10272",
		"title": "测试添加",
		"points": "23",
		"desc": "12"
	}, {
		"actors": "没有",
		"shuxing": "测试",
		"id": "10274",
		"title": "测试1",
		"points": "10",
		"desc": "简介也没有"
	}, {
		"actors": "没有",
		"shuxing": "测试",
		"id": "10275",
		"title": "测试1",
		"points": "10",
		"desc": "简介也没有"
	}, {
		"actors": "",
		"shuxing": "",
		"id": "10276",
		"title": "测试2",
		"points": "",
		"desc": ""
	}, {
		"actors": "",
		"shuxing": "",
		"id": "10277",
		"title": "测试3",
		"points": "",
		"desc": ""
	}, {
		"actors": "",
		"shuxing": "",
		"id": "10278",
		"title": "测试4",
		"points": "",
		"desc": ""
	}, {
		"actors": "",
		"shuxing": "",
		"id": "10279",
		"title": "测试5",
		"points": "",
		"desc": ""
	}, {
		"actors": "",
		"shuxing": "",
		"id": "10280",
		"title": "测试6",
		"points": "",
		"desc": ""
	}]
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章