效果图:

jsmind组件下载地址:https://files.cnblogs.com/files/fengyeqingxiang/jsmind.zip

后端代码,此处以C#编写的后台,Java或其他语言同理

using Newtonsoft.Json;

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Text;

using System.Web;

using System.Web.Mvc;

namespace Web.Controllers

{

public class TreeDataController : BaseController

{

BLL.TreeData bll = new BLL.TreeData();

#region 以树形式展示图纸目录

///

/// 视图

///

///

public ActionResult DrawingTree()

{

if (CurrentUser == null)//验证用户是否登录

return new HttpUnauthorizedResult();

return View();

}

#endregion

///

/// 文件树视图,页面初始化获取树数据,以json形式返回

///

///

public ActionResult GetTreeData()

{

List listTree = InitTree();

return Json(listTree, JsonRequestBehavior.AllowGet);

}

///

/// 初始化加载树

///

///

private List InitTree()

{

List listNodes = new List();

var newTree = bll.QueryList(); //数据库查找数据源,此处也可以定义虚拟数据

#region 首次加载检测不到数据时默认插入项目节点

if (newTree.Count == 0)

{

bll.Add(new Model.TreeData()

{

BgColor = "#eee";//节点背景颜色

FgColor="#eee";//节点字体颜色

Level = 0,

Order = 0,

TreeName = "项目名称",

TreeCode = "节点编码",

ParentId = 0,

UpdateTime = DateTime.Now,

FilePath=null

});

}

#endregion

#region 一次性存储数据源,后面后面递归子集时多次使用

List nodeList = new List();

foreach (var item in newTree)

{

FileNode node2 = new FileNode();

node2.id = item.Id;//要显示的id,此id一般为表的主键,具有唯一性

node2.topic = item.TreeName;//要显示的名称

node2.direction = "right";//思维导图伸向,目前只支持left/right

node2.parentId = item.ParentId;

node2.expanded = true;//该节点是否展开

nodeList.Add(node2);

}

#endregion

#region 装载数据源,此数据结果返回的是最终的所有结点树集合

List rootNode = new List();

foreach (var plist in newTree.Where(t => t.ParentId== 0))

{

FileNode node = new FileNode();

node.id = plist.Id;

node.topic = plist.Code;

node.direction = plist.Note;//思维导图伸向,目前只支持left/right

node.parentId = plist.ParentId;

node.background = "#eee";//节点背景颜色

node.foreground = "blue";//节点字体颜色

node.expanded = true;

node.children = CreateChildTree(nodeList, node);

rootNode.Add(node);

}

return rootNode;

#endregion

}

///

/// 获取子集树

///

///

///

///

private List CreateChildTree(List TreeList, FileNode filenode)

{

List nodeList = new List();

var children = TreeList.Where(t => t.parentId == filenode.Id);

foreach (var chl in children)

{

FileNode node = new FileNode();

node.id = chl.Id;

node.topic = chl.topic;

node.direction = chl.direction;//思维导图伸向,目前只支持left/right

node.parentId = chl.parentId;

node.background = chl.background;//节点背景颜色

node.foreground = chl.foreground;//节点字体颜色

node.expanded = true;

node.children = CreateChildTree(TreeList, node);

nodeList.Add(node);

}

return nodeList;

}

///

/// 根据选择的节点ID和方向参数,获取同级的上一个节点ID或下一个节点ID

///

/// 上一个或下一个节点排序号

[HttpPost]

public JsonResult GetMoveOrder()

{

var id = GetQueryString("id");

var parentId = GetQueryInt("parent", 0);

var direction = GetQueryString("direction");

var model = bll.GetModel(Convert.ToInt32(id));

int upId = -1;

int targetId = -1;//最终返回的相邻的上/下的节点ID

if (direction == "up") //向上移动

{

upId = Convert.ToInt32(model.order) - 1;

if (upId >= 0)

{

//执行修改本身

model.order= upId;

bll.Update(model);

//执行修改相邻的上一个

var list = bll.GetAllList("parentId='" + parentId+ "' and order='" + upId + "' and id<>'"+Id+"'");

if (list.Count > 0)

{

var upModel = list[0];

upModel.order= upId + 1;

bll.Update(upModel);

targetId = upModel.id;

}

}

}

else

{

upId = Convert.ToInt32(model.order) + 1;

var list = bll.GetAllList("ParentDrawingId='" + parentId+ "'");

if (upId < list.Count)

{

//执行修改本身

model.order= upId;

bll.Update(model);

//执行修改相邻的上一个

var newList = list.Where(c => c.order== upId && c.id!= model.id);

if (newList.Count() > 0)

{

var upModel = newList.FirstOrDefault();

upModel.order= upId - 1;

bll.Update(upModel);

targetId = upModel.DrawingId;

}

}

}

return Json(new

{

result = targetId.ToString()

}, JsonRequestBehavior.AllowGet);

}

}

}

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;namespaceWeb.Model.Design

{///

///节点实体类///

[Serializable]public classFileNode

{public int id { get; set; }//对应jsmind唯一id

public string topic { get; set; }//对应jsmind显示的名称

public string direction { get; set; }//对应jsmind思维导图的朝向 left/right

public bool expanded { get; set; } //对应jsmind该节点是否展开true/false

public string background { get; set; } //jsmind只识别background-color属性,此处定义“-”会编译不通过,待前台js批量替换处理

public string foreground { get; set; } //jsmind只识别foreground-color属性,此处定义“-”会编译不通过,待前台js批量替换处理

public int parentId { get; set; } //jsmind没有此属性,此处定义为了与数据库所属父节点字段对应,递归关联查询时会用到

public List children { get; set; }//对应jsmind当前节点的子节点集合

}

}

