需求:
数据表格按分页显示,每页只能显示10条数据,导出按钮也只能导出这10条,需要导出所有数据
导出的数据中,如果有身份证号,会变成科学计数法
数据库中的性别是1和2,导出时显示男和女
解决方案一:参考:https://www.cnblogs.com/yuanshen/p/11165223.html
1.
<table id="table1" lay-filter="table1"></table>
<div style="display: none;"><table id="table2" lay-filter="table2"></table></div>
数据表格table1正常显示分页数据,table2用来导出所有数据,并设置隐藏
table1在初始化时,指定自定义导出按钮,注意:如果自定义了按钮没有正常显示,说明layui版本过低,请去官网下载最新版,我使用的layui版本是2.5.6,如下:
,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
,defaultToolbar: [{ //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
title: '导出所有信息(按专业筛选)'
,layEvent: 'exports1'
,icon: 'layui-icon-export'
}, { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
title: '导出所有信息(已缴费)'
,layEvent: 'exports2'
,icon: 'layui-icon-template-1'
}]
table2的如下:
//导出表格配置
table.render({
elem: '#table2',
id: 'exportTable',
title: '导出的文件名',
url: 'ajaxstudents.php' ,
cols: [[ //表头
{field: 'sid', title: '编号', align:'center', width:80}
,{field: 'realname', title: '姓名', align:'center', width:130}
,{field: 'identity', title: '身份证号', align:'center', minWidth: 330, width:180}
// ,{title: '性别', width:130, align:'center', toolbar: '#toolbar2'}
,{field: 'sex', title: '性别' }
,{field: 'mname', title: '报考专业'}
]]
});
监听table1的导出按钮,代码如下:
table.on('toolbar(table1)', function(obj){
// console.log("print");
var checkStatus = table.checkStatus(obj.config.id);
switch(obj.event){
case 'exports1':
$.ajax({
url: "ajaxstudentsall.php",
type: 'post',
data: {
type: 1
},
async: false,
dataType: 'json',
success: function (res) {
//使用table.exportFile()导出数据
table.exportFile('exportTable', res.data, 'xls');
}
});
// table.exportFile('exportTable', res.data, 'xls');
break;
}
});
2.在后端代码中,读取身份证号的后面添加 制表符
	
如:
$strjson.='"identity":"'.$rstInfo["identity"].'	",';
效果如下图:
网上有的解决方案是在后面添加空格
导出的数据后面就会多一个空格,功能虽然实现了,但不完美
3.后端修改代码
$strjson.='"sex":"'.($rstInfo["sex"]=="1"?"男":"女").'",';
解决方案二:
直接在sql语句中设置:
select concat(identity,'	') as identity,if(sex=1,'男','女') as sex from table1