Вопрос по jquery, datatable – Как я могу предотвратить добавление строки и сообщения в плагин jquery dataTable при отсутствии данных

8

Наш владелец продукта хотел бы, чтобы в наших пустых таблицах отображался только заголовок таблицы, когда в таблице нет данных. Кажется, я не могу помешать dataTable создать строку с "пусто ..." сообщение.

Вот код, который я использую для инициализации dataTable. Я знаю, что некоторые вещи здесь не так. Я экспериментировал. :)

$('#InBox').dataTable({
    "bFilter": false,
    "bPaginate": false,
    "bLengthChange": false,
    "bInfo": false,
    "oLanguage": {
        "sEmptyTable": '',
        "sInfoEmpty": ''
    }
});

Вот некоторый код, который я пытался вставить в функцию инициализации dataTable, но я не уверен, как заставить его работать.

/* Table is empty - create a row with an empty message in it */
            var anRows[0] = document.createElement('tr');

            if (typeof oSettings.asStripClasses[0] != 'undefined') {
                anRows[0].className = oSettings.asStripClasses[0];
            }

            var nTd = document.createElement('td');
            nTd.setAttribute('valign', "top");
            nTd.colSpan = oSettings.aoColumns.length;
            nTd.className = oSettings.oClasses.sRowEmpty;
            if (oSettings.fnRecordsTotal() > 0) {
                if (oSettings.oLanguage.sZeroFilterRecords.indexOf("_MAX_") != -1)
                    oSettings.oLanguage.sZeroFilterRecords = oSettings.oLanguage.sZeroFilterRecords.replace("_MAX_", oSettings.fnRecordsTotal());
                nTd.innerHTML = oSettings.oLanguage.sZeroFilterRecords;
            } else {
                nTd.innerHTML = oSettings.oLanguage.sZeroRecords;
            }

            anRows[iRowCount].appendChild(nTd);

Дэн

Ваш Ответ

5   ответов
8

$('#InBox').dataTable({
  "bFilter": false,
   "bPaginate": false,
   "bLengthChange": false,
   "bInfo": false,
   "oLanguage": {
    "sEmptyTable": '',
    "sInfoEmpty": ''
   },
   "sEmptyTable": "There are no records",
 });

в противном случае вы можете попробовать это

$('#InBox').dataTable({
  "bFilter": false,
   "bPaginate": false,
   "bLengthChange": false,
   "bInfo": false,
   "oLanguage": {
    "sEmptyTable": '',
    "sInfoEmpty": ''
   }
 });
$('.dataTables_empty').html("No record found.");
Второй способ это работа для меня. Спасибо
Моя цель не показывать никаких сообщений, когда таблица пуста. Я бы предпочел, чтобы строка не создавалась. У меня есть кнопка, которая добавляет строки в dataTable. Мне просто нужно добавить логику, чтобы удалить «dataTables_empty» строка перед добавлением новых строк. Я использовал твой код. Я просто установил пустые кавычки, чтобы их не было сообщения. Я отмечу ваш ответ как ответ, если не представлен более элегантный способ. Спасибо за вашу помощь. dcary
1

языковая опция

$('#loggedMessages').DataTable({
    "language": {
       "emptyTable": ' ',
       "zeroRecords": ' '
     }
 });
2

"oLanguage": { "sZeroRecords": "-Put customized text-", "sEmptyTable": "-Put customized text-" }

And if you want to remove those, just put these components into null:
"oLanguage": { "sZeroRecords": '', "sEmptyTable": '' }

Надеюсь, поможет!

3

присоединенный к подключаемому модулю данных, вы можете попробовать этот обходной путь:

$('.dataTables_empty').parent().parent().remove();
3

но ради людей, использующих поисковые системы, ищущих правильный ответ, вот как я это сделал.

Удалите или закомментируйте следующую строку из источника dataTables:

anRows[iRowCount].appendChild(nTd);

В свернутой версии найдите и удалите:

b[i].appendChild(c);

Похожие вопросы