我有2W条数据,要以树的形式显示出来,我找了jquery的插件,都要先把所有数据取 出来再显示,这样会假死。用asp.net自带的控件,每点一次结点都会刷新,也没有找到好的解决办法谁有高招呀。

解决方案 »

  1.   

    延迟加载吧,ajax,不要一次性都加载出来啊。
    点击节点时才加载当前节点的第一级子节点。
      

  2.   

    不要这样 用JStree  点哪个节点就异步加载哪个节点下的子节点
      

  3.   

    asp.net 自带的我是那样做的,可是jquery的ztree不能,我现在就是想问问大家有没有好的控件介绍给 我
    我也知道异步加载
      

  4.   

    3L不是给你了?http://www.oschina.net/p/jstree/
      

  5.   

    数据量大的话要分节点处理了,不然就算用各种办法还是会卡死的~~~就是先加载一到两个节点的数据,然后当点击到当前叶节点时再加载该叶节点的数据,而且要有Clear机制~不然一样容易卡死...以前我们做过个银行项目,他们的组织机构只有几千条,就已经卡到不能动了
      

  6.   

    JQuery zTree 可以异步加载
      

  7.   

    这种问题为什么不考虑换个方式去展示,不用说几k,就是100也不太可能有人会挨个去找出来点击,多数会要求有搜索
    这样转化成autocomplete再捎给改进些的方式展示不可以吗
      

  8.   

    我刚巧作了一个快2万条数据的TreeView,用起来毫无压力阿。
      

  9.   

    TreeView 节点展开事件里面再去添加节点,不要一次性加载
    不知道ajax 是否可以逐级添加节点。。如果可以就可以实现无刷新了
      

  10.   

    我的项目里,我用的经过改造后的JTREE,
    点开那,就取那级下的内容,一旦加载过,就不再重复加载
      

  11.   

    20K的数据,我靠,神马都是浮云啊,chrome都承受不了啊。
      

  12.   

    这个treeview当然要根据节点内容去异步读取了,如果一下子全读出来,2G内存也受不了阿
      

  13.   

    。net的treeview就支持异步加载啊
    参考我的博客:
    http://blog.csdn.net/youbl/article/details/4325516
      

  14.   

    jquery 的树形控件会ajax 读取啊。
      

  15.   

    既然你都明白都知道,不会google去搜?在这里问什么?
    没人有义务回答你的问题的,CSDN的分连P都不如~
      

  16.   


    不是说不要显示那么多了么,就算是异步,你也说会有2k多
    请问一个人可以对着页面看2k多条数据吗插件的话,Google: jQuery tree
    自己喜欢那款就用那款  
      

  17.   

    我上网找了,ztree我试了,数据一多就会假死。有没有其它的插件,提供下。.net自带的不行,老是刷新。
      

  18.   

    JQUERY的树肯定可以用,
    如果不能用,说明你用错了!!
      

  19.   

    .net 里面的treeview,本身就可以动态加载的啊。
      

  20.   

    一个很古老的问题,动态加载便可以了。--前台代码--
    <asp:TreeView ID="tv" runat="server" ExpandDepth="0" OnLoad="tv_Load" OnTreeNodePopulate="tv_TreeNodePopulate">
    </asp:TreeView>----后台代码---
        protected void tv_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {  //只加载树的第一层节点
                TreeNode root = new TreeNode("节点1", "节点ID", "~/Images/rtg_save.gif");
                root.Expanded = true;
                root.Expanded = false;
                root.SelectAction = TreeNodeSelectAction.Expand;
                root.PopulateOnDemand = true;
                tv.Nodes.Add(root);
            }
        }
        protected void tv_TreeNodePopulate(object sender, TreeNodeEventArgs e)
        {
            FillTree(e.Node);//加载子节点
        }
      

  21.   

    asp:TreeView 会刷新的,不要刷新,太烦人了
      

  22.   

    .net自带的可以不刷新啊,都叫异步加载了,还刷新,就不叫异步了
      

  23.   

    用我的吧,http://code.google.com/p/zkjs/ 里面有demo
    我当时被要求能支持20W(那当然是不可能的)
    demo :http://careprad.appspot.com/ops/zkjs/tree.html (可能被土蔷了)
      

  24.   

    不要这样 用JStree 点哪个节点就异步加载哪个节点下的子节点
      

  25.   


    只能说你这个不适合用treeview...你要用户从两千或两万条数据中找一条数据那你太难为他了。。应该加入搜索了
      

  26.   


    是的
    去看看Google图片的自动滚动延迟加载,然后Bing抄袭了,QQ空间也不知道什么时候抄袭过去了
    既然一个节点下面的数据没有办法显示在一屏里面,那么用户肯定会用某种动作(比如往下拉滚动条),这时候就用Ajax去请求下一屏的内容,Append到当前内容层里面,如此往复
    把平常的点击翻页搞成了监视滚动条的位置来发Ajax不过2000条也未免让人看着太累,服务端输出的Html要尽量简洁规范
      

  27.   

    我来说一下吧:
    1.用tree没有问题,别说2万条,20万条也没问题;
    2.楼主的问题首先是你们没有专门的增量查询服务,
      悲剧因此产生,你能想象2万条甚至更多的数据包,在网络上扔来扔去需要什么样的消耗吗?
      对于大量数据,一定是分页传送到客户端的,
      如果应用程序服务端每次只送来不超过50条记录,
      楼主就不会有这种奇怪的想法了;
    3.利用"蒙太奇",只呈现可见区域内的内容,用户拖动滚动条的时候,触发增量查询和相应的数据绑定,
      也就是说,任何节点只有在掠过可见区域的时候才会被加载,
      如果用户有本事历遍所有树结构,才会逐页加载所有数据,
    4.还可以结合分页或者table来组合呈现数据;总之,没有现成的控件,也不是单单靠控件能解决这个问题,分页传送数据,增量装载,这种手段十几年前微软就为我们示范了,
    可是程序员们整天用着微软的系统,却视而不见
      

  28.   

    是不是不会用ztree? 我就用那个做过异步的刷新
      

  29.   

    点击ztree的节点,如果要刷新的话,先删除当前节点的子节点,然后追加节点,达到刷新的目的
      

  30.   

    听你上面说好像一级都有2千多条 这样的话就要考虑下真的要用树吗?在怎么异步也只是一级节点异步 你这样一级就弄 2K条数据出来  每人看啊 你可以想象下第一级就2K条数据的树  可以看在在线MSDN那种导航模式 但是2K条一级还是有点吓人
      

  31.   

    控件我觉得没有太好的可以展示这么大数据量的。会卡死是很正常的,因为web访问数据就是有现在的。就算你优化也还是有限制。个人认为 这个不是控件的问题,是你设计的问题。
    tree 不支持分页的。所以我觉得你要改改你实现数据的方式了。