Php 如果表数据是动态的,并且可能是二维的,那么如何将rowspan和colspan与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(

我在laravel项目中使用datatable。需要从数据库中获取记录,可能会达到两个维度。如何使用rowspan或colspan创建具有分页和页面长度功能的记录类别组

本项目致力于laravel框架5.5。php>=7.0版本和MySQL 5.0

我还尝试了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> &nbsp; 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> &nbsp; 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(

        );
    },
});