jqgrid嵌套子网格第4级子网格总是返回子网格的第一个rowid

jqGrid v4.3.2
IE9
win7enterprise

我正在使用以下代码生成子网格:

http://www.trirand.com/blog/jqgrid/jqgrid.html – >高级 – >网格作为SubGrid

我这样做,我有

第1级子网格确定
二级子网格确定
第3级子网格确定
第4级子网格它为第3个Lvl sg的每一行加载子网格OK,但是它只显示第3个Lvl sg的第一行id的数据

当我检查开发人员工具时,我看到请求总是发送第三个子网格的第一行的id,我知道如何使用我已经尝试过的postData附加自定义参数,以及来自zggrid中子网格的 Oleg K postData的答案不工作? (这个在我的情况下不起作用,数据没有添加到请求中)

我试图从以下事件返回rowdid但没有运气,它仍然返回第三个子网格的第一行id,因此,对于第三个子网格上的每一行,子子网格总是返回相同的。

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 

另一个奇怪的行为是,如果我单击第三级子网格上的任何行,它只选择第一行。

不,抱歉,使用treegrid不是一个选项。

我正在考虑在第3级子网格的每一行的加号图标(第一个单元格)上绑定一个click事件并触发expandSubGridRow,但问题仍然存在,如何获取我点击第三级的行的rowid 子网格

致以最诚挚的问候和感谢,非常感谢任何帮助。

 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} ] }); } }); } }); } });

我仍然认为页面上显示的* all **子网格中的* data之间存在一些ID冲突。 例如,如果在某些级别上从打开的网格中插入某些级别,则具有“1”作为rowid的数据在任何子网格中都不应插入具有相同子网格的其他数据。

要理解:对所有子网格级别的"num"列使用key:true 。 相应的值不仅仅用在网格单元格内的"num"列中(

here

)。 它还将用作网格或子网格(

)行的id属性的值。 HTML不允许页面上的id重复。 因此,你插入具有id重复的元素,你可以有一些奇怪的效果,可能在不同的Web浏览器中有所不同。 例如,您将尝试选择一行,然后选择另一行。 作为行的选择,您还可能遇到更多难题。 因此,您应该填充网格,因此ID在整个页面上将是唯一的

要确保id duplicates的问题不存在,您可以使用idPrefix选项。 在级别0上,您可以使用

 idPrefix: "m" 

(例如,来自主要)。 对于下一级的子网格,您可以使用

 idPrefix: "s" + row_id + "_" 

为下一级子网格

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

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

jQuery("#"+subgrid_table_id3)的定义位于所有先前级别的子subGridRowExpanded的subGridRowExpanded内。 因此,您可以访问外部作用域上定义的row_idrow_id2

我希望,在改变之后你不会有任何奇怪的问题,比如你所描述的问题。

这是DUPLICATES的样本

单击以显示第四个网格时的第3个网格