Предположим, что иногда я получаю пустые данные с сервера, я хочу отобразить сообщение "Нет данных" в DataTables?. Как это возможно?
Как показать пустое сообщение данных в Datatables
Ответ 1
Если вы хотите настроить сообщение, отображаемое в пустой таблице, используйте это:
$('#example').dataTable( {
"oLanguage": {
"sEmptyTable": "My Custom Message On Empty Table"
}
} );
Так как Datatable 1.10 вы можете сделать следующее:
$('#example').DataTable( {
"language": {
"emptyTable": "My Custom Message On Empty Table"
}
} );
Для полных доступных пользовательских сообщений datatables для таблицы взгляните на следующую ссылку reference/option/language
Ответ 2
Более поздние версии dataTables
имеют следующие настройки language
(взяты из здесь):
-
"infoEmpty"
- отображается, когда в таблице нет записей -
"zeroRecords"
- отображается, когда нет записей, соответствующих фильтрации
например.
$('#example').DataTable( {
"language": {
"infoEmpty": "No records available - Got it?",
}
});
Примечание. Поскольку имена свойств не содержат специальных символов, вы можете удалить кавычки:
$('#example').DataTable( {
language: {
infoEmpty: "No records available - Got it?",
}
});
Ответ 3
По умолчанию вид сетки позаботится, просто передайте пустой набор данных.
Ответ 4
Стоит отметить, что если вы возвращаете данные на стороне сервера, вы должны предоставить атрибут Data, даже если его нет. Он не читает recordsTotal
или recordsFiltered
, а полагается на счет объекта данных
Ответ 5
Поздно к игре, но вы также можете использовать файл локализации
DataTable предоставляет локализованный файл .json
, который содержит ключ sEmptyTable
и соответствующее локализованное сообщение.
Например, просто загрузите локализованный файл json по приведенной выше ссылке, а затем инициализируйте свой Datatable
следующим образом:
$('#example').dataTable( {
"language": {
"url": "path/to/your/json/file.json"
}
});
ИМХО, это намного чище, потому что ваш локализованный контент находится во внешнем файле.
Этот синтаксис работает для DataTables 1.10.16, я не тестировал предыдущие версии.
Ответ 6
Вы также можете сделать это в initComplete
, как показано ниже
"initComplete": function(settings, json) {
$('.dataTables_empty').html("<span class='label label-danger'>No records found</span>");
}
Ответ 7
Это просто хорошая идея. что вы можете добавить класс в теле и скрыть/показать таблицу, пока в таблице нет данных. Это прекрасно работает для меня. Вы можете создать собственное сообщение об ошибке "Нет записи найдено", когда в таблице нет записи, вы можете добавить класс "без записи", а когда есть 1 или более записей, вы можете удалить класс и показать данные.
Вот код JQuery.
$('#default_table').DataTable({
// your stuff here
"fnFooterCallback": function (nRow, aaData, iStart, iEnd, aiDisplay) {
if (aiDisplay.length > 0) {
$('body').removeClass('no-record');
}
else {
$('body').addClass('no-record');
}
}
});
Вот CSS
.no-record #default_table{display:none;}
Ответ 8
Я нашел то же самое, но, наконец, я нашел ответ. Надеюсь, этот ответ очень вам поможет.
когда ваш массив пуст, вы можете отправить пустой массив, как
if(!empty($result))
{
echo json_encode($result);
}
else
{
echo json_encode(array('data'=>''));
}
спасибо