Cómo publicar datos para toda la tabla usando jQuery DataTables

Tengo una tabla que funciona con jQuery DataTables y paginación

Tengo más de 300 registros, de los cuales 50 son el máximo en cada página. Cada vez que cambio de una página a otra, los otros 250 registros se eliminan de DOM, así que cuando envío y hago el POST a mi controlador solo obtengo una lista de 50 modelos que son los que están en mi página actual.

¿Cómo accedo a las otras 250 o le digo a la mesa que las envíe todas? He buscado y he leído que este es el comportamiento normal de la paginación. ¿Pero cómo trabajan ustedes alrededor de eso?

PORQUE

Al utilizar el complemento DataTables con paginación, solo existen filas de páginas actuales en el DOM para el rendimiento y la compatibilidad. Por lo tanto, cuando envía el formulario, solo se envían los valores de control de formulario de página actuales.

SOLUCIÓN 1: envíe el formulario directamente

El truco consiste en convertir elementos de formularios de páginas distintas de la actual en antes de enviar el formulario.

 var table = $('#example').DataTable(); // Handle form submission event $('#frm-example').on('submit', function(e){ var form = this; // Encode a set of form elements from all pages as an array of names and values var params = table.$('input,select,textarea').serializeArray(); // Iterate over all form elements $.each(params, function(){ // If element doesn't exist in DOM if(!$.contains(document, form[this.name])){ // Create a hidden element $(form).append( $('') .attr('type', 'hidden') .attr('name', this.name) .val(this.value) ); } }); }); 

Ver jQuery DataTables: cómo enviar todas las páginas de datos de forma: envíe directamente para obtener más detalles y ejemplos.

SOLUCIÓN 2: enviar formulario a través de Ajax

Otra solución es enviar el formulario a través de Ajax.

 var table = $('#example').DataTable(); // Handle form submission event $('#frm-example').on('submit', function(e){ // Prevent actual form submission e.preventDefault(); // Serialize form data var data = table.$('input,select,textarea').serialize(); // Submit form data via Ajax $.ajax({ url: '/echo/jsonp/', data: data, success: function(data){ console.log('Server response', data); } }); }); 

Ver jQuery DataTables: Cómo enviar todas las páginas de datos de forma – Presentar a través de Ajax para obtener más detalles y ejemplos.

NOTAS

Tenga en cuenta que ambas soluciones funcionarán solo en el modo de procesamiento del lado del cliente.

CAMPO DE GOLF

Ver jQuery DataTables: cómo enviar todas las páginas de datos de formulario para más detalles.