7
votes

Vérifie toutes les cases à cocher dans l'ensemble de données, y compris des lignes cachées

J'essaie de faire une fonction qui vérifie toutes les cases à cocher dans la clé de données, y compris des lignes cachées. Voici le code HTML pour la colonne "Cochez la case":

$(function () {         
    otable = $('#customersList').dataTable({
        "bJQueryUI": true,
        "sPaginationType": "full_numbers",
        "aLengthMenu" : [ [10,20,50,100,1000], [10,20,50,100,1000] ],
        "iDisplayLength": 100,
        "bProcessing": true,
        "bServerSide": true,
        "aaSorting":[],         
        "iDisplayStart": 0,
        "sAjaxSource": "filename",
        ....

$("#selectallboxes").click ( function () {
        alert(dt.fnGetNodes().length + ' is total number')
        var selected = new Array();
        $('input', dt.fnGetNodes()).each( function() {
                $(this).attr('checked','checked');
                selected.push($(this).val());                       
        } );
         // convert to a string
        var mystring = selected.length;
        alert(mystring);
})


6 commentaires

Que se passe-t-il si vous changez $ ("# selectobboxes"). Cliquez sur à $ ("# SELECTALL"). Cliquez sur ?


@darshangs qui ne créerait qu'un événement de clic pour les cases à cocher ne sélectionne pas le bouton Tout Sélectionner, le problème est la logique dans l'événement de clic et non le gestionnaire.


@DavidBarker mon erreur. Je lisais mal la question de manière incorrecte.


Merci @davidbarker. C'est vrai.


Je dois ajouter ce commentaire selon lequel le code ci-dessus ne fonctionne que pour la première page et l'alerte renvoie le nombre d'éléments de cette page uniquement.


Lorsque vous dites une page, vous voulez dire chaque page de jeu de données paginé?


4 Réponses :


0
votes

OK, cela devrait donc être ce que vous êtes après, cela trouvera toute la page actuelle code> et les parcourir à l'aide de datables _ API. Vous pouvez modifier le filtre en fonction de vos besoins pour sélectionner différentes lignes si vous le souhaitez, tout cela est documenté dans la documentation de données de données.

$("#selectallboxes").click ( function () 
{
    var selected = new Array();

    // Use the _ function instead to filter the rows to the visible
    var data = oTable._('tr', {"filter":"applied"});

    $.each(data, function(key, index)
    {
        var input = $(this).find('input[type="checkbox"]');

        input.attr('checked', 'checked');

        selected.push(input.val());
    });

    // convert to a string
    var mystring = selected.length;

    alert(mystring);
});


4 commentaires

Cela ne fonctionne pas malheureusement. Le résultat est le même avec le passé.


vient de repérer, vous mettez la dans une étiquette , ils auraient besoin d'être dans 's pour `` fngetnodes () `pour les ramasser


J'ai ajouté cette ligne à la ligne de fristonne de ma fonction afin d'obtenir un meilleur résultat: alerte (oTable.fngetnodes (). Longueur + 'Numéro de ligne totale') Mais cela renvoie le nombre d'éléments sur La première page!


En réalité, il renvoie le nombre total de nœuds dans le non seulement des nœuds affichés, c'est ce que cette fonction fait, vous pouvez exécuter un chèque pour $ (this) .is (' : visible ') pour voir s'il est affiché ou non.



10
votes

Essayez: xxx

.length vous donne la longueur de la matrice. J'ai utilisé joindre () pour rejoindre le tableau dans une chaîne. .FNGETNodes de DataTable () Vous donne toutes les lignes du tableau, y compris ceux cachés.


3 commentaires

Je suppose que "bserversion" est vrai, je dois le gérer sur le côté serveur. Je pense que dans ce cas toutes les données ne récupèrent pas au début.


+1 pour votre cette ligne de code $ (oTable.fngetnodes ()). Trouver (': case à cocher'). Chacun, vous sauvegardez ma journée


Depuis des datables v1.10, $ (oTable.fngetnodes ()) devrait maintenant être: $ (ottable.Rows (). Nœuds ())



0
votes

Essayez quelque chose comme xxx


0 commentaires

0
votes

fngetnodes () ne donnera que les rangées visibles, il y a une extension pour obtenir les rangées cachées en raison de la pagination FnGethiddenNodes (), mais qui fonctionnera avec JQuery DataTable version 1.9, il y a une mise à jour pour la même chose dans JQuery DataTable 1.10 Mais cela ne fonctionne pas. Vous pouvez stocker vos données reçues à partir de la demande AJAX dans un tableau, puis en fonction de la case de la case à cocher Cliquez sur l'événement Re-dessine la table avec les données et l'entrée (case à cocher) avec l'attribut sélectionné.


0 commentaires