MVC4结合GetOrgChart.js实现组织架构图
2017-01-16 17:12
405 查看
你身在何处?就在这里;身在何时?此时此刻;你在做什么?活在当下。
实体类:
Employee.cs
[Table("Employees")] public class Employee { public string Id { get; set; } public string ParentId { get; set; } public string Name { get; set; } public string Title { get; set; } public string PhotoUrl { get; set; } }
EmployeesDbContext.cs代码:
public class EmployeesDbContext : DbContext { public DbSet<Employee> Employees { get; set; } }
EmployeeController.cs代码:
public class EmployeeController : Controller { EmployeesDbContext context = new EmployeesDbContext(); public ActionResult Index() { return View(); } public JsonResult Read() { var employees = context.Employees.ToList(); return Json(employees, JsonRequestBehavior.AllowGet); } public EmptyResult Update(List<Employee> model) { foreach (var employeeModel in model) { var employee = context.Employees.FirstOrDefault(p => p.Id == employeeModel.Id); if (employee == null) { employee = new Employee(); context.Employees.Add(employee); } employee.Id = employeeModel.Id; employee.ParentId = employeeModel.ParentId; employee.Name = employeeModel.Name; employee.Title = employeeModel.Title; employee.PhotoUrl = string.IsNullOrEmpty(employeeModel.PhotoUrl) ? "/Images/loser.jpg" : employeeModel.PhotoUrl; } var modelIds = model.Select(p => p.Id); var removeEmployees = context.Employees.Where(p => !modelIds.Contains(p.Id)); foreach (var employee in removeEmployees) { context.Employees.Remove(employee); } context.SaveChanges(); return new EmptyResult(); } public EmployeeController() { if (!context.Employees.Any()) { context.Employees.Add(new Employee() { Id = "1", ParentId = "", Name = "Name 1", Title = "Title 1", PhotoUrl = "/Images/BOSS.png" }); context.Employees.Add(new Employee() { Id = "2", ParentId = "1", Name = "Name 2", Title = "Title 2", PhotoUrl = "/Images/Girl.png" }); context.Employees.Add(new Employee() { Id = "3", ParentId = "1", Name = "Name 3", Title = "Title 3", PhotoUrl = "/Images/Girl.png" }); } context.SaveChanges(); } }
Index.cshtml
<!DOCTYPE html> <html> <head> <script src="~/Scripts/jquery-1.11.3.js"></script> <link href="~/Scripts/getorgchart.css" rel="stylesheet" /> <script src="~/Scripts/getorgchart.js"></script> <style type="text/css"> html, body { margin: 0px; padding: 0px; width: 100%; height: 100%; overflow: hidden; } #people { width: 100%; height: 100%; } </style> </head> <body> <div id="people"></div> <script type="text/javascript"> var readUrl = "@Url.Action("Read")"; var updateUrl = "@Url.Action("Update")"; var orgChart = new getOrgChart(document.getElementById("people"), { primaryFields: ["Name", "Title"], photoFields: ["PhotoUrl"], idField: "Id", parentIdField: "ParentId", updatedEvent: updatedEvent }); $.getJSON(readUrl, function (data) { debugger; orgChart.loadFromJSON(data); }); function updatedEvent(sender, args) { var model = []; for (var id in orgChart.nodes) { var node = orgChart.nodes[id]; var data = $.extend(true, { Id: node.id, ParentId: node.pid }, node.data); model.push(data); } var model = JSON.stringify({ 'model': model }); $.ajax({ contentType: 'application/json; charset=utf-8', dataType: 'json', type: 'POST', url: updateUrl, data: model }); } </script> </body> </html>
sql脚本
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Employees]( [Id] [nvarchar](128) NOT NULL, [ParentId] [nvarchar](max) NULL, [Name] [nvarchar](max) NULL, [Title] [nvarchar](max) NULL, [PhotoUrl] [nvarchar](max) NULL, CONSTRAINT [PK_dbo.Employees] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
项目运行结果如图:
相关文章推荐
- OrgChart 组织架构与PHP结合使用
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- JSP实现树型组织架构(2)--显示orgView
- [原创]我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承
- html结合js实现简单的树状目录
- JS实现网页开窗刷新 GeT传递参数成功 远程打开页面失败的解决方法
- html5 canvas结合js实现的非常酷的ascii animation动画特效
- SpringMVC结合ajaxfileupload.js实现文件无刷新上传
- 我的WCF之旅(5):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的重载(Overloading)
- JS 图表工具可以结合extjs实现
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- JSP实现树型组织架构(3)--管理页面orgManage.jsp
- 通过继承IHttpHandle实现JS插件的组织与管理
- 使用jOrgChart插件实现组织架构图的展示
- 原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
- orgchart插件基础上改进的组织架构,支持增删改,架构展开、放大、缩小,高清图片的生成导出
- JS与HTML结合使用marquee标签实现无缝滚动效果代码
- 利用ncftpget/ncftpput, 结合nohup实现后台连续的上传与下载