论坛首页 Web前端技术论坛

谁来总结一下比较成熟的Web树状结构的解决方案

浏览 117675 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-01-15  
robbin 写道
现在Web树状结构,主要有两类解决办法,一类是在服务器端生成,每次点击树节点,都会提交一次,代表是struts的树状结构,另一类是在客户端靠复杂的Javascript来生成,这样的解决方案就更加五花八门了,谁做Web树经验比较丰富,总结一下流行的解决方案,给大家推荐几个好用的web树?


如果树状的内容变化不是很频繁的话,并不需要每次点击树节点就提交一次,个人觉得还是使用客户端JS来生成比较节省服务器资源。曾经用过的一个最简单的treeview:
http://www.codeproject.com/jscript/dhtml_treeview.asp

至于每次都提交给服务器一次那种treeview,在我做过的一个项目中,也用到了ASP.NET中的treeview control,感觉使用起来也很简单,不过在刷新的时候,会有闪烁。这也不是大问题了,网上提供了解决的办法。
0 请登录后投票
   发表时间:2004-01-20  
关于这个问题,我曾经做过一个类似的组件,数据动态加载,就是当点击子节点时才开始获取数据,并且当前页面不刷新。使用接口也很简单,只要开发人员告诉我sql语句和相应的子段对应关系就可以,并且留有足够的接口进行相应的设置。这里介绍一下我的做法,供大家参考和批评:
  1、客户端,采用xmlloadtree的方式,我写了几个js类扩展已有的类,主要是增加对checkbox、disabled和一些事件,这个只要对js的面向对象编程稍有熟悉就很容易做出来,我花了1天时间。
  2、服务端,读出数据后封装为xml流,直接发给客户端。其中设计了Tree、TreeLayer(针对每一层)、TreeNode等几个类,加上对数据的封装(VO,用的是最普遍的将每一行数据封装为一个record,然后用构建一个dataset进行记录移动),服务端花了近4天的时间进行类设计,然后用了一个通宵编码完成。

   这种设计的优点是使用简单、分层明显,便于维护和扩展。无论是服务端和客户端都有一个节点注册机制,用来查找和控制所有的节点,并且每个节点都能找到其父节点和所有的子节点。这种方案主要用于数据量很大的时候。目前使用情况良好。
  但是有一个致命的缺点:就是客户端和服务端的同步很麻烦,举个例子,假如我在客户端选中了一个节点,然后希望展开该节点时其所有子节点都disable,这时候我就需要获得其客户端的信息。目前我的做法是在请求的url中增加了一个请求参数来表明是否选中,但是如果客户端有其他更多的改动,并且希望服务端能同步更新,这就比较困难了,不知朋友们有没有什么解决办法?
0 请登录后投票
   发表时间:2004-02-01  
自己做过一个同dragon_jdh差不多的树(技术上)。共用了一天的时间(其实是显示方面花了很长的时间,考虑的东东很多),一次只能加载同一个深度的数据,觉得速度并不是很快(有50多个数据时就有点慢了),我用的是边加载边显示的方式,不过觉得并不是很好(其实是本人写的代码不好,因为为了开发快,js+dhtml放在一起了,java代码也不是很好地放离,呵呵),还有我没有dragon_jdh做得那么复杂。

其实我觉得最好能把 显示,数据,操作(MVC) 等分开。
0 请登录后投票
   发表时间:2004-02-02  
xiaoyu 写道


其实我觉得最好能把 显示,数据,操作(MVC) 等分开。


赞成,只所以花了4天时间就是为了能够很好的分层,而且其中象dataset还有其他一些控制类都是为了以后如果要管理新的组件,比如datagrid等能够直接支持并管理的。
0 请登录后投票
   发表时间:2004-02-04  
xiaoyu ,不好意思,由于你知道的原因,我不能,而且还在完善。不过我们可以在这里讨论,并能经常向你请教,谢谢
0 请登录后投票
   发表时间:2004-02-05  
applet也不错啊
0 请登录后投票
   发表时间:2004-02-09  
kid,其实我挺想用applet的,但是由于受浏览器的限制,加上没有成熟的经验,所以没用。你有applet做的功能较强的树的例子吗?多谢
0 请登录后投票
   发表时间:2004-04-28  
原来对xmlhttp还是不太了解,今天才知道xmlDocument就是用来向服务端发送文档数据的,这样同步就不会有问题了,汗
0 请登录后投票
   发表时间:2004-04-28  
有没有试过三千个以上的节点,深度多达10层的树?

现在我们是用一步步来提交生成的。
0 请登录后投票
   发表时间:2004-04-29  
没有问题,多少层都无所谓,这就是动态加载数据的好处。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics