這是jQuery jqGrid的一個問題。我們需要一個函數來將treegrid擴展到某個級別。我試着直接使用collapseRow,expandRow,collapseNode和expandRow。但是,collapseRow/expandRow是遞歸的。所以,在每一行調用這些函數真的很慢。因此,我向jqgrid添加了hideRow和showRow函數。我成功地展開並將樹倒塌到了一定的水平。但是,當樹擴展到第3級時,如果通過單擊頂層三角形來關閉樹。一些展開的行仍然存在。jquery jqgrid treegrid展開到特定級別
這是我在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中正確設置了「expanded」值。但是,當您單擊頂層的三角形以摺疊整棵樹時,值「expanded」被設置爲其他值。所以,問題是可能的原因是什麼?提前致謝。