FnSettings在Yajra中无法在deferLoading中工作

时间:2016-02-05 05:02:48

标签: jquery laravel-5 datatables deferred-loading

我想要做的是在数据表的第一列中创建序列号,如果我没有使用延迟加载,则上述代码正在运行。 BY使用此代码数据即将生效但数据表不起作用。 我在后端使用Laravel。请评论如果您需要我可以提供的任何其他信息来解决问题。

 var table = $('#My Table').dataTable({
            "processing": true,
            "serverSide": true,
            "ajax": "{!!  route('Route')  !!}",
            "aaSorting": [[0, "desc"]],
            "deferLoading": '{{ $total }}',
            "columns": [
                {data: 'col_1', name: 'name', 'sortable': true},
                {data: 'col_2', name: 'name', 'sortable': true},
                {data: 'col_3', name: 'name', 'sortable': true},
                {data: 'col_4', name: 'name', 'sortable': true},
                {data: 'col_5', name: 'name', 'sortable': true},
                {data: 'col_6', name: 'name', 'sortable': true},
                {data: 'col_7', name: 'name', 'sortable': true},
            ],
            "lengthMenu": [
                [5, 15, 20, -1],
                [5, 15, 20, "All"] // change per page values here
            ],
            "fnRowCallback": function (nRow, aData, iDisplayIndex) {
                var oSettings = table.fnSettings();
                $("td:first", nRow).html(oSettings._iDisplayStart + iDisplayIndex + 1);
                return nRow;
            }

        });

Javascript错误:未捕获的TypeError:无法读取属性“fnSettings'未定义的我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

好吧,我找不到导致错误的原因,但我试图找到替代方案,如果这可以帮到你。

我所做的是从服务器带来序列号,您可以将其用作参考

->select(DB::raw('(@cnt := if(@cnt IS NULL, 0,  @cnt) + 1) AS serial_number'))

答案 1 :(得分:1)

我发现这也有效

"fnRowCallback": function( nRow, aData, iDisplayIndex ) {
            var row = $(nRow);
            row.attr("id", 'row'+aData['0']);
            $("td:first", nRow).html(iDisplayIndex +1);
            return nRow

将您的fnRowCallback更新为此