이것은 jQuery jqGrid에 대한 질문입니다. 트리 그리드를 특정 수준으로 확장하는 함수가 필요합니다. 나는 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 코드를 추적했습니다. "expanded"값이 collapseNode/expandNode 내에 올바르게 설정되었음을 보여줍니다. 그러나 최상위 레벨에서 삼각형을 클릭하여 전체 트리를 축소하면 "확장 된"값이 다른 값으로 설정됩니다. 그래서 문제는 무엇이 원인 일 수 있는가? 미리 감사드립니다.