9

我正在使用jsTree大约 1500 个节点,最多嵌套 4 级(大多数只有 1 级深),并且我收到 Internet Explorer 的“此脚本运行缓慢”错误。我从一个html_data <li>由 ASP.NET 生成的简单结构开始。树根本无法完成加载。然后我尝试了xml_dataand json_data,这有点好,但最终出错了。我最后的努力是异步加载。这解决了初始加载问题,但现在当我展开其中一个较大的分支时出现 IE 错误。

更多细节:我正在使用checkbox插件,我还需要搜索能力。不幸的是,在搜索时,用户可能只输入一个字符,所以我正在查看大量搜索结果。

有没有人用这么大的数据集做过类似的事情?关于加速 jsTree 的任何建议?或者,我是否最好为我的 GUI 探索其他选项?

我意识到我没有发布任何代码,但欢迎任何一般技术/陷阱。

4

4 回答 4

4

我还没有完全解决我的问题,但我做了一些改进,以便我认为它可能可用(我仍在测试)。我认为它可能对其他人有用:

  • 首先,我在 jQuery 对话框中使用 jsTree,但这似乎会损害性能。如果可能,不要混合使用大型 jsTrees 和 Dialogs。
  • 延迟加载绝对是大树的方法。我试过json_dataand xml_data,它们都很容易实现。它们的表现似乎大致相同,但这只是基于基本观察。
  • 最后,我实现了一个穷人的寻呼。在我的服务器端 JSON 请求处理程序中,如果一个节点有超过 X 个子节点,我会简单地分成许多节点,每个节点都有一部分这些子节点。例如,如果节点 X 有 1000 个孩子,我给 X 个孩子节点 X1、X2、X3、...、X10,其中 X1 有前 100 个孩子,X2 有接下来的 100 个孩子,依此类推。这对某些人来说可能没有意义,因为您正在修改树结构,但我认为它对我有用。
于 2012-10-17T14:41:02.540 回答
3

jsTree 支持您的所有需求

于 2012-10-02T23:00:30.557 回答
3

我自己对它的表现有点失望。

听起来你需要尝试延迟加载:而不是一次加载整个树,只根据需要加载。

也就是说,最初只加载树的主干(因此所有节点都“关闭”),然后仅在用户单击打开节点时加载节点的子节点。

JsTree 可以做到这一点,请参阅文档。

(你的意思是“异步加载”吗?)

于 2012-10-03T10:08:31.783 回答
1

jstree 很糟糕 - 它是“刷新”,添加 1000 个子节点需要 10 秒,或者在 40 个节点中加载包含 10000 个项目的树需要一分钟多的时间。经过几天的开发,我告诉我的同事改用 slickgrid,因为每个人都会拒绝使用一个需要很长时间才能做任何事情的页面。如果您的结构不正确,它会更快,例如 1000 个节点需要 3 秒,但箭头不会有任何关闭它的效果。

这是为了替换 ms treeview 和 ms imagelist 的组合,后者在 3 秒内跨 40 个父节点加载相同的 10000 个项目。

于 2013-12-05T18:43:59.620 回答