我处于需要显示树的情况。但是,有些节点有35000个子节点(直接子节点!)。这当然是在可用性方面放慢速度的方法。

我宁愿看到树只加载浏览器视口中可见的那些节点。

对于WinForms和C ++存在这样的树,你们是否知道ASP.NET是否存在这样的树?

我们目前正在使用 Telerik Treeview ,这是一个可爱的控制,但不支持描述的情况。

额外问题

从可用性的角度来看:你如何处理这样的树木。在一个级别上显示35000个节点很不错,但是如何在该树中找到某些内容呢?你在树上使用分页吗?还是搜索框?或者可能会增加额外的水平?

有帮助吗?

解决方案

有了这么多节点,即使你能找到一种高效的方式来显示它们,你的用户也可能无法使用它们。想象一下,尝试滚动35,000个节点只是为了找到你感兴趣的节点!分页也是如此。用户是否真的要翻页3500页(假设页面大小为10)才能找到目标?可能不会,如果他们这样做,他们可能不会太高兴。 :)

相反,对于像这样的大型数据集,我发现通常最好提供某种类型的<!> quot; Filter <!> quot; UI。使您的用户能够<!>“塑造<!>”的东西可用数据到更易管理的集合中。

我不确定你有什么能力提供过滤(即你可以过滤哪些字段),但我认为这是你最好的选择。用户界面的选项包括:

  1. 类似RadGrid for ASP.NET AJAX的东西,它可以提供内置的过滤UI,使用户能够快速找到他们感兴趣的值。
  2. 使用RadTreeView的客户端API并支持按需加载节点,您可以创建一个文本框,用于在用户键入时过滤树中的节点。您只需处理TextBox的onkeyup事件,然后向Web服务发出请求以获取满足过滤条件的节点,并将结果替换为TreeView的节点集合。这将使您的用户更容易 找到他们的目标节点。
  3. 显然还有其他方法,但希望这会给你一些想法。

    简答:对于大型数据集,我会结合使用实时过滤和Web服务,为用户提供更易于管理的结果集。对于初始加载,我只加载第一个(比方说)200个节点以保持高性能。

    希望这有帮助! -Todd

其他提示

我知道有一些jQuery驱动的树控件。不知道手头的名字。 ASP.NET树控件肯定不支持它,因为它不是AJAXifiable。对于显示35000个节点的问题,我会像这样分页。

node
|
-- Sub Node 1
|
-- ...
|
-- Sub Node n
|
-- more...

当您将鼠标悬停在其上或点击它时,它将获得更多节点。如果您正在显示100个子节点,我会加载200并隐藏其他100个节点。这样,当您将鼠标悬停在更多节点上时,它会显示为凹进节点。每当你将鼠标悬停在更多的位置......下一个隐藏的100就会被加载。

此外,现在使用所有高级浏览器创建自定义树控件并不困难,使用<ul><li>嵌套来创建节点和子节点,然后应用适当的样式。如果您希望整个点击更容易,<=>可以包含链接。

我的两分钱。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top