我使用jqgrid作为treegrid来显示层次结构。
数据从DB中提取,我正在根据在服务器端完成的父子关系构建层次结构数据。
一页加载我将树加载到x级别(这是基于dB中的一些用户设置/首选项)。
因此,用户可以看到前几个级别,然后点击一个节点,按需加载更多级别。
问题:我不能使用“loaded:true”来扩展加载树,因为这不会使我按需加载其余的级别。
我尝试使用“expandRow”“expandNode”,这会在页面加载时扩展树,但这会在崩溃期间给我带来问题。我无法折叠树节点。
那么,对于我来说,自动展开树并在页面加载时显示所有节点然后允许用户按需加载剩余节点的正确方法是什么。
代码段:
gridComplete: function () {
setTimeout(function () {
debugger;
var ids = jQuery("#jqgTreeGrid").getDataIDs();
for (var i = 0; i < ids.length; i++) {
rootNode = $("#jqgTreeGrid").jqGrid('getRowData')[i];
rootNode._id_ = rootNode.Id;
//rootNode.expanded = true;
$("#jqgTreeGrid").jqGrid('expandRow', rootNode);
$("#jqgTreeGrid").jqGrid('expandNode', rootNode);
//$("#" + rootNode._id_ + " div.treeclick")
// .removeClass("ui-icon ui-icon-triangle-1-e treeclick tree-plus")
// .addClass("ui-icon ui-icon-triangle-1-s treeclick tree-minus");
}
}, 10);
},
}
答案 0 :(得分:0)
您可以使用的是{qqGrid在您的数据中寻找的expanded
字段。假设您正在使用Adjacency Model(尽管Nested Set Model的一般想法是相同的)jqGrid正在扩展其读者以寻找更多字段:
treeReader = {
level_field: "level",
parent_id_field: "parent",
leaf_field: "isLeaf",
expanded_field: "expanded"
}
您很可能已经在使用level
,parent
和isLeaf
字段。 expanded
字段是可选的,但如果它存在且值为true
,则jqGrid将在加载时自动扩展节点(并在需要时请求数据)。