Question simple. Existe-t-il une fonction pour obtenir la position actuelle de sorting d’une colonne par son nom dans une grid?
Les index utilisés dans la méthode remapColumns
sont les mêmes que dans le tableau colModel
. Il est important de comprendre que les index peuvent être différents, comme dans le paramètre colModel de jqGrid utilisé initialement. Si jqGrid utilise les options rownumbers: true
une colonne supplémentaire portant le nom 'rn'
sera insérée à la première place du tableau colModel
. Les index de tous les autres éléments du tableau colModel
seront incrémentés. De la même manière, l’option multiselect: true
insère la colonne 'cb'
l’option subGrid: true
insère la colonne 'subgrid'
. De la même manière, l’option treeGrid: true
suit l’ajout colModel
tableau colModel
avec quelques colonnes cachées supplémentaires, dont les noms peuvent être définis par treeReader
. Les noms par défaut des colonnes dans le cas de treeGridModel: 'nested'
sont: 'level'
, 'lft'
, 'rgt'
, 'isLeaf'
, 'expanded'
, 'loaded'
et 'icon'
ou 'level'
, 'parent'
, 'isLeaf'
, 'expanded'
, 'loaded'
et 'icon'
dans le cas de treeGridModel: 'adjacency'
.
Donc, pour trouver l’index de la colonne par son nom, vous devez simplement obtenir le colModel
actuel, parcourir les éléments et rechercher l’élément où 'name'
propriété 'name'
correspond au nom de la colonne dont vous avez besoin. Pour obtenir colModel
vous pouvez utiliser $("#grid")[0].p.colModel
ou $("#grid").jqGrid('getgridParam', 'colModel')
. Le code peut donc ressembler à ceci:
var getColumnIndexByName = function (columnName) { var cm = $(this).jqGrid('getGridParam', 'colModel'), i, l = cm.length; for (i = 0; i < l; i++) { if (cm[i].name === columnName) { return i; // return the index } } return -1; };
et l'utilisation comme
var $grid = $("#grid"), iCol = getColumnIndexByName.call($grid[0], 'myColName');
Pour obtenir le nom de la colonne sortingée en cours, vous pouvez utiliser $grid.jqGrid('getGridParam', 'sortname')