I load a grid with a database request (in PHP with CodeIgniter abd jqgrid helper). I haven't any issue to display a nice grid with my datas.
I want to display a new colomn with checkboxes in order to choose one or several rows.
It's impossible to add a new column after loading. So I'm try to do like this : - The colomn is added when creating the grid, - At creating, i add a 'loadComplete' option with a function, - At diplaying, the function is executed. Here it is :
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', {});
}
}
As you can see, the gris is called "#users_grid" and the column "Dest".
My issue : nothing appends...
Thank you for your help !
XB
EDIT : I found the following solution :
- Column of checkboxes is added in the colModel statement,
- To initialize the value and to activate the checkboxes (they are disabled on creating !), I use a
"loadComplete"
callback function.
The code is very simple but hard for me to find...
The grid creation :
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}}, ....]
The callback function :
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');
}
}
It doesn't seem to be optimized but it works !