前端页面代码,此处以asp.net mvc页面视图编写,都是插件获取后台返回的json,其他语言同理

@model List@{

ViewBag.Title = "上传文件";

}

jsmind 线条_jsMind思维导图模式展示数据相关推荐

  1. 大数据时代第一部分思维导图_大数据时代总结思维导图模板分享

    现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物.数据涉及了方方面面,那主要介绍哪些呢?下面是分享的大数据时代思维导图模板 ...

  2. 【思维导图】大数据发展历程2005~2017

    工具:百度脑图

  3. 《花雕学AI》33:如何用XMind制作AI思维导图、鱼骨图和组织结构图

    思维导图是一种有效的思维工具,它可以帮助我们整理信息,激发创意,提高效率.思维导图是一种以中心主题为核心,以分支结构为形式,以关键词和图像为内容的图形表示法.它可以让我们一目了然地看到知识的层次和逻辑 ...

  4. 计算机多媒体技术的思维导图,基于多媒体技术的思维导图在小学语文教学中的应用研究...

    李敏 摘 要:随着科学技术的快速发展以及教育改革的不断深入,传统的教学方法也在潜移默化中有所改变,多媒体技术在教学活动中应用的越来越广泛,尤其基于多媒体技术的思维导图的出现与发展,显著提高了小学语文的 ...

  5. @override怎么加上去_不知道怎么学?java后端5年经验和技术总结(附思维导图)

    1.引言 今天的光棍节,经历了昨晚的疯狂之后,看着后台数据逐渐的趋于平稳,突然感觉身心疲惫,躺在椅子上,看着媳妇给我发的消息,同学群里在疯狂讨论昨晚的疯狂操作,身边的年轻人换了一批又一批,回想自己,毕 ...

  6. 嵌套 思维导图_工作小Tips:如何用思维导图来整理你的汇报

    自认为自己属于思维导图的重度用户,同时有一个很强烈的观点:能用图表来呈现的,坚决不用文字,能用一句话说明白的,坚决不用两句话! 基于此,当有一个很大的文档(一般 100 页以上)或是一本很好的书,都会 ...

  7. 项目思维导图软件测试分析,在软件测试中使用思维导图技术

    我们的大脑比书面文字更能处理和回忆视觉效果.视觉图像能够以描述性词语无法描述的方式带来快速的清晰度和理解.思维导图是利用这个事实来形象化地组织和呈现信息的工具. 思维导图软件测试 思维导图是一个想法或 ...

  8. 精美好用的思维导图插件,无缝对接各种前端框架,快来围观吧

    思维导图(ant-mind) ant-mind是一款基于html5的svg进行设计与开发的一个包含文档模式与思维导图模式的一个纯js类库,支持在当前主流的前端框架中接入. 效果图: 如何使用 1.下载 ...

  9. 渗透测试 学习笔记 思维导图

    资源简介 此资源为本人自学渗透测试过程中做的一些笔记,为思维导图模式,用XMind ZEN 可打开,主要涉及到渗透测试的基本步骤,所用到的工具和渗透方法,ruby语言的简单学习,近源渗透测试的详细学习 ...

  10. XMind 2020 for mac (XMind思维导图)

    xmind 2020中文版是一款十分实用的思维导图软件.相信很多用户都还不了解XMind,XMind官方版优化了许多功能,性能上大大提高.使用XMind思维导图可以帮助用户完成逻辑图.树形图.组织结构 ...

最新文章

  1. Vim清除最后一个搜索突出显示
  2. storm hook的使用
  3. Redis免费客户端 Another Redis DeskTop Manager 下载地址及安装教程
  4. 《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(13)--- 线程安全接口和双检查加锁优化...
  5. go语言html css,html – 在Golang中加载图像和CSS
  6. LeetCode 543. 二叉树的直径(DFS)
  7. python字典类型写入文件_python 字典写入文件
  8. P1020 导弹拦截 dp 树状数组维护最长升序列
  9. 13. jQuery - 设置内容和属性
  10. 开发者论坛一周精粹(第六十三期) WHM自动脚本修复ssh问题
  11. 数据库事务的特性(ACID)
  12. Fedora9 的 初体验
  13. 数据库日志采集系统方案设计
  14. debian安装缺少网卡驱动rtl_nic/rtl8168e-2.fw和bcm43xx-0.fw
  15. 2018.3.4 st
  16. 前端vue生成二维码
  17. JS中国标准时间格式转换字符串
  18. 背诵考研英语单词计划总览
  19. 春运正当时 古代人们又是靠什么出行的呢?
  20. 抓rtmp推流地址_在浏览器中实现RTMP推流

热门文章

  1. wasatch排版教程_[2010年国内外最新最全最专业的设计软件下载.docx
  2. java上传文件服务器_java 实现文件上传到另一台服务器
  3. 最详细的选型攻略!选择工业相机必须搞懂这10大要素!(建议收藏)
  4. 通达(极限)OA2007SE第二版开源代码,注意哦,是100%开源代码,不是破解的!!!
  5. 系统集成项目管理工程师证书有什么用?
  6. 完美解决.CHM文件打不开或者打开以后显示空白的情况
  7. 解读2022城市大脑首批三项标准
  8. Java将byte流转换成zip文件_java zip文件的压缩与解压
  9. 使用Auto.js实现微信自动发朋友圈脚本
  10. 自动化测试用例设计方法