我一直在尝试根据可见的列数动态地更改DataTables中输出的方向。
我设置了一个全局变量dynOrient,它是在用户显示/隐藏列时计算的。然后,我尝试在按钮选项中设置它:
buttons: [
{
extend: 'pdfHtml5',
footer: true,
text: 'Download PDF',
orientation: dynOrient, //HERE
customize: function(doc) {
...
}
}
]这似乎保留了按钮创建时的dynOrient,而不会随着dynOrient的变化而从横向更改为纵向。
我也尝试过将其放入customize函数中:
doc.content[1].pageOrientation = dynOrient;这并没有做任何事情,只是保留了默认的画像,无论dynOrient是什么。
如何在DataTables中动态更改pdfHtml5输出的方向?
发布于 2020-02-12 03:49:59
实际上,我只是想出了一个解决方案(我不知道这是否是合适的解决方案)。
我将按钮的信息放到一个全局变量中,每次显示或隐藏一个列get时,我都会重新计算方向,在按钮信息中手动设置方向,并删除/重新创建按钮。
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
}也许有人可以提供更好的解决方案,但在此之前,我将保留这一点,因为它目前是有效的。
https://stackoverflow.com/questions/60175699
复制相似问题