Php 如果表数据是动态的,并且可能是二维的,那么如何将rowspan和colspan与datatable一起使用?
我在laravel项目中使用datatable。需要从数据库中获取记录,可能会达到两个维度。如何使用rowspan或colspan创建具有分页和页面长度功能的记录类别组 本项目致力于laravel框架5.5。php>=7.0版本和MySQL 5.0 我还尝试了datatable的行组。但它也有一些局限性,如:Php 如果表数据是动态的,并且可能是二维的,那么如何将rowspan和colspan与datatable一起使用?,php,laravel,datatable,Php,Laravel,Datatable,我在laravel项目中使用datatable。需要从数据库中获取记录,可能会达到两个维度。如何使用rowspan或colspan创建具有分页和页面长度功能的记录类别组 本项目致力于laravel框架5.5。php>=7.0版本和MySQL 5.0 我还尝试了datatable的行组。但它也有一些局限性,如: 目前一次只能使用一个数据点进行分组-不支持嵌套分组 没有展开/折叠组的选项 不支持按钮扩展的导出选项-分组信息被忽略 var table=$(“#报告员工表”).DataTable(
- 目前一次只能使用一个数据点进行分组-不支持嵌套分组
- 没有展开/折叠组的选项
- 不支持按钮扩展的导出选项-分组信息被忽略
var table=$(“#报告员工表”).DataTable({
页长:20,
处理:对,
服务器端:是的,
bLengthChange:false,
dom:'Blfrtip',
按钮:[{
扩展:“excelHtml5”,
“文本”:“导出”,
“标题”:“员工报告”,
“消息”:“员工姓名:”+$(“#员工id选项:选中”).text()+“工作持续时间:”+$(“#报告日期”).val(),
“文件名”:“员工报告”,
标题:对,
页脚:是的,
出口选择:{
修饰语:{
所选:真
}
},
自定义:功能(xlsx){
var sheet=xlsx.xl.worksheets['sheet1.xml'];
//s=用于样式设置,5将使其与灰色背景左对齐
$('row:first c',sheet).attr('s','5');
}
},
{
扩展:“打印”,
“文本”:“打印”,
“标题”:“员工报告”,
“消息”:“员工姓名:”+$(“#员工姓名选项:选中”).text()+“工作持续时间:”+$(“#报告日期”).val(),
“文件名”:“员工报告”,
标题:对,
页脚:是的,
出口选择:{
修饰语:{
所选:真
}
}
}
],
阿贾克斯:{
url:“/*控制器的url,其中函数返回json格式的数据*/”,
数据:功能(d){
d、 employee_name=$('#employee_name').val();
d、 报告日期=$(“#报告日期”).val();
}
},
栏目:[
//{数据:'DT_Row_Index',名称:'DT_Row_Index'},
{
数据:“项目名称”,
名称:“项目名称”
},
{
数据:“工作类型名称”,
名称:“工作类型名称”
},
{
数据:“总时数”,
名称:“总小时”
},
],
行组:['project_name:name',0],
footerCallback:函数(行、数据、开始、结束、显示){
var api=this.api();
var aCol=api.列(2);
var foo=aCol.data();//为空!
$(aCol.footer()).html(
);
},
});
var table = $('#report-employee-table').DataTable({
pageLength: 20,
processing: true,
serverSide: true,
bLengthChange: false,
dom: 'Blfrtip',
buttons: [{
extend: 'excelHtml5',
"text": '<span class="glyphicons glyphicons-file_export"></span> Export',
"title": 'Employee Report',
"message": 'Employee Name: ' + $('#employee_id option:selected').text() + ' Work Duration: ' + $('#report_date').val(),
"filename": 'employee-report',
header: true,
footer: true,
exportOptions: {
modifier: {
selected: true
}
},
customize: function (xlsx) {
var sheet = xlsx.xl.worksheets['sheet1.xml'];
// s = for styling and 5 will make it left align with grey background
$('row:first c', sheet).attr('s', '5');
}
},
{
extend: 'print',
"text": '<span class="fa fa-print"></span> Print',
"title": 'Employee Report',
"message": 'Employee Name: ' + $('#employee_name option:selected').text() + ' Work Duration: ' + $('#report_date').val(),
"filename": 'employee-report',
header: true,
footer: true,
exportOptions: {
modifier: {
selected: true
}
}
}
],
ajax: {
url: "/*URL of controller where function return data in json format*/",
data: function (d) {
d.employee_name = $('#employee_name').val();
d.report_date = $('#report_date').val();
}
},
columns: [
//{data: 'DT_Row_Index', name: 'DT_Row_Index'},
{
data: 'project_name',
name: 'project_name'
},
{
data: 'work_type_name',
name: 'work_type_name'
},
{
data: 'total_hour',
name: 'total_hour'
},
],
rowsGroup: ['project_name:name', 0],
footerCallback: function (row, data, start, end, display) {
var api = this.api();
var aCol = api.column(2);
var foo = aCol.data(); //is empty!
$(aCol.footer()).html(
);
},
});