导出所有记录,忽略分页

问题描述 投票:0回答:1

目前我正在使用带分页的数据表。现在,我最近添加了 Datatable.buttons 库以使用“导出到 Excel”选项。现在,此功能可以正常工作,但由于分页,它仅导出我当前所在页面的前 10 行。现在,如果我删除模型类中的限制,它将导出我想要的所有条目,但它也摆脱了分页,这会降低我的网站性能。以下是我当前获取Datatable数据的AJAX调用代码:

我除了下载所有数据行而无需在 Excel 按钮下载上分页,我也尝试使用导出选项,但仍然下载第一页数据。

`

const table = new DataTable("#ajax-datatables-customers", {
                    processing: true,
                    serverSide: true,
                    dom: "Brt<'row'<'col-4 pt-2'l><'col-4 text-center'i><'col-4 text-center'p>>",
                    serverMethod: 'post',
                    buttons: [
                            {
                                extend: 'excel',
                                filename: 'hr_pivot_customers_' + new Date().toISOString().slice(0, 10),
                                exportOptions: {
                                    modifier: {
                                        page: 'all'
                                    },
                                    columns: [0, 1, 2, 3, 4]
                                }
                            },
                        ],
                   
                    ajax: {
                        url :'<?php echo $_SERVER['PHP_SELF']; ?>?datatables',                        
                    },
                    columns: [
                        { data: 'id'},
                        { data: null},
                        { data: 'email'},
                        { data: 'phone'},
                        { data: 'status'},
                        { data: 'status'}
                    ],
                     columnDefs : [
                    {
                        targets:1,
                        data: null,
                        
                        render: function (data, type, row) {
                            var firstname = row.firstname;
                            var lastname = row.lastname;
                            if (firstname && lastname) {
                                return firstname + ' ' + lastname;
                                } 
                            else if (firstname) {
                                return firstname;
                                } 
                            else if (lastname) {
                                return lastname;
                                } 
                            else {
                                return '';
                                }
                        }
                    },
 ],
                drawCallback : function( settings ) { }
                })
javascript php ajax datatables
1个回答
0
投票

假设您已加载所有必需的数据表js库资源。

请删除下面的行,

serverSide: true

如果您使用 PHP ajax 脚本获取所有数据的数据集,这将工作得很好
(例如,SQL 查询为

SELECT * FROM customers;

确保您没有在 PHP 端应用过滤器,否则您需要提供 datatables.php 文件和 HTML 视图文件以供进一步调查。

我已经使用以下版本配置进行了测试:
数据表:2019 年 10 月 1 日
数据表按钮:1.5.6

© www.soinside.com 2019 - 2024. All rights reserved.