DataTables:显示的条目不起作用

时间:2017-09-21 14:05:11

标签: jquery laravel datatables

我使用DataTables 1.19 进行分页,主要是为了优化超过2000条记录的表格。

一切正常,唯一的问题是DataTables说:"显示2,001个条目中的1到10个"

每页实际显示的时间超过500时,此处为screenshot

代码:

Jquery DataTables:

    url = location.search;

                        var table = $('.data-table').dataTable({
                            "bJQueryUI": true,
                            "sPaginationType": "full_numbers",
                            "sDom": '<""lri>t<"F"fp>',
                            "aaSorting": [],
                            "bServerSide": true,
                            "bProcessing": true,
                            "sAjaxSource": "/ledger/ajax"+url,
                            "fnServerParams": function(aoData) {
                            },
                            "fnRowCallback": function(nRow, aData, iDisplayIndex) {
//                                console.log(nRow);
//                                console.log(aData);
                                $('td:eq(1)', nRow).css('text-align', 'right');
                                $('td:eq(2)', nRow).css('text-align', 'right');
                                $('td:eq(3)', nRow).css('text-align', 'right');
                                $('td:eq(4)', nRow).css('text-align', 'right');
                                $('td:eq(5)', nRow).css('text-align', 'right');
                                $('td:eq(6)', nRow).css('text-align', 'right');

                            },
                            "oLanguage": {
                                "sUrl": "/js/language/" + js_lang + ".txt"
                            },
                            "bStateSave": true
                        });

Here是AJAX响应的简要预览。

我赞赏每一条评论。谢谢!

2 个答案:

答案 0 :(得分:0)

您是否尝试过设置页面长度?

"iDisplayLength": 50

我知道默认值应该是10,但试一试......

我看到你正在使用服务器端处理...也许php文件的答案在格式上有一些错误。如果可以,请粘贴答案(不是所有行都需要,只是开头和结尾)。

答案 1 :(得分:0)

我刚修好了。问题是,为了用数据创建AJAX查询,我直接从数据库创建了数据集合而不是查询(我没有使用Datatable :: query($ data))所以我的AJAX响应语法是错。

我必须这样做来修复AJAX响应的结构:

public function getAjax()
    {
        $inputs = Input::only(['period','date_start', 'date_end', 'grupoContable']);
        $inputs = array_filter($inputs);

        $results = $this->calculateAsientos($inputs);

        $collection = new \Illuminate\Database\Eloquent\Collection;

        foreach($results as $result) {
            $collection->add($result);
        }


        return Datatable::collection($collection)
            ->showColumns(  'fecha', 'comentarios', 'line_cargo', 'line_abono', 'nombreCuentaContable', 'cuentaContable')
            ->searchColumns(  'fecha', 'comentarios', 'line_cargo', 'line_abono', 'nombreCuentaContable', 'cuentaContable')
            ->orderColumns(  'fecha', 'cuentaContable', 'nombreCuentaContable', 'comentarios', 'line_cargo', 'line_abono')
            ->make();
    }