我有一个jquery treeview,我从http://jquery.bassistance.de/treeview/demo/
抓取当节点和子节点的数量很小时,加载树没有问题,但随着内容的增长,加载需要花费很长时间,几乎到了使用树视图似乎是一个坏主意。
这是我构建树视图的视图的一部分
<script type="text/javascript">
$(function () {
$("#Ul1").treeview({
collapsed: true,
prerendered: true
});
});
</script>
<ul id="Ul1" class="treeview-black">
<%
foreach (var t in (IEnumerable<itemSpecifications>)ViewData["items"])
{%>
<li class="expandable"><span><%=Html.RouteLink(t.itemName, null, new { controller = "RQA", action = "itemaction", policyname = t.itemName})%></span>
<%if (t.itemCount > 0)
{%>
<%for(int i=0;i<t.itemCount ;i++){%>
<ul>
<li class="expandable"><span><%=Html.RouteLink(t.subitems[i].Name, null, new { controller = "controller1", action = "itemUpdate", rule = t.subitems[i] })%></span></li>
</ul>
<%}%>
<%}%>
<% }%>
</li>
</ul>
,控制器包含以下代码:
public ActionResult Index()
{
items1 = (from itemsInfo itemInfo in _itemInfoCollection
where itemInfo.Name == "val1"
select new itemSpecifications
{
itemName = itemInfo.Name,
itemCount = GetItemscount(), subitems = GetSubItems() });
ViewData["items"] = items1 ;
return View();
}
有时整个页面的加载需要很长时间,以致页面基本崩溃(无法加载),有时当页面加载成功时,我点击节点旁边的任何加号,这需要很长时间才能打开子项目。值得一提的是,平均子节点有400个项目,任何建议都会受到高度赞赏,我使用MVC3并且它在IE中
由于
答案 0 :(得分:0)
听起来/看起来有问题的页面是在初始加载时加载整个结构。这就是“预渲染”旗帜的作用。因为您的列表非常大(x节点+每个节点400个项目),所以您正在考虑重要的客户端性能问题,尤其是在较旧的IE浏览器中,这些浏览器在JS操作中表现非常糟糕。
如果您动态加载每个子菜单而不是预渲染它,可能会更好。唯一的问题是随着DOM的增长,它最终会变慢。
您能否提供您尝试渲染的对象深度的示例,以及每个对象的参数数量?不需要REAL数据,只需计数。即节点级别1有5个参数,级别1上可以有多达500个节点;节点级别2有12个参数,级别2上可以有400个节点,等等。