2012-06-25 69 views
8

El propietario de nuestro producto desea que las tablas vacías muestren el encabezado de la tabla cuando no haya datos en la tabla. Parece que no puedo evitar que dataTable cree una fila con el mensaje "vacío ...".Cómo puedo evitar que el plugin jquery dataTable agregue filas y mensajes cuando no hay datos

Aquí está el código que uso para inicializar la base de datos. Sé que algunas cosas aquí están mal. He estado experimentando :)

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

Aquí hay un código traté de poner en la función init del dataTable, pero no estoy seguro de cómo conseguir que funcione.

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

Respuesta

8

probar esto

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

lo contrario se puede probar este

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

Mi objetivo es no mostrar ningún mensaje cuando la tabla está vacía. Preferiría que la fila no se cree. Tengo un botón que agrega filas a la tabla de datos. Solo necesitaré agregar lógica para eliminar la fila 'dataTables_empty' antes de agregar nuevas filas. Usé tu código. Acabo de establecer citas vacías para que no haya ningún mensaje. Marcaré tu respuesta como respuesta, si no se presenta una forma más elegante. Gracias por tu ayuda. – dcary

+0

La segunda forma es trabajo para mí.Gracias – YeeKhin

3

Mensaje viejo, pero por el bien de las personas que utilizan los motores de búsqueda en busca de la respuesta correcta así es como lo logré.

Eliminar o comente la siguiente línea de la fuente de tablas de datos:

anRows[iRowCount].appendChild(nTd); 

En la versión miniaturizada, buscar y eliminar:

b[i].appendChild(c); 
2

Puede personalizar el plugin DataTable utilizando 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": '' } 

Espero que ayude!

3

Si desea eliminar el tbody attacched desde el plugin tabla de datos, puede probar esta solución:

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

La forma más corriente de ocultar los mensajes es el uso de la language option

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