2017-03-07 5 views
1

Ich habe eine Datentabelle, in der ich versuche, alle überprüften Zeilen zu bekommen. Diese Tabelle hat eine Zeilengruppierung und verwendet ein Checkbox-Plugin von gyrocode. Ich habe den Code auf der api aufgeführt versucht, aber ich hatte kein Glück. Ich bekomme nur den ersten Datensatz zurück, unabhängig davon, was ausgewählt ist. Der Code, den ich für das verwendet wird unten dargestellt:jquery Datatables checkbox alle gecheckten Zeilen bekommen

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); 
} 

ich den Code in meinem jfiddle hier haben. Ich bin mir nicht sicher, ob sie zwischen der Checkbox und der Zeilengruppierung liegen. Bitte lassen Sie mich wissen, wo ich falsch liege.

Hinweis: Das Kontrollkästchen basiert auf dem Plugin von Den Datentabellen gyrocode ist Version 1.10.12

+0

Also was ist das Problem? Nicht ganz klar in Ihrer Frage – Mihai

+1

Es scheint tatsächlich zu arbeiten, wenn Sie 'console.log (tbl.columns(). Checkboxes.selected())', können Sie das dort sehen ist ein Array, das die eindeutigen, ausgewählten Studenten-IDs enthält. Wenn Sie verschiedene IDs pro Zeile verwenden, kann ich sehen, dass es funktioniert. Die 'length'-Eigenschaft ist nicht das, was Sie wollen. –

+1

Sie müssen stattdessen 'column (0) .checkboxes.selected()' verwenden. Außerdem haben Sie doppelte IDs in der Tabelle, die sich auf die Gesamtzahl auswirken. –

Antwort

1

Ich habe eine schnelle Überprüfung und Eric Guan ist richtig. Ich werde nur einen Code-Schnipsel schreiben:

function getSelected() { 
    var selectedIds = tbl.columns().checkboxes.selected()[0]; 
    console.log(selectedIds) 

    selectedIds.forEach(function(selectedId) { 
     alert(selectedId); 
    }); 
} 

See: https://jsfiddle.net/nwmmbLso/3/

Ich habe gerade bemerkt, dass Sie haben duplicatie Schüler-IDs, die auch ein unerwartetes Verhalten aus der Bibliothek verursachen könnten Sie verwenden. Der oben angegebene Code sollte funktionieren, wenn die Student IDs eindeutig sind.

+1

Ich bin der Autor des erwähnten Plugins. Gute Antwort und Hinweis auf doppelte IDs. Es wird jedoch empfohlen, 'column (0) .checkboxes.selected()' zu verwenden, wenn nur auf eine Spaltendaten zugegriffen wird, obwohl auch Ihr Code funktionieren würde. –

+0

Es war die [0], die mir nicht bewusst war. Danke für das Aufklären. – usr4896260

Verwandte Themen