Как динамически изменить ориентацию внутри кнопки DataTable pdf Html5? - PullRequest
0 голосов
/ 11 февраля 2020

Я пытался динамически изменить ориентацию вывода в DataTables в зависимости от того, сколько столбцов видно.

Я устанавливаю глобальную переменную dynOrient, которую я вычисляю, когда пользователь показывает / скрывает столбцы. Затем я попытался установить его в параметрах кнопки:

buttons: [
    {
        extend: 'pdfHtml5',
        footer: true,
        text: 'Download PDF',
        orientation: dynOrient,    //HERE
        customize: function(doc) {
        ...
        }
    }
]

Похоже, что он сохраняет то, что было dynOrient при создании кнопки, не меняя его с пейзажа на портрет позднее при изменении dynOrient.

Я также попытался вставить его в функцию настройки:

doc.content[1].pageOrientation = dynOrient;

Это ничего не дало, просто сохранил портрет по умолчанию, независимо от того, что такое dynOrient.

Как я могу динамически изменить ориентация вывода pdf Html5 в DataTables?

1 Ответ

0 голосов
/ 11 февраля 2020

Я на самом деле только что нашел решение (хотя я не знаю, является ли оно правильным решением).

Я помещаю информацию для кнопки в глобальную переменную, и каждый Когда столбец отображается или скрывается, я пересчитываю ориентацию, вручную устанавливаю ориентацию в информации о кнопке и удаляю / воссоздаю кнопку.

var buttonInfo = {
    extend: 'pdfHtml5',
    footer: true,
    text: 'Download PDF',
    orientation: dynOrient,
    customize: function(doc) {
    ...
    }
};

//some code...

$("input[name='showhideswitches']").click(function() {
    var col = $(this).data('col');
    myTable.column(col).visible($(this).prop("checked"));
    dynOrient = getOrientation();
    buttonInfo.orientation = dynOrient; //Manually overriding orientation
    myTable.button('0').remove();
    myTable.button().add(0, buttonInfo); //Re-create
}

Может быть, кто-то может предложить лучшее решение, но пока тогда я собираюсь сохранить это, так как пока это работает.

...