Tengo una tabla de datos en la que intento obtener todas las filas marcadas. Esta tabla tiene agrupación de filas y utiliza un complemento de casilla de verificación de gyrocode . Probé el código que figura en la API , pero no tuve suerte. Solo obtengo el primer registro devuelto, independientemente de lo que se seleccione. El código que utilicé para el se muestra a continuación:
var tbl; $(document).ready(function (){ tbl = $('#example').DataTable({ columnDefs: [{ targets: 0, data: 2, 'checkboxes': { 'selectRow': true } }, { "visible": false, "targets": 1 }], select: { style: 'multi' }, order: [[1, 'asc']], iDisplayLength: 10, drawCallback: function () { var api = this.api(); var rows = api.rows({ page: 'current' }).nodes(); var last = null; api.column(1, { page: 'current' }).data().each(function (group, i) { if (last !== group) { $(rows).eq(i).before( '<tr class="group"><td colspan="6">' + group + '</td></tr>' ); last = group; } }); } }); }); function getSelected(){ alert(tbl.columns().checkboxes.selected().length); }Tengo el código en mi jfiddle aquí. No estoy seguro de si hay una interferencia entre la casilla de verificación y la agrupación de filas. Por favor, hágame saber dónde me estoy equivocando.
Nota: La casilla de verificación se basa en el complemento de gyrocode Las tablas de datos son la versión 1.10.12
Llego demasiado tarde para responder a esta pregunta. Pero mi respuesta puede ayudar a otros en la comunidad.
//datatable has to be initialized to a variable var myTable = $('#calltable').dataTable(); //checkboxes should have a general class to traverse var rowcollection = myTable.$(".call-checkbox:checked", {"page": "all"}); //Now loop through all the selected checkboxes to perform desired actions rowcollection.each(function(index,elem){ //You have access to the current iterating row var checkbox_value = $(elem).val(); //Do something with 'checkbox_value' });Espero que eso ayude.
Hice una comprobación rápida y Eric Guan está en lo correcto. Voy a publicar un fragmento de código:
function getSelected() { var selectedIds = tbl.columns().checkboxes.selected()[0]; console.log(selectedIds) selectedIds.forEach(function(selectedId) { alert(selectedId); }); }Ver: https://jsfiddle.net/nwmmbLso/3/
Me acabo de dar cuenta de que tiene identificaciones de estudiante duplicadas, lo que también podría causar un comportamiento inesperado de la biblioteca que está utilizando. El código provisto arriba debería funcionar si las identificaciones de los estudiantes son únicas.
Trabajando y probado.
var id = ""; var oTable = $(".table").dataTable(); $(".check_quality:checked", oTable.fnGetNodes()).each(function() { if (id != "") { id = id + "," + $(this).data('id'); } else { id = $(this).data('id'); } });