2009-11-23 12 views
12

¿Cómo se selecciona mediante programación la fila superior de un JQGrid. Quiero que la fila superior ya esté seleccionada cuando se abra en la página. Mi cuadrícula está ordenada por una columna descriptiva, por lo que la identificación de la primera fila podría ser cualquier número. Conozco el método a utilizar. Simplemente no sé cómo obtener el rowid para la fila superior (primera). El método es:¿Cómo se selecciona mediante programación la fila superior de JQGrid?

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

Respuesta

9

O, sin necesidad de utilizar la API de jqGrid, usted debe ser capaz de recuperar la fila superior de la navegación por el DOM:

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

gracias - esto funcionó. – MikeD

+1

Esto en realidad sería peor que simplemente usar la API jqGrid, ya que sería más lento de adquirir. jqGrid tiene los identificadores de fila almacenados en una variable disponible, mientras que de esta manera abre y analiza el DOM cuando no necesita ser abierto. – kokorohakai

+1

Si hay una fila de encabezado, esta versión no funciona. El selector correcto para ambos casos: var top_rowid = $ ('# mygrid tbody: first-child tr.jqgrow: first').attr ('id'); –

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

mucho que lo intentaba - no pude conseguir esta llamada a la API de trabajo. Sin embargo, navegar a través del dom, como se sugiere a continuación, funcionó. Gracias de todos modos, no estoy seguro de por qué falla la llamada, pero lo hago por mí. – MikeD

+3

Creo que la sintaxis de jqGrid 3.6 ha cambiado a algo así como: '$ ('# mygrid'). JqGrid ('getDataIDs');', sin embargo, esto arrojó un error cuando lo intenté usando Firebug contra la v3 en línea. 6 demos –

+0

Sam, la sintaxis antigua funciona, así como la nueva API. Le di el primero ya que funciona en viejo y nuevo. –

0

Cuando se tiene una fila de encabezado, intente esto:

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

La respuesta anterior estaba cerca, pero el caso estaba apagado. Debe ser:

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

Eso debería funcionar correctamente.

+0

Gracias esto funcionó para mí. –

1

Código completo fila cuando la tabla haber encabezado:

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

Si ha fila de encabezado intente esto:

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

Si no es así que:

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

Se activará el clic directamente evento de JqGrid.

8

jqGrid admite un método setSelection sólo tiene que ser llamado correctamente:

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

personalmente, me encanta esto. ¡Gracias! – bkwdesign

+0

Puedo seleccionar esto pero no permite la navegación con el teclado a través de la nueva API 4.0. ¿algunas ideas? – Nap

0

He utilizado el siguiente:

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