Załaduję tabelę z żądaniem bazy danych (w PHP z programem CodeIgniter abd jqgrid helper). Nie mam problemu z wyświetlaniem ładnej siatki z moimi danymi.Utwórz kolumnę jako pole wyboru.
Chcę wyświetlić nowy colomn z polami wyboru, aby wybrać jeden lub kilka wierszy.
Po załadowaniu nie można dodać nowej kolumny. Więc staram się tak postąpić: - Kolumna jest dodawana podczas tworzenia siatki, - Przy tworzeniu dodaje się opcję "loadComplete" z funkcją, - Przy odtwarzaniu funkcja jest wykonywana. Oto ona:
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', {});
}
}
Jak widać, gris jest nazywany „#users_grid” i kolumny „Miejsce docelowe”.
Mój problem: nic nie dołącza ...
Dziękuję za pomoc!
XB
EDIT: Znalazłem następujące rozwiązanie:
- Kolumna wyboru dodaje w rachunku colModel,
- Aby zainicjować wartości i do aktywacji pola wyboru (są one wyłączone przy tworzeniu!), używam funkcji wywołania zwrotnego
"loadComplete"
.
Kod jest bardzo prosty, ale trudno mi znaleźć ...
Stworzenie siatki:
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}}, ....]
Funkcja zwrotna:
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');
}
}
to nie wydają się być zoptymalizowane, ale działa!
Rhank za odpowiedź! –
Dziękuję za odpowiedź! Myślę, że wezmę twoją sugestię, popracuję nad twoim pomysłem. Uświadomiłem sobie, że zapomniałem opcji 'loadonce: true': pozwala ona na natychmiastowe wczytanie wszystkich właściwości obiektu siatki (być może jestem w błędzie ...) Ta opcja daje mi wszystko, czego potrzebuję do aktualizacji wierszy lub kolumn. –
@ Albiréo: Nie ma za co! Jeśli masz problemy z implementacją, możesz dołączyć swój aktualny kod do tekstu pytania. Jeśli napiszesz mały komentarz do mojej odpowiedzi na temat zmian w tekście twojego pytania, będę mógł go ponownie przeczytać, a ja postaram się ci pomóc. – Oleg