FnSettings 在 Yajra 的 deferLoading 中不起作用

FnSettings not working in deferLoading in Yajra

我想要做的是在数据的第一列中创建一个序列号 table 如果我没有使用延迟加载,那么上面的代码就可以正常工作。 通过使用此代码数据正在提交,但数据 table 不工作。 我在后端使用 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 错误:未捕获类型错误:无法读取未定义的 属性 'fnSettings' 我不知道该怎么做。

嗯,我找不到导致错误的原因,但我尝试找到可以帮助您的替代方法。

我做的是从服务器拿来序列号,你可以参考一下

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

嗯,我发现这也有效

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

将您的 fnRowCallback 更新为此