2012-06-25 5 views
8

Właściciel naszego produktu chciałby, aby nasze puste tabele wyświetlały nagłówek tabeli tylko wtedy, gdy nie ma danych w tabeli. Nie mogę zapobiec tworzeniu rekordów przez komunikat z pustym tekstem.Jak mogę zapobiec dodaniu wtyczki jquery dataTable do wiadomości i wiersza, gdy brak danych?

Oto kod, którego używam do inicjalizacji tabeli dataTable. Wiem, że niektóre rzeczy tutaj są złe. Eksperymentowałem. :)

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

Oto kod, który próbowałem wstawić do funkcji init w klasie dataTable, ale nie wiem, jak go uruchomić.

/* 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); 

Dan

Odpowiedz

8

spróbować

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

inaczej można spróbować tego

$('#InBox').dataTable({ 
    "bFilter": false, 
    "bPaginate": false, 
    "bLengthChange": false, 
    "bInfo": false, 
    "oLanguage": { 
    "sEmptyTable": '', 
    "sInfoEmpty": '' 
    } 
}); 
$('.dataTables_empty').html("No record found."); 
+0

Mój cel nie wyświetla żadnego komunikatu, gdy tabela jest pusta. Wolałbym, aby rząd nie był tworzony. Mam przycisk, który dodaje wiersze do dataTable. Po prostu muszę dodać logikę, aby usunąć wiersz "dataTables_empty" przed dodaniem nowych wierszy. Użyłem Twojego kodu. Po prostu ustawiam puste cytaty, aby ich nie było. Zaznaczę twoją odpowiedź jako odpowiedź, jeśli bardziej elegancki sposób nie zostanie przedstawiony. Dzięki za pomoc. – dcary

+0

Drugi sposób to praca dla mnie. Dzięki – YeeKhin

3

Stary post, ale dla osób korzystających z wyszukiwarek szukają właściwej odpowiedzi Oto jak się dokonałem.

Usuń lub wypowiedzieć się następujący wiersz ze źródła DataTables:

anRows[iRowCount].appendChild(nTd); 

w wersji minified, wyszukiwanie i usuwanie:

b[i].appendChild(c); 
2

można dostosować wtyczki DataTable przy użyciu oLanguange:

"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": '' } 

Mam nadzieję, że pomoże!

3

Jeśli chcesz usunąć TBODY attacched z wtyczką elementu datatable, można spróbować tego rozwiązania:

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

Najbardziej aktualny sposób, aby ukryć wiadomości jest za pomocą language option

$('#loggedMessages').DataTable({ 
    "language": { 
     "emptyTable": ' ', 
     "zeroRecords": ' ' 
    } 
}); 
Powiązane problemy