首页 > 解决方案 > 在 Yajra 数据表中找不到 DT_Row_Index

问题描述

我正在使用 Yajra 数据表,这是我的 php 代码

$quotes=User::find($id)->quotes();
        return Datatables::of($quotes)
            ->addIndexColumn()
            ->setRowClass(function($quote){
                return $quote->quote_urgent?"table-primary":"";
            })
            ->addColumn("convert","Convert")
            ->addColumn("action",function($quote){
                return "<a href='".URL::to("customer/".$quote->quote_customer_id."/view-quote/".$quote->quote_id)."'>Details</a>";
            })
            ->make(true);

我的javascript是

$(document).ready(function() {
                    $('.datatable').DataTable({
                        processing: true,
                        serverSide: true,
                        buttons:[
                            {extend:'paginate_button',className:'btn btn-primary'}
                        ],
                        pageLength:4000,
                        ajax: '{{ route('CustomerQuoteRecords',$customer->id) }}',
                        columns:[
                            {"data":"DT_Row_Index"},
                            {"data":"quote_id"},
                            {"data":"created_at"},
                            {"data":"quote_received","defaultContent":"-"},
                            {"data":"quote_name"},
                            {"data":"quote_price"},
                            {"data":"convert"},
                            {"data":"action"},
                        ]
                    });
                });

上面的代码给出了未找到 DT_Row_Index 列的错误,因为默认情况下第一列已应用顺序,因为我们知道 addIndexColumn 将额外数据添加到返回的 JSON 但数据库表中不存在 DT_Row_Index。

但是当我将其更改为此时,它可以正常工作。

columns:[
                            {"data":"quote_id"},
                            {"data":"DT_Row_Index"},
                            {"data":"created_at"},
                            {"data":"quote_received","defaultContent":"-"},
                            {"data":"quote_name"},
                            {"data":"quote_price"},
                            {"data":"convert"},
                            {"data":"action"},
                        ]

但我需要 DT_Row_Index 在第一列。

标签: phplaraveldatatablesyajra-datatable

解决方案


这是因为 data-table 试图找到 DT_Row_Index 进行搜索和排序。如果您添加了此 DT_Row_Index,则应禁用此列的搜索和排序。如果您不想搜索和排序,那么此代码应该可以帮助您。在数据表初始化时将此代码添加到您的 JavaScript。

 aoColumnDefs = [{'bSortable': false, 'aTargets': [0]},{'bSearchable': false, 'aTargets': [0]}];

推荐阅读