Machen Sie eine Spalte zu einem Kontrollkästchen

Ich lade ein Grid mit einer Datenbankanfrage (in PHP mit CodeIgniter und jqgrid helper). Ich habe kein Problem damit, ein schönes Raster mit meinen Daten anzuzeigen.

Ich möchte eine neue Spalte mit Kontrollkästchen anzeigen, um eine oder mehrere Zeilen auszuwählen.

Nach dem Laden kann keine neue Spalte hinzugefügt werden. Also versuche ich, wie folgt vorzugehen: - Die Spalte wird beim Erstellen des Gitters hinzugefügt. - Beim Erstellen füge ich eine 'loadComplete'-Option mit einer Funktion hinzu. - Beim Anzeigen wird die Funktion ausgeführt. Hier ist es :

function ajoutCheckBox() {
    var grille = $("#users_grid");

    // Construire les checkbox dans la colonne D
    grille.setColProp('Dest', {editable: true});
    grille.setColProp('Dest', {edittype: 'checkbox'});
    grille.setColProp('Dest', {editoptions: { value: "True:False" }});
    grille.setColProp('Dest', {formatter: "checkbox"});
    grille.setColProp('Dest', {formatoptions: { disabled: true}});



    // Insérer la valeur false dans toutes les lignes de la colonne D
    var index   = grille.jqGrid('getGridParam', '_index');

    for(i in index) {
        grille.jqGrid('setCell', i, 'Dest', 'False', {});
    }
}

Wie Sie sehen, heißt das Gris "#users_grid" und die Spalte "Dest".

Mein Problem: nichts hängt an ...

Danke für deine Hilfe !

XB

EDIT: Ich habe folgende Lösung gefunden:

Spalte mit Kontrollkästchen wird in der Anweisung colModel hinzugefügt.So initialisieren Sie den Wert und aktivieren die Kontrollkästchen (Sie sind beim Erstellen deaktiviert!), Ich benutze ein"loadComplete" Rückruffunktion.

Der Code ist sehr einfach, aber für mich schwer zu finden ...

Die Gittererstellung:

loadComplete: function() { ajoutCheckBox() },
colModel:[.... {"name":"Env","index":"Env","width":30,"hidden":false,"align":"left","edittype":"checkbox","formatter":"checkbox","formatoptions":"{ disabled: false}","editable":true,"editoptions":{"editoptions":"{ value: \"True:False\",  defaultValue: \"False\" }}","size":10}}, ....]

Die Rückruffunktion:

function ajoutCheckBox() {
    var grille = $("#users_grid");
    var index = grille.jqGrid('getGridParam', '_index');

    for(i in index) { // Pour toutes les lignes du tableau
        grille.jqGrid('setCell', i, 'Env', 'False');
        $('#'+i).find("input:checkbox").removeAttr('disabled');
    }
}

Es scheint nicht optimiert zu sein, aber es funktioniert!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage