一棵树,从jquery到Ext 的研究

异步操作的问题充斥了整个过程,以及每个细节。

 

这棵树实现了如下功能:

 

    a.只加载子目录,子目录的子目录需要点击“展开按钮”才加载

    b.点击“目录名”是选中目录

    c.选中后就能对它进行添加子节点,修改、删除、访问设置的操作了。(增删查都是异步实现)。

 

我用Asp.net Mvc + jquery / Ext + Linq + lambda表达式做的文档管理系统。

 

首先说一下我用Jquery 实现的过程吧。

 

    标准的jquery.treeview.js

 

    小技巧展示:html文件头,加载脚本、样式文件、以及meta标记

   

 

 

     看到最后两个js引用了吧?这就是操作这棵树的js代码。贴一下啦!

dir_com.js

    

dir_edit.js

       

 

com里有加载树目录的代码

ajax请求,设置了超时30秒,取消缓存等。然后循环向根目录里添加子目录。

注意到我给每一个UL都treeview了吧?问题就出在这里了。我开始删除了这个UL的treeview样式,但是如果它的里边已经有了LI 和UL节点。下一次就会把样式弄乱了。

幸运的是,如果你给它两次treeview 的话样式还是正常的。所以,浏览目录时的样式是不会出错的。

不幸的是,如果你添加目录,这样就遭了。同级节点的样式就乱了,本来是打开的图标,却显示的是展开的样式;有的更或混杂在一起。

 

一个解决方案是,用他们自带的jquery.treeview.ansy.js异步文件。但是好像不怎么好用。我就没搞懂。

 

怎么也搞不好这个混乱的样式了。弄其他的吧,Ext 在树状控件方面做的很好了。但也被我发现了恶心的地方。

 

Ext 的tree 确实给我们带来了很强大、很方便的操作:

 

    1. 面向对象的节点添加方法,只要node.addChildren(leaf)就行。

 

    2. 丰富的事件操作。

    如:tree.expandChildNodes(true)自动展开子节点,node.expand(false, true)展开效果,tree.on('expandnode', function(node) {//做你想做的事}展开事件重载。(我认为这一套操作是很重要的)

 

    3. 再就是一个toolbar。让你轻松操作这棵树!!!

 

    4. 废话不多说了,看我的代码吧!

 

   

 

 

 

    这个代码实现了增删改,并且点击展开图标加载下一级目录的功能。

 

  如果你想直接定位一个目录并且这个目录是一部加载的,怎么办?

 

  解决方案:

    1.在controller里返回这么一组json:

   

 

 

 

    2. 在ext树里边添加这么一个代码:

 

      

 

    往哪里放这些代码?你自己决定了!

 

    再看看你的树,是不是能够在加载的时候就自动展开到你想要的节点,然后把它选中呢?

 

 

 

 

    好了,就说到这里了。以后又什么补充的,我会直接以回复的形式追加。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值