【问题标题】:Get all column values from paginated jQuery DataTable with serverSide set to true从服务器端设置为 true 的分页 jQuery DataTable 中获取所有列值
【发布时间】:2016-08-03 22:34:22
【问题描述】:

我正在尝试实现footerCallback 来查找我的分页数据表的一列中所有元素的总和。当我尝试计算所有页面中的总金额时,只计算当前页面中的行总和。我的 footerCallback 代码如下:

"footerCallback": function ( row, data, start, end, display ) {
                            var api = this.api(), data;

                            // Remove the formatting to get integer data for summation
                            var intVal = function ( i ) {
                                return typeof i === 'string' ?
                                    i.replace(/[\$,]/g, '')*1 :
                                    typeof i === 'number' ?
                                        i : 0;
                            };

                            // Total over all pages
                            total = api
                            .column( 5 )
                            .data()
                            .reduce( function (a, b) {
                                return intVal(a) + intVal(b);
                            }, 0 );

                            // Total over this page
                            pageTotal = api
                                .column( 5, { page: 'current'} )
                                .data()
                                .reduce( function (a, b) {
                                    return intVal(a) + intVal(b);
                                }, 0 );

                            // Update footer
                            jQuery( api.column( 5 ).footer() ).html(
                                '$'+pageTotal +' ( $'+ total +' total)'
                            );
                        }

此函数与列和 columndef 一起在 ajax 调用中给出。 pageTotal 和 total 都返回相同的值。当我在控制台中尝试table.column( "#header5" ).data(); 命令时,即使它只返回当前页面中的数据。在其中一个网站中,我读到,当服务器端设置为 true 时,data()fnGetData() 仅返回当前页面中的数据。真的吗?如果可以,如何获取其他页面的数据?

【问题讨论】:

    标签: javascript jquery pagination datatables


    【解决方案1】:

    是的,这是真的。如果将服务器端选项设置为 true,则数据表希望您在服务器上进行分页处理(即数据表请求将要求数据集的给定页面,并且您的服务器必须准备好返回结果查询给定页面)。如果您不处理大量数据并希望避免自己进行分页,则最好将服务器端选项设置为 false 并且数据表会处理它。这样,您需要做的就是一次提供所有数据。 更多信息:https://datatables.net/examples/data_sources/server_side.html

    【讨论】:

    • 感谢@Thiago Franco 的回复。有没有办法让服务器端设置为 true 的所有值?
    • @rav 唯一的方法是要求服务器一次将所有数据发送到客户端,这违背了服务器端处理的要点。做你需要的最好的方法可能是编写自定义的服务器端代码,从所有行中获取你需要的任何数据,并将其以处理后的形式发送给客户端(假设你反对不使用服务器端)
    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多