2009-11-23 2 views
12

Comment sélectionner par programme la première ligne d'un JQGrid. Je veux que la ligne du haut soit déjà sélectionnée quand elle est ouverte sur la page. Ma grille est triée par une colonne descriptive afin que l'identifiant de la première rangée puisse être n'importe quel nombre. Je connais la méthode à utiliser Je ne sais juste pas comment obtenir le rowid pour la première (première) rangée. La méthode est:Comment faire pour sélectionner par programme la ligne supérieure de JQGrid?

jQuery("#mygrid").setSelection(rowid, true); 

Répondre

9

Ou, sans utiliser l'API jqGrid, vous devriez être en mesure de récupérer la rangée supérieure en naviguant sur le DOM:

var top_rowid = $('#mygrid tbody:first-child tr:first').attr('id'); 
+0

merci - cela a fonctionné. – MikeD

+1

Cela serait pire que de simplement utiliser l'API jqGrid, car il serait plus lent à acquérir. JqGrid a les identifiants de ligne stockés dans une variable facilement disponible, alors que cette façon ouvre et analyse le DOM quand il n'a pas besoin d'être ouvert. – kokorohakai

+1

S'il existe une ligne d'en-tête, cette version ne fonctionne pas. Le sélecteur correct pour les deux cas: var top_rowid = $ ('# mygrid tbody: first-child tr.jqgrow: first').attr ('id'); –

6
$("#mygrid").getDataIDs()[0]; // SO now requires 30 characters, so.... 
+0

essayer que je pourrais - je ne pouvais pas obtenir cet appel api travail. Naviguer à travers le dom cependant comme suggéré ci-dessous a fonctionné. Merci quand même - je ne sais pas pourquoi l'appel échoue - mais cela me convient. – MikeD

+3

Je pense que la syntaxe pour jqGrid 3.6 a changé pour quelque chose comme: '$ ('# mygrid') .jqGrid ('getDataIDs');', cependant cela a jeté une erreur quand je l'ai essayé avec Firebug contre le v3 en ligne. 6 démos. –

+0

Sam, l'ancienne syntaxe fonctionne, ainsi que la nouvelle API. J'ai donné le premier car il fonctionne sur l'ancien et le nouveau. –

0

Lorsque vous avez une ligne d'en-tête, essayez ceci:

var top_rowid = $('#mygrid tbody:first-child tr:nth-child(2)').attr('id'); 
18

La réponse ci-dessus était proche, mais l'affaire était éteint. Il devrait être:

$("#mygrid").getDataIDs()[0]; 

Cela devrait fonctionner correctement.

+0

Merci cela a fonctionné pour moi. –

1

Code complet lorsque la table ont en-tête ligne:

var top_rowid = $('#mygrid tr:nth-child(2)').attr('id'); 
$("#mygrid").setSelection(top_rowid, true); 
0

Si vous avez d'en-tête ligne, essayez ceci:

$('#tb_par tbody:first-child tr:nth-child(2)').trigger("click");

Si non que:

$('#mygrid tbody:first-child tr:first').trigger("click");

Il déclenchera directement le clic événement du JqGrid.

8

jqGrid soutient une méthode setSelection il a juste besoin d'être correctement appelé:

var grid = jQuery("#mygrid"), 
    ids = grid.jqGrid("getDataIDs"); 
if(ids && ids.length > 0) 
    grid.jqGrid("setSelection", ids[0]); 
+0

personnellement, j'aime ça. Merci! – bkwdesign

+0

Je peux sélectionner ceci mais il ne permet pas la navigation au clavier via la nouvelle API 4.0. des idées? – Nap

0

Je l'ai utilisé les éléments suivants:

var grid = $('#list'); 
grid.jqGrid({ 
    ... 
    gridComplete: function() { 
     var ids = grid.jqGrid("getDataIDs"); 
     if(ids.length > 0) { 
      grid.jqGrid("setSelection", ids[0]); 
     } 
    }, 
    ... 
}); 
Questions connexes