Jqgrid JgTreeGrid在不使用loaded:true的情况下将节点扩展到特定级别
我使用jqgrid作为树状体来显示层次结构。 数据是从数据库中提取出来的,我正在基于在服务器端完成的父子关系构建层次结构数据。 一页加载我将树加载到x级别这是基于数据库中的一些用户设置/首选项。 因此,用户可以看到前几个级别,然后单击一个节点按需加载更多级别。问题:我无法使用loaded:true展开加载树,因为这将无法按需加载其余级别。 我尝试使用expandRow expandNode,这会在页面加载时展开树,但在折叠过程中会出现问题。我不能折叠树节点。 那么,对于我来说,自动展开树并在页面加载时显示所有节点,然后允许用户按需加载其余节点的正确方法是什么呢。 代码段:Jqgrid JgTreeGrid在不使用loaded:true的情况下将节点扩展到特定级别,jqgrid,Jqgrid,我使用jqgrid作为树状体来显示层次结构。 数据是从数据库中提取出来的,我正在基于在服务器端完成的父子关系构建层次结构数据。 一页加载我将树加载到x级别这是基于数据库中的一些用户设置/首选项。 因此,用户可以看到前几个级别,然后单击一个节点按需加载更多级别。问题:我无法使用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);
},
}
您可以使用jqGrid在数据中查找的扩展字段。假设您正在使用,尽管jqGrid的总体思路相同,但它正在扩展其阅读器以查找更多字段:
treeReader = {
level_field: "level",
parent_id_field: "parent",
leaf_field: "isLeaf",
expanded_field: "expanded"
}
您很可能已经在使用level、parent和isLeaf字段。展开的字段是可选的,但如果它存在且其值为true,则jqGrid将在加载时自动展开节点,并在需要时请求数据。我已经在所有节点上将展开设置为true,但我认为这不会在当前版本中展开树。这可能是一个旧线程:您可能是true,我上次在4.0之前使用过这个。我将在稍后重新检查,如果答案为true,则将其删除。@anu因此进一步调查表明,该问题已在2008年11月的jqGrid源代码中修复-该问题将不再存在于下一版本中,不知道何时会发生。此时,您可以直接从感谢您的更新中使用grid.treegrid.js。我可以在正式发布之前使用js文件吗?我只是想了解在正式发布之前使用代码的含义。@anu似乎自从上次正式发布以来,该文件中只有两个bug修复,所以它应该与最新版本一起使用。只需取消选中TreeGrid on旁边的复选框,从GitHub下载文件,并在从下载中引用jqGrid脚本后引用它。