这是 jQuery jqGrid 的一个问题。我们需要一个函数来将 treegrid 扩展到某个级别。我尝试直接使用collapseRow、expandRow、collapseNode 和expandRow。但是,collapseRow/expandRow 是递归的。因此,在每一行调用这些函数真的很慢。因此,我在 jqgrid 中添加了 hideRow 和 showRow 函数。我成功地将树展开和折叠到一定程度。但是,当树展开到第 3 级时,如果您通过单击顶层的三角形来关闭树。一些扩展的行仍然存在。
这是我在jqgrid下添加的功能。
hideRow: function (record) {
this.each(function(){
$( this.rows.namedItem(record.id)).css("display","none");
});
},
showRow: function (record) {
this.each(function(){
$( this.rows.namedItem(record.id)).css("display","");
});
},
这就是我调用这些函数的方式。(我省略了一些上下文,但这不应该是障碍。)
var len = me.gjson.datastr[me.reader_root].length;
for (var i=len-1; i>-1; i--) {
var one_node = jQuery(me.gid).getInd(i+1,true);
one_node._id_ = one_node.id;
if (parseInt(me.gjson.datastr[me.reader_root][i].level)<me.expand_level) {
jQuery(me.gid).jqGrid('expandNode',one_node);
} else {
jQuery(me.gid).jqGrid('collapseNode',one_node);
}
}
for (var i=0; i<len; i++) {
var one_node = jQuery(me.gid).getInd(i+1,true);
one_node._id_ = one_node.id;
if (parseInt(me.gjson.datastr[me.reader_root][i].level)<me.expand_level+1) {
jQuery(me.gid).jqGrid('showRow',one_node);
} else {
jQuery(me.gid).jqGrid('hideRow',one_node);
}
}
我追踪到 jqGrid 代码。它表明在 collapseNode/expandNode 中正确设置了“扩展”值。但是,当您单击顶层的三角形以折叠整个树时,“扩展”值被设置为其他值。那么,问题是可能是什么原因?提前致谢。