博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爱上MVC3~MVC+ZTree实现对树的CURD及拖拽操作
阅读量:5764 次
发布时间:2019-06-18

本文共 4130 字,大约阅读时间需要 13 分钟。

,我们学习了如何使用zTree对一棵大树(大数据量的树型结构的数据表,呵呵,名称有点绕,但说的是事实)进行异步加载,今天这讲,我们来说说,如何去操作这棵大树,无非就是添加子节点,删除节点,编辑节点,节点之间的拖拽,节点位置的变化(排序)等等。

事实上,jquery.ZTree的demo已经把前台JS代码给的很清晰了,我们只要稍加修改,然后把后台CS代码写好就可以了,我将demo的前台代码做了简单的处理,减化了些代码,项目架构使用microsoft mvc 3.0

前台HTML代码如下:

    面各种JS事件,所对应的MVC代码如下:

    #region 对节点的操作        ///         /// 得到一级子节点        ///         ///         /// 
    public string AsyncGetNodes(int? id) { var model = irepository.GetEntities() .Where(i => i.ParentID == id).OrderBy(i => i.Sortable); return model.ToJson(); } /// /// 添加节点 /// /// /// /// ///
    public string AsyncAddNodes(int id, string name, int pid) { try { //得到父对象,但设置它的isParent属性 irepository.Modify(i => new Category { ID = pid, IsParent = true, }); var entity = new Category { Name = name, ParentID = pid, CreateDate = DateTime.Now, Level = 1, IsParent = false, }; irepository.Add(entity); return entity.ID.ToString(); } catch (Exception ex) { return ex.Message; } } /// /// 编辑节点(重命名) /// /// /// ///
    public string AsyncEditNodes(int id, string name) { try { irepository.Modify(i => new Category { ID = id, Name = name, }); return "操作成功"; } catch (Exception ex) { return ex.Message; } } /// /// 删除节点 /// /// ///
    public string AsyncDelNodes(int id) { try { irepository.Remove(irepository.GetEntity(i => i.ID == id)); return "操作成功"; } catch (Exception ex) { return ex.Message; } } /// /// 拖拽节点 /// /// /// /// ///
    public string AsyncDragNodes( int id, int pid, string name, string moveType, bool isCopy) { try { var parent = irepository.GetEntity(i => i.ID == pid); var parentSons = irepository.GetEntities(i => i.ParentID == pid); var current = irepository.GetEntity(i => i.ID == id); if (moveType == "inner") parent.isParent = true; else if (parentSons == null || parentSons.Count() == 0) parent.isParent = false; if (isCopy)//复制,前台目前不能实现 { irepository.Add(new Category { ParentID = pid, Name = name, CreateDate = DateTime.Now, }); } else { if (moveType == "inner") { current.ParentID = pid; irepository.Modify(current); } else { current.ParentID = parent.ParentID;//同级移动时,与目标节点父ID相同 current.Sortable = moveType == "next" ? parent.Sortable + 1 : parent.Sortable - 1; irepository.Modify(current); } } irepository.Modify(parent); return "操作成功"; } catch (Exception ex) { return ex.Message; } } #endregion

    好了,上面的代码只是对树结果做的最基本的操作,其中拖拽时的复制操作(按着ctrl键,拖拽节点),后台没有进行实现。

    转载地址:http://fywux.baihongyu.com/

    你可能感兴趣的文章
    hystrix实战之javanica
    查看>>
    django crm
    查看>>
    bs4取数
    查看>>
    Maven安装以及为Eclipse指定Maven
    查看>>
    校园火灾Focue-2---》洗手间的一套-》电梯
    查看>>
    css控制文字换行
    查看>>
    ASM的文件管理深入解析
    查看>>
    bzoj1913
    查看>>
    烂泥:VMWare Workation双网卡配置IP地址
    查看>>
    bzoj2301(莫比乌斯反演)
    查看>>
    【转】对于HttpClient和HtmlUnit的理解
    查看>>
    L104
    查看>>
    深入理解脚本化CSS系列第四篇——脚本化样式表
    查看>>
    分镜头脚本
    查看>>
    ASP.NET中的cookie编程技术
    查看>>
    链表基本操作的实现(转)
    查看>>
    邮件发送1
    查看>>
    [转] libcurl异步方式使用总结(附流程图)
    查看>>
    编译安装LNMP
    查看>>
    git学习,git上建立自己的项目
    查看>>