我正在使用jqGrid 1.5.2,我有一个网格作为子网格,父和子网格都处于单元格编辑模式,没有排序允许。jqgrid - 如何动态添加/删除运行时定义的子网格
在父网格的loadComplete事件,我成功除去其中一些依赖于该行的数据为以下的子网格的:
loadComplete: function() {
var dataIds = $('#mygrid1').jqGrid('getDataIDs');
for (var i = 0;i < dataIds.length; i++) {
var data = $("#mygrid1").jqGrid('getRowData', dataIds[i]);
if (data[i].hasChild='N') {
var grid = $("#mygrid1");
$("#"+dataIds[i]+" td.sgcollapsed",grid[0]).unbind('click').html('');
}
}
}
问题是
数据[I] .hasChild可以由用户在父网格上更改,所以我希望子网格能够再次为该行进行展开。
我已经试过
$("#"+rowid+" td.sgcollapsed",grid[0]).bind('click').html('+');
到绑定事件 '点击' 回来的元素;然而,它不起作用,即使'+'标志附加到子网格列,但点击事件不会触发...
有人可以给我任何想法,解决方案或替代我的方法,请吗?谢谢。
更新于2012/1/6: 一整天的矿区后,和“尝试和错误”,我发现接近成功的方式,和值编码如下:
首先,我之前删除了每一行的绑定,我尝试用.clone(true,true)将数据和事件数据存储在数组中。
currChild[rowid] = $("#"+rowid+"td.sgcollapsed",grid[0]).clone(true,true);
$("#"+rowid+" td.sgcollapsed",grid[0]).unbind('click').html('');
然后,我通过
$("#"+rowid+" td.sgcollapsed",grid[0]).replaceWith(currChild[rowid]);
我很高兴,当我看到在第一次连接回行改子网格替换克隆回元素;然后,我试图通过再次解除绑定来移除它,并且似乎没有问题。
但是,在同一行上的第三次更改并试图将子网格返回到该行时,该行的子网格列已丢失,并且该列的列向左移动!
我测试了每一行,它们的行为相同,使行丢失了一列,并在第三次更改时向左移动。
现在是深夜,先睡一觉;期待听到任何建议,我可以进一步采取行动。谢谢。