Index de sorting jqGrid par nom de colonne

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')