2012-04-20 14 views
14

Estoy utilizando un complemento jQuery llamado Datatables en una tabla contenida en un formulario, y esta tabla contendrá muchos elementos de formulario.Publicación de elementos de formulario que no están visibles en tablas de datos

Tengo un botón Guardar cambios en la página, que ejecutará una solicitud AJAX para actualizar la base de datos según lo que el usuario haya ingresado.

El problema que tengo es que solo publicará el elemento de formulario que actualmente está visible en la tabla de datos. En un ejemplo que tengo, hay 74 filas (todas contienen varios campos). La cantidad predeterminada de registros para mostrar es 10.

Por lo tanto, cuando se envía el formulario solo se envían los elementos del formulario de 10 filas. Tenía que enviar los campos de todas las filas, en este caso, las 74 filas con valor de campos.

¿Alguien tiene una solución para esto? Gracias.

+0

¿Está utilizando una fuente del lado del servidor para su tabla? – ManseUK

+0

Estoy usando ASP clásico para construir la tabla. –

+0

Lo que quiero decir es: ¿está obteniendo las filas ocultas del servidor cada vez o muestra toda la tabla y luego las tablas de datos se van cuadrando por usted? – ManseUK

Respuesta

6

Datatables destruye las filas ocultas y las saca del DOM. Si necesita hacer un envío, debe usar fnGetHiddenNodes() para recuperar las filas ocultas antes de enviarlas. Eche un vistazo a las páginas api

$.fn.dataTableExt.oApi.fnGetHiddenNodes = function (oSettings) 
{ 
    /* Note the use of a DataTables 'private' function thought the 'oApi' object */ 
    var anNodes = this.oApi._fnGetTrNodes(oSettings); 
    var anDisplay = $('tbody tr', oSettings.nTable); 

    /* Remove nodes which are being displayed */ 
    for (var i=0 ; i<anDisplay.length ; i++) 
    { 
     var iIndex = jQuery.inArray(anDisplay[i], anNodes); 
     if (iIndex != -1) 
     { 
      anNodes.splice(iIndex, 1); 
     } 
    } 

    /* Fire back the array to the caller */ 
    return anNodes; 
} 
+0

Muchas gracias. Estaba buscando este código en la documentación y no pudo encontrarlo. Pregunta rápida ¿Cuál es la diferencia entre 'jQuery.inArray' y' $ .inArray'? –

+1

@GarethLewis son exactamente lo mismo, '$' es un alias para 'jQuery' –

+0

OK, si entiendo la idea, ¿qué debo hacer con anNodes para enviar el formulario? Tengo que adjuntar de alguna manera cada fila a la mesa de nuevo? – eloyesp

Cuestiones relacionadas