Ich lade ein Raster mit einer Datenbankanforderung (in PHP mit CodeIgniter abd jqgrid Helfer). Ich habe kein Problem, ein schönes Raster mit meinen Daten anzuzeigen.Machen Sie eine Spalte zu einem Kontrollkästchen
Ich möchte ein neues colomn mit Kontrollkästchen anzeigen, um eine oder mehrere Zeilen auszuwählen.
Es ist unmöglich, nach dem Laden eine neue Spalte hinzuzufügen. Also ich versuche, so zu tun: - Das colomn wird hinzugefügt, beim Erstellen des Gitters, - Beim Erstellen, ich füge eine "loadComplete" -Option mit einer Funktion, - Beim Anzeigen, wird die Funktion ausgeführt. Hier ist sie:
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 können, ist die gris „#users_grid“ und die Spalte „Ziel“.
Mein Problem: nichts anhängt ...
Vielen Dank für Ihre Hilfe!
XB
EDIT: fand ich die folgende Lösung:
- Spalte der Kontrollkästchen in der colModel Anweisung hinzugefügt wird,
- den Wert zu initialisieren und die Kontrollkästchen (sie aktivieren Beim Erstellen deaktiviert!), verwende ich eine
"loadComplete"
Callback-Funktion.
Der Code ist sehr einfach, aber schwer für mich zu finden ...
Das Gitter Schöpfung:
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 Callback-Funktion:
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 ist nicht scheinen optimiert zu sein, aber es funktioniert!
Rhank Dank für Ihre Antwort! –
Vielen Dank für Ihre Antwort! Ich denke, ich werde Ihren Vorschlag nehmen, arbeiten Sie um Ihre Idee. Ich habe festgestellt, dass ich die Option 'loadonce: true' vergessen habe: es erlaubt sofort alle Eigenschaften des Grid-Objekts zu laden (vielleicht irre ich mich ...) Diese Option gibt mir alles, was ich brauche, um Zeilen oder Spalten zu aktualisieren. –
@ Albiréo: Gern geschehen! Wenn Sie einige Implementierungsprobleme haben, können Sie Ihren aktuellen Code an den Text Ihrer Frage anhängen. Wenn Sie einen kleinen Kommentar zu meiner Antwort über die Änderungen im Text Ihrer Frage schreiben, könnte ich ihn erneut lesen und ich werde versuchen, Ihnen zu helfen. – Oleg