Subgrid nested jqgrid Subgrid de cuarto nivel siempre devuelve el primer rowid de la subruta

jqGrid v4.3.2
ie9
win7enterprise

Estoy usando el siguiente código para generar subgrids:

http://www.trirand.com/blog/jqgrid/jqgrid.html -> Advanced -> Grid as SubGrid

Yo hago esto y tengo

Subgrupo de primer nivel OK
Subgrupo de segundo nivel OK
Subgrupo de 3er nivel OK
Subgrid de 4to nivel. Carga la sub-red OK para cada fila del 3rd Lvl sg, pero solo muestra datos de la primera fila de ID del 3er.

Cuando reviso las herramientas de desarrollador veo que la solicitud siempre envía el ID de la primera fila de la tercera sub-cuadrícula, sé cómo anexar parámetros personalizados con postData que ya he probado y también esta respuesta de Oleg K postData para subgrid en jqgrid ¿no funciona? (este no funciona en mi caso, los datos no se agregan a la solicitud)

Intenté devolver rowdid de los siguientes eventos pero no tuve suerte, stills devuelve la identificación de la primera fila de la tercera subgrid y, por lo tanto, por cada fila en la tercera subgrid, la subgrid de children siempre devuelve la misma.

subGridRowExpanded //always returns first row id of the third grid onSelectRow //doesn't fire if we click the + icon for expanding the subgrid beforeSelectRow //doesn't fire at all 

Otro comportamiento extraño es que si hago clic en cualquier fila en la sub-cuadrícula de tercer nivel, solo selecciona la primera fila.

No, usar treegrid no es una opción, lo siento.

Estoy pensando enlazar un evento de clic en el icono más (primera celda) de cada fila de la sub-cuadrícula de tercer nivel y disparar un expandSubGridRow, pero la pregunta sigue siendo, ¿cómo obtengo el rowid de la fila en la que hice clic en el tercer nivel? subgrid ?

Saludos y gracias de antemano, cualquier ayuda es muy apreciada.

 jQuery("#listsg11").jqGrid({ url:'server.php?q=1', datatype: "xml", height: 190, colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'], colModel:[ {name:'id',index:'id', width:55}, {name:'invdate',index:'invdate', width:90}, {name:'name',index:'name', width:100}, {name:'amount',index:'amount', width:80, align:"right"}, {name:'tax',index:'tax', width:80, align:"right"}, {name:'total',index:'total', width:80,align:"right"}, {name:'note',index:'note', width:150, sortable:false} ], rowNum:8, rowList:[8,10,20,30], sortname: 'id', viewrecords: true, sortorder: "desc", multiselect: false, subGrid: true, caption: "Grid as Subgrid", subGridRowExpanded: function(subgrid_id, row_id) { var subgrid_table_id; subgrid_table_id = subgrid_id+"_t"; $("#"+subgrid_id).html("
"); jQuery("#"+subgrid_table_id).jqGrid({ url:"subgrid.php?q=2&id="+row_id, datatype: "xml", colNames: ['No','Item','Qty','Unit','Line Total'], colModel: [ {name:"num",index:"num",width:80,key:true}, {name:"item",index:"item",width:130}, {name:"qty",index:"qty",width:70,align:"right"}, {name:"unit",index:"unit",width:70,align:"right"}, {name:"total",index:"total",width:70,align:"right",sortable:false} ], subGrid: true, caption: "Grid as Subgrid", subGridRowExpanded: function(subgrid_id2, row_id2) { var subgrid_table_id2; subgrid_table_id2 = subgrid_id2+"_t"; $("#"+subgrid_id2).html("
"); jQuery("#"+subgrid_table_id2).jqGrid({ url:"subgrid.php?q=3&id="+row_id2, datatype: "xml", colNames: ['No','Item','Qty','Unit','Line Total'], colModel: [ {name:"num",index:"num",width:80,key:true}, {name:"item",index:"item",width:130}, {name:"qty",index:"qty",width:70,align:"right"}, {name:"unit",index:"unit",width:70,align:"right"}, {name:"total",index:"total",width:70,align:"right",sortable:false} ], subGrid: true, caption: "Grid as Subgrid", subGridRowExpanded: function(subgrid_id3, row_id3) { var subgrid_table_id3; subgrid_table_id3 = subgrid_id3+"_t"; $("#"+subgrid_id3).html("
"); jQuery("#"+subgrid_table_id3).jqGrid({ url:"subgrid.php?q=4&id="+row_id3, datatype: "xml", colNames: ['No','Item','Qty','Unit','Line Total'], colModel: [ {name:"num",index:"num",width:80,key:true}, {name:"item",index:"item",width:130}, {name:"qty",index:"qty",width:70,align:"right"}, {name:"unit",index:"unit",width:70,align:"right"}, {name:"total",index:"total",width:70,align:"right",sortable:false} ] }); } }); } }); } });

Sigo suponiendo que tiene algunos conflictos de id. Entre * datos en * todas ** sub-cuadrículas que se muestran en la página. Por ejemplo, si inserta en algún nivel en algunas cuadrículas abiertas, los datos que tienen “1” como rowid no deben insertarse otros datos en ninguna subcuadrícula con la misma subred.

Para entender: Usas la key:true para la columna "num" en todos los niveles de sub-cuadrículas. El valor correspondiente no solo se usará en la columna "num" dentro de la celda de la cuadrícula (dentro de

here

). También se usará como el valor de los atributos id de la fila de la grilla o subred (

). HTML no permite duplicados de identificación en la página. Por lo tanto, si inserta elementos con duplicados de identificación puede tener algunos efectos extraños que podrían ser diferentes en diferentes navegadores web. Por ejemplo, intentará seleccionar una fila y se seleccionará otra. También puede tener problemas mucho más difíciles como la selección de filas. Por lo tanto, debe llenar las cuadrículas para que los identificadores sean únicos en toda la página .

Para asegurarse de que el problema con los duplicados de ID no existe, puede usar la opción idPrefix . En el nivel 0 puedes usar

 idPrefix: "m" 

(de main) por ejemplo. Para la subred en el siguiente nivel puedes usar

 idPrefix: "s" + row_id + "_" 

para el siguiente nivel subgrid

 idPrefix: "s" + row_id + "_" + row_id2 + "_" 

y

 idPrefix: "s" + row_id + "_" + row_id2 + "_" + row_id3 + "_" 

La definición de jQuery("#"+subgrid_table_id3) está dentro de subGridRowExpanded de subredes de todos los niveles previos. De modo que puede acceder a row_id y row_id2 definidos en el ámbito externo.

Espero que después de los cambios no tengas ningún problema extraño como los problemas que describes.

aquí hay una muestra de DUPLICADOS

3ra grilla cuando haces clic para mostrar la cuarta grilla