Я использую Yajra Datatables, это мой 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 в первом столбце.
Это связано с тем, что таблица данных пытается найти DT_Row_Index для поиска и сортировки. Если вы добавили этот DT_Row_Index, вам следует отключить поиск и сортировку для этого столбца.
если вы не хотите искать и сортировать, тогда этот код должен вам помочь.
Добавьте этот код в свой JavaScript при инициализации таблицы данных.
aoColumnDefs = [{'bSortable': false, 'aTargets': [0]},{'bSearchable': false, 'aTargets': [0]}];
Других решений пока нет …