Uncaught TypeError: Невозможно прочитать свойство 'body' из undefined в DATATABLE HTML5 PDF export - PullRequest
0 голосов
/ 13 февраля 2019

Мой код работает отлично, но когда я пытаюсь добавить сообщение в экспортированный PDF-документ, отображается сообщение

Uncaught TypeError: Cannot read property 'body' of undefined
    at Object.customize (<anonymous>:97:42)
    at s.action (buttons.html5.min.js:27)
    at q (dataTables.buttons.min.js:13)
    at HTMLButtonElement.<anonymous> (dataTables.buttons.min.js:14)
    at HTMLButtonElement.dispatch (jquery-3.3.1.min.js:2)
    at HTMLButtonElement.y.handle (jquery-3.3.1.min.js:2)

Если я не добавлю следующую строку **message: '__MESSAGE__'**, это здорово, но как только я добавлю ее, покажите мне эту ошибку.

Мой код ...

<script type="text/javascript"> 
    $('#myTable').DataTable({
        dom: 'lBfrtip',
    buttons: [
        {
            extend: 'excel',
            filename: 'reporte'
        },
        {
            **message: '__MESSAGE__',**
            extend: 'pdfHtml5',
            orientation: 'landscape',
            pageSize: 'LEGAL',
            title: 'Reporte de Documentos Emitidos',
            header:true,
            exportOptions: {
                columns: [ 2, 3, 4, 5, 9, 10, 11, 12, 13, 14, 15 ]
            },
            customize: function (doc) {

                var rowCount = doc.content[1].table.body.length;
                for (i = 1; i < rowCount; i++) {
                    doc.content[1].table.body[i][0].alignment = 'center';
                    doc.content[1].table.body[i][1].alignment = 'center';
                    doc.content[1].table.body[i][2].alignment = 'center';
                    doc.content[1].table.body[i][3].alignment = 'center';
                    doc.content[1].table.body[i][6].alignment = 'right';
                    doc.content[1].table.body[i][7].alignment = 'right';
                    doc.content[1].table.body[i][8].alignment = 'right';
                    doc.content[1].table.body[i][9].alignment = 'right';
                    doc.content[1].table.body[i][10].alignment = 'center';
                };
                doc.content.forEach(function(content) {
                    if (content.style == 'message') {
                        content.text = 'this is a late created message'
                    }
                });
            }
        }
    ]
    });

Поиск множества сообщений - это способ добавить пользовательское сообщение, поэтому сразу после добавления этой строки показывается, что ошибка выглядит как чистый код.Спасибо за вашу помощь !!!

1 Ответ

0 голосов
/ 13 февраля 2019

Согласно этой ссылке ключ, который вы должны использовать, должен быть либо

messageTop

ИЛИ

messageBottom

РЕДАКТИРОВАТЬ: Вот обновленная рабочая скрипта JS https://jsfiddle.net/to068zv7/1/ Указатель содержания, который вы искали, был неверным, я изменил его с doc.content[1].table.body на doc.content[2].table.body

doc.content[1] не содержит table объект, скорее он содержит ваш message объект

...