我处于需要显示树的情况。但是,有些节点有35000个子节点(直接子节点!)。这当然是在可用性方面放慢速度的方法。
我宁愿看到树只加载浏览器视口中可见的那些节点。
对于WinForms和C ++存在这样的树,你们是否知道ASP.NET是否存在这样的树?
我们目前正在使用Telerik Treeview,这是一个可爱的控件,但不支持所描述的情况。
额外问题
从可用性的角度来看:你如何处理这样的树木。在一个级别上显示35000个节点很不错,但是如何在该树中找到某些内容呢?你在树上使用分页吗?还是搜索框?或者可能会增加额外的水平?
答案 0 :(得分:2)
有了这么多节点,即使你能找到一种高效的方式来显示它们,你的用户也可能无法使用它们。想象一下,尝试滚动35,000个节点只是为了找到你感兴趣的节点!分页也是如此。用户是否真的要翻页3500页(假设页面大小为10)才能找到目标?可能不会,如果他们这样做,他们可能不会太高兴。 :)
相反,对于像这样的大型数据集,我发现通常最好提供某种类型的“过滤”UI。使您的用户能够将可用数据“塑造”为更易于管理的集合的东西。
我不确定你有什么能力提供过滤(即你可以过滤哪些字段),但我认为这是你最好的选择。用户界面的选项包括:
显然还有其他方法,但希望这会给你一些想法。
简答:对于大型数据集,我会结合使用实时过滤和Web服务,为用户提供更易于管理的结果集。对于初始加载,我只加载第一个(比方说)200个节点以保持高性能。
希望这有帮助! -Todd
答案 1 :(得分:1)
我知道有一些jQuery驱动的树控件。不知道手头的名字。 ASP.NET树控件肯定不支持它,因为它不是AJAXifiable。对于显示35000个节点的问题,我会像这样分页。
node
|
-- Sub Node 1
|
-- ...
|
-- Sub Node n
|
-- more...
当您将鼠标悬停在其上或点击它时,它将获得更多节点。如果您正在显示100个子节点,我会加载200并隐藏其他100个节点。这样,当您将鼠标悬停在更多节点上时,它会显示为凹进节点。每当你将鼠标悬停在更多的位置......下一个隐藏的100就会被加载。
此外,现在使用所有高级浏览器创建自定义树控件并不困难,使用<ul>
和<li>
嵌套来创建节点和子节点,然后应用适当的样式。如果您希望整个点击更容易,<li>
可以包含链接。
我的两分钱。