数据表服务器端处理-使列可变

时间:2018-07-03 09:26:04

标签: javascript jquery datatable

我尝试为我的数据表创建列,这些列是我在ajaxcall变量在服务器端处理的,但是我似乎找不到一个好的解决方案。

这是我的数据表代码:

    $('.ajaxTable').each(function() { 
let that = this;
$(that).DataTable({
    processing: true,
    serverSide: true,
    ajax: {
        type: "POST",
        dataType: 'json',
        url: 'ajaxcall.php',
        data: function (params) {
            var query = {
                ajaxcall: 'getSelectDataTable',
                controlName: $(that).attr("call"),
                draw: params['draw'],
                start: params['start'],
                search: params['search']['value'],
                columns: params['columns'],
                order: params['order']
            }
            return query;
        }
    },
    columns: [
        { "data": "column1" },
        { "data": "column2" },
        { "data": "column3" },
        { "data": "column4" },
        { "data": "aktionen" }
    ],
    dom: 'Bfrtip',
    buttons: [ 
        'colvis',
        {
            extend: 'copy',
            exportOptions: {
                columns: "thead th:not(.noExport)"
            }
        },
        {
            extend: 'csv',
            exportOptions: {
                columns: "thead th:not(.noExport)"
            }
        },
        {
            extend: 'excel',
            exportOptions: {
                columns: "thead th:not(.noExport)"
            }
        },
        {
            extend: 'pdf',
            exportOptions: {
                columns: "thead th:not(.noExport)"
            }
        },
        {
            extend: 'print',
            exportOptions: {
                columns: "thead th:not(.noExport)"
            },
            customize: function ( win ) {
                $(win.document.body)
                    .css( 'background-color', '#FFFFFF' )
                    .css( 'color', '#000000' );

                $(win.document.body).find( 'table' )
                    .addClass( 'datatable_print' )
                    .css( 'font-size', 'inherit' );
            }
        }
    ],
    fixedHeader: true,
    lengthMenu: [[$(that).attr("length")], [$(that).attr("length")]],
    language: {
        "url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/German.json",
        buttons : {
            colvis: 'Spalten',
            copy: 'Kopieren',
            copyTitle: 'In Zwischenablage kopieren',
            copySuccess: {
                _: '%d Datensätze kopiert',
                1: 'Kopieren fehlgeschlagen'
            },
            print: 'Drucken'
        }
    }
})});

如您所见,我必须对“列”部分进行硬编码,但是我想使此特定位灵活,以便在我的Plattform上的多个表上使用.ajaxTable-Class而不用写每个硬编码。 对我来说,最佳实践似乎是我有一个PHP函数来生成Datatable并在此函数的Parameters中定义我要添加的列。我该如何实现?还是我暂时看不到他们的更好的方式?

谢谢。

0 个答案:

没有答案