Я загружаю сетку запросом к базе данных (в PHP с помощником CodeIgniter abd jqgrid). У меня нет проблем с отображением красивой сетки с моими данными.
Я хочу отобразить новый столбец с флажками, чтобы выбрать одну или несколько строк.
Невозможно добавить новый столбец после загрузки. Итак, я пытаюсь сделать так: - Столбец добавляется при создании сетки, - При создании я добавляю опцию «loadComplete» с функцией, - При отображении функция выполняется. Вот :
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', {});
}
}
Как видите, грис называется "#users_grid" и столбец "Dest".
Моя проблема: ничего не добавляется...
Спасибо за помощь !
XB
РЕДАКТИРОВАТЬ: я нашел следующее решение:
- Столбец флажков добавлен в оператор colModel,
- Чтобы инициализировать значение и активировать флажки (они отключаются при создании !), я использую функцию обратного вызова
"loadComplete"
.
Код очень простой, но мне трудно найти...
Создание сетки:
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}}, ....]
Функция обратного вызова:
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');
}
}
Вроде не оптимизировано, но работает!