I am loading a grid with a database query (in PHP using the CodeIgniter abd jqgrid helper). I have no problem to display a nice grid with my data.
I want to display a new colomn with checkboxes to select one or more rows.
Unable to add new column after loading. Therefore, I try to do this: - Colomn is added when creating the grid, - When creating, I add the parameter "loadComplete" with the function, - When diplaying, the function is executed. There he 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 is "Dest".
My problem: nothing is added ...
Thank you for your help!
XB
EDIT: I found the following solution:
- A column of flags has been added to the colModel statement,
- To initialize the value and activate the checkboxes ( they are disabled during creation! ), I use the
"loadComplete" callback function.
The code is very simple, but it's hard for me to find ...
Mesh 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}}, ....]
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 is not optimized, but it works!