没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2020-08-31 10:27:53.330|阅读 321 次
概述:本教程为您提供有关如何在服务器端使用ASP.NET Core 2 创建Gantt的分步说明,如何启用存储甘特图的任务顺序。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。它允许你创建动态甘特图,并以一个方便的图形化方式可视化项目进度。有了dhtmlxGantt,你可以显示活动之间的依赖关系,显示具有完成百分比阴影的当前任务状态以及组织活动到树结构。
存储任务顺序
用户可以通过拖放客户端甘特图来重新安排任务。如果使用此功能,则应将任务的顺序存储在数据库中。有关详细信息,请阅读本节。
请继续阅读以了解如何启用存储甘特图的任务顺序。
在客户端重新排序
首先在客户端启用任务的重新排序。将这些行添加到index.html:
wwwroot / index.html
gantt.config.order_branch = true; gantt.config.order_branch_free = true; // specifying the date format gantt.config.date_format = "%Y-%m-%d %H:%i"; // initializing gantt gantt.init("gantt_here");将任务订单添加到模型
接下来,您必须更改后端,以使其反映任务的当前顺序。向任务模型添加另一种方法:
型号/Task.cs
using System; namespace DHX.Gantt.Models { public class Task { public int Id { get; set; } public string Text { get; set; } public DateTime StartDate { get; set; } public int Duration { get; set; } public decimal Progress { get; set; } public int? ParentId { get; set; } public string Type { get; set; } public int SortOrder { get; set; } } }更新控制器
您还需要更新控制器。
1.客户端应接收按SortOrder值排序的任务。将突出显示的行添加到DataController:
控制器/DataController.cs
[HttpGet] public object Get() { return new { data = _context.Tasks .OrderBy(t => t.SortOrder) .ToList() .Select(t => (WebApiTask)t), links = _context.Links .ToList() .Select(l => (WebApiLink)l) }; }2.新任务还应收到默认值SortOrder:
控制器/ TaskController.cs
// POST api/task [HttpPost] public IActionResult Post(WebApiTask apiTask) { var newTask = (Task)apiTask; newTask.SortOrder = _context.Tasks.Max(t => t.SortOrder) + 1; _context.Tasks.Add(newTask); _context.SaveChanges(); return Ok(new { tid = newTask.Id, action = "inserted" }); }
3. 在客户端上修改任务顺序时,应该更新sortOrder。当用户重新安排任务时,甘特将调用PUT动作,并在请求的“ target”属性以及其余任务属性中提供有关新任务位置的信息 。
添加target到WebApiTask.cs类:
型号/WebApiTask.cs
public class WebApiTask { public int id { get; set; } public string text { get; set; } public string start_date { get; set; } public int duration { get; set; } public decimal progress { get; set; } public int? parent { get; set; } public string type { get; set; } public string target { get; set; } public bool open { get { return true; } set { } } }现在,让我们在PUT(EditTask)操作中实现重新排序。修改任务控制器的放置操作:
控制器/ TaskController.cs
// PUT api/task/5 [HttpPut("{id}")] public IActionResult Put(int id, WebApiTask apiTask) { var updatedTask = (Task)apiTask; updatedTask.Id = id; var dbTask = _context.Tasks.Find(id); dbTask.Text = updatedTask.Text; dbTask.StartDate = updatedTask.StartDate; dbTask.Duration = updatedTask.Duration; dbTask.ParentId = updatedTask.ParentId; dbTask.Progress = updatedTask.Progress; dbTask.Type = updatedTask.Type; if (!string.IsNullOrEmpty(apiTask.target)) { // reordering occurred this._UpdateOrders(dbTask, apiTask.target); } _context.SaveChanges(); _return Ok(new { action = "updated" }); }并添加将更新任务顺序的方法:
控制器/ TaskController.cs
private void _UpdateOrders(Task updatedTask, string orderTarget) { int adjacentTaskId; var nextSibling = false; var targetId = orderTarget; // adjacent task id is sent either as '{id}' or as 'next:{id}' depending // on whether it's the next or the previous sibling if (targetId.StartsWith("next:")) { targetId = targetId.Replace("next:", ""); nextSibling = true; } if (!int.TryParse(targetId, out adjacentTaskId)) { return; } var adjacentTask = _context.Tasks.Find(adjacentTaskId); var startOrder = adjacentTask.SortOrder; if (nextSibling) startOrder++; updatedTask.SortOrder = startOrder; var updateOrders = _context.Tasks .Where(t => t.Id != updatedTask.Id) .Where(t => t.SortOrder >= startOrder) .OrderBy(t => t.SortOrder); var taskList = updateOrders.ToList(); taskList.ForEach(t => t.SortOrder++); }
关产品推荐:
VARCHART XGantt:支持ActiveX、.Net等平台的C#甘特图控件
AnyGantt:构建复杂且内容丰富的甘特图的理想工具
jQuery Gantt Package:基于HTML5 / jQuery的跨平台jQuery Gantt包
phGantt Time Package:对任务和时间的分配管理的甘特图
APS帮助提升企业生产效率,真正实现生产计划可视化呈现与控制,快速有效响应不同场景的生产计划,提高准时交货能力,提高产能和资源利用率
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
文章转载自:本文将为大家介绍DevExpress XAF如何将.NET Aspire集成到Blazor项目中,欢迎下载最新版组件体验!
JxBrowser是 TeamDev 开发的跨平台库,用于在 Java 应用程序中集成 Chromium 浏览器。它支持 HTML5、CSS3、JavaScript 等,具备硬件加速渲染、双向 Java 与 JavaScript 连接、丰富的事件监听等功能,能处理网页保存、打印等操作,助力 Java 应用高效展示和交互网页内容。
FastReport 不仅仅包含报表组件,它还提供更多功能!特别是,它有几个组件可以像其他 Delphi 组件一样在您的应用程序中使用,而且我们一直在向库中添加更多组件。在本文中,我们将介绍其中之一:TfrShellTreeView。
RFID 标签是一种现代化的产品识别方式,正在迅速取代条形码。RFID 标签的独特之处在于它使用无线电信号。这让您可以快速扫描大量物品,节省大量时间。RFID 标签也用于识别公司内部的员工。在本文中,我们将探讨 RFID 标签如何与FastReport VCL中新增的 TfrxDeviceCommand 对象配合使用。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@wqylolg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