layui数据动态表格,如果返回的json格式是默认格式就好了,从api上直接copy下来用就可以,可是我这里返回的json格式如下:
{
"code": 200,
"content": {
"currentPage": 1,
"hasNext": true,
"hasPrev": false,
"pageSize": 3,
"records": [
{
"accountno": "009",
"id": "030AC067-8953-48A9-9A11-66E1D60500F5",
"idcard": "321654",
"name": "cbb",
"password": "123456",
"roleid": null,
"status": true
},
{
"accountno": "011",
"id": "031AC067-8953-48A9-9A11-66E1D60500F5",
"idcard": "362201199311295412",
"name": "gyw",
"password": "123456321",
"roleid": null,
"status": true
},
{
"accountno": "005",
"id": "032AC067-8953-48A9-9A11-66E1D60500F5",
"idcard": "362201199311295412",
"name": "大阳",
"password": "123456",
"roleid": null,
"status": true
}
],
"totalPages": 5,
"totalRecords": 13
},
"message": null,
"success": true
}
代码直接套弄不进去,所以的先处理一下;基本步骤是ajax,后再进行数据处理,本来想自定义格式的,但是没有成功,如果有兴趣的话可以自行研究。
下面上代码了:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/layui/css/layui.css" media="all">
<script src="/jquery/jquery-3.2.1.js" ></script>
<script src="/layui/layui.js" charset="utf-8"></script>
</head>
<body>
<h1>layui表格</h1>
<div>
<!-- 查询栏 -->
<form class="search-form layui-form">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">员工名称</label>
<input class="layui-input" name="name" type="text" style="width: 165px;">
</div>
<div class="layui-form-item layui-inline search">
<button class="layui-btn layui-btn-normal" lay-filter="searchBtn" lay-submit>查询</button>
</div>
</form>
<div>
<table class="layui-hide" id="test" lay-filter="test3" ></table>
</div>
</div>
<div id="E_add_edit" style="display:none">
<form class="layui-form" style="padding:20px">
<!-- 用户名 -->
<div class="layui-form-item emp-name">
<label class="layui-form-label" >用户名</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" placeholder="请输入用户名">
</div>
</div>
<!-- 确定 -->
<div style="text-align: center; border: none">
<button class="layui-btn layui-btn-normal" lay-filter="saveBtn" lay-submit>确定</button>
</div>
</form>
</div>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
<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','layer','laypage','form'],function(){
var table=layui.table;
var layer = layui.layer;
var form = layui.form;
var laypage = layui.laypage;
var data; //保存数据
var postData={
name:"NULL",
pageNumber:1,
pageSize:10
};
//发送ajax 列表查询ajax
function send(postData){
$.ajax({
type: "POST",//请求的方式
url: "/main/version1/empList/"+new Date().getTime(),//请求的接口
data: postData,//参数(可传可不传递)
dataType: "json",//数据类型
async:false,
success: function (res) {
data=res.content.records;
resultData=res.content.records;
//console.log("data1 "+data[0].id);
},
error:function(err){
//失败之后执行(我不管,失败别找我i)
obj=err;
alert("数据不存在")
}
})
}
var infoTable;
var
// 表单需要的变量
infoOptions = {
elem: '#test',
// width: 347,
limits: [10],
cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
cols: [[
//{field: 'id', title: 'ID',width:20, fixed: 'left'}
{field: 'id', title: 'ID', type:'checkbox', width:120, sort: true, fixed: 'left'}
,{field: 'accountno', title: '编号', width:120}
,{field: 'name', title: '用户名', width:120,edit:'text'}
,{field: 'idcard', title: '身份证', width:220}
,{field: 'password', title: '密码', width:120,edit:'text'}
,{field: 'status', title: '状态', width:120}
,{fixed: 'right',title: '操作', width:178, align:'center', toolbar: '#barDemo'}
]],
data: []
};
// 页面初始化
// 查询 ----------------------------------------
//监听提交
form.on('submit(searchBtn)', function(data){
//layer.msg(JSON.stringify(data.field));
var str=JSON.stringify(data.field);
var data;
layer.msg(str);
// 转换 {"name":"gsfs"}
var json = eval('('+str+')');
postData.name=json.name;//直接取值 结果0
console.log("name: "+name);
init();
return false;
});
// 表格初始化 ------------------
function init (){
// 列表请求
send(postData);
// 完成表格数据
$.extend(infoOptions, {data: data});
infoOptions.page = {
curr: 1
}
console.log("data1 "+data[0].id);
table.render(infoOptions);
data=null;
}
// 页面初始化---------------------------------
init();
var postData_add_edit={
id:"NULL",
name:"NULL",
accountno:"NULL",
password:"NULL",
status:"NULL",
idcard:"NULL"
};
var message;
//发送ajax 新增修改ajax
function sendAE(postData_add_edit){
$.ajax({
type: "POST",//请求的方式
url: "/main/version1/updateemp/"+new Date().getTime(),//请求的接口
data: postData_add_edit,//参数(可传可不传递)
dataType: "json",//数据类型
async:false,
success: function (res) {
console.log("msg "+message);
if(res.code==200){
console.log("ajax msg"+res.message);
message=res.message;
}
},
error:function(err){
alert("系统出错了")
}
})
}
// 新增修改初始化 ------------------
function init_AE (){
sendAE(postData_add_edit);
// 列表请求
send(postData);
// 完成表格数据
$.extend(infoOptions, {data: data});
infoOptions.page = {
curr: 1
}
console.log("data1 "+data[0].id);
table.render(infoOptions);
data=null;
}
// 监听 单元格,能进行编辑单元格 只有表头加了 edit 属性才能修改
table.on('edit(test3)',function(obj){
var value=obj.value; //得到修改后的值
var data=obj.data; //得到所在行的所有键值
var field=obj.field; //得到字段 pwd name
postData_add_edit.id=data.id;
if(field==='name'){
postData_add_edit.name=value;
console.log("name "+postData_add_edit.name);
}
if(field==='password'){
postData_add_edit.password=value;
console.log("password "+postData_add_edit.password);
}
//layer.msg('[ID: '+data.id+']'+field+' 字段给改为 '+value);
init_AE ();
});
// 操作 查看 编辑 删除-----------------------------------
// 监听表格复选框 选择
table.on('tool(test3)',function(obj){
console.log(obj);
});
//监听工具条
table.on('tool(test3)', function(obj){
var data = obj.data;
if(obj.event === 'detail'){
layer.msg('ID:'+ data.id + ' 的查看操作');
} else if(obj.event === 'del'){
layer.confirm('真的删除行么'+data.id, function(index){
obj.del();
layer.close(index);
});
} else if(obj.event === 'edit'){
layer.alert('编辑行:<br>'+ JSON.stringify(data))
}
});
//end
});
</script>
</body>
</html>
效果如图:
动态表格展示就到这里后,后面会持续更新完增删改。