提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2020-09-21 16:39:52.623|阅读 249 次
概述:VARCHART XGantt是一个交互式甘特图组件,可生成清晰,灵活的甘特图。本文介绍了 XGantt .NET如何计算截止日期。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
甘特图(Xgantt)从1998年的第一个商用版本开始就致力于计划编制和项目管理方面控件的研究和开发,经过20多年的积累和沉淀,目前可为软件开发商和最终用户提供最顶级的计划编制和项目管理的控件产品,帮助用户快速的整合项目管理软件所需的甘特图,网络图,资源柱状图,日程日历,资源调度等功能模块,并提供全方位的支持和服务。
VARCHART XGantt是一款功能强大的甘特图控件,其模块化的设计让您可以创建满足需要的应用程序。XGantt可用于.NET,ActiveX和ASP.NET应用程序,可以快速、简单地集成到您的应用程序中,帮助您识别性能瓶颈、避免延迟以及高效利用资源,使复杂数据变得更加容易理解。
与时间和资源相关的计划数据,例如工作,任务,订单,活动和能力,最好在甘特图中显示。
在智能甘特图中,计划者可以随时采取纠正措施。
加速您的开发并创建引人注目的、易于使用的可视化调度体验。VARCHART XGantt在市场上已有近30年的历史,它提供了最完善的C#Gantt图表控件,可用于构建现代而又可靠的行业资源调度应用程序。
保存结束日期的表列仍然为空。一个活动的结束可以使用 VARCHART XGantt 中的日历从字段开始和持续时间计算。
在默认日历中,工作日(周一到周五)预定义为活动时间,而周末(周六和周日)定义为非活动时间。
您可以通过它们的灰色背景来识别图表中的非活动时间。可以通过禁用节点属性页上的“节点使用日历”选项来关闭日历。
请注意使用日历和不使用日历时的计算差异:
如果日历被激活,从周五开始并持续3天的活动将在周二结束。如果不使用日历,活动将在周日结束。
可以使用对象VcCalendar的方法AddDuration(…)来计算结束日期。这需要每个活动的开始和持续时间。字段可以通过它们的索引访问。在通过方法set_DataField(…)设置完结束日期之后,需要调用VcNode的方法Update()来显示修改。
Example Code VB.NET
Dim tmpCal As VcCalendar Dim tmpDate As Date Set tmpCal = VcGantt1.CalendarCollection.Active tmpDate = tmpCalendar.AddDuration(node.DataField(2), node.DataField(4)) node.DataField(3) = tmpDate node.Update()
Example Code C#
VcCalendar tmpCal = vcGantt1.CalendarCollection.Active; DateTime tmpDate = tmpCal.AddDuration((DateTime)node.get_DataField(2), Convert.ToInt32(node.get_DataField(4))); node.set_DataField(3, tmpDate); node.Update();
由鼠标交互创建或修改的活动的开始和结束日期将自动放置在活动时间中。
相反,由API或通过编辑对话框设置的日期可以放在非工作时间。
计算生成的日期总是放在工作时间中。为了确保API设置的日期被放在工作时间中,开始日期需要从结束日期和活动持续时间开始计算。
Example Code VB.NET
tmpDate = tmpCal.AddDuration(node.DataField(3), (-1) * node.DataField(4)) node.DataField(2) = tmpDate
Example Code C#
tmpDate = tmpCal.AddDuration((DateTime)node.get_DataField(3),(-1) * Convert.ToInt32(node.get_DataField(4))); node.set_DataField(2, tmpDate);为了保持数据的一致性,缺失或负的持续时间应被视为不适当,并被重置为0。如果缺少开始日期,则无法计算结束日期。该代码被恢复在一个单独的方法中,名为SetNodeEndDate(...)。
Example Code VB.NET
Private Sub SetNodeEndDate(ByVal node As VcNode) 'Avoid empty duration or negative duration If node.DataField(4) = "" Or node.DataField(4) < 0 Then node.DataField(4) = "0" End If 'Start date empty then end date should also be empty If node.DataField(2) = "31.12.1899 00:00:00" Then node.DataField(3) = "" Else 'Precondition is property page nodes '"Assign calendar to nodes" must be true Dim tmpCal As VcCalendar tmpCal = VcGantt1.CalendarCollection.Active Dim tmpDate As DateTime tmpDate = tmpCal.AddDuration(node.DataField(2), node.DataField(4)) node.DataField(3) = tmpDate 'Start date only in active times tmpDate = tmpCal.AddDuration(node.DataField(3), (-1) * node.DataField(4)) node.DataField(2) = tmpDate node.Update() End If End Sub
Example Code C#
private void SetNodeEndDate(VcNode node) { // Avoid empty duration or negative duration if ((string) node.get_DataField(4) == "" || Convert.ToInt32(node.get_DataField(4)) < 0) node.set_DataField(4,"0"); // Start Date empty then end date should also be empty if (node.get_DataField(2).ToString() == "31.12.1899 00:00:00") node.set_DataField(3,""); else { // Precondition in property page nodes // "Assign calendar to nodes" must be true VcCalendar tmpCal = vcGantt1.CalendarCollection.Active; DateTime tmpDate = tmpCal.AddDuration( (DateTime)node.get_DataField(2), Convert.ToInt32(node.get_DataField(4))); node.set_DataField(3, tmpDate); // start date only in active times tmpDate = tmpCal.AddDuration((DateTime)node.get_DataField(3), (-1) * Convert.ToInt32(node.get_DataField(4))); node.set_DataField(2, tmpDate); node.Update(); } }需要计算日期:
1. 活动加载后
2. 日期或持续时间被数据编辑对话框或就地编辑器修改后
3.活动值被API修改后
但是,经过鼠标交互修改后,不需要启动计算,因为在这种情况下,内部计算将自动执行。
通过VcGantt对象的属性节点集合,可以建立一个包含所有节点的计算循环。它的代码将被添加到事件Form1_Load(…)的末尾。
Example Code VB.NET
'Calculate end date for all nodes Dim node As VcNode For Each node In VcGantt1.NodeCollection SetNodeEndDate node Next
Example Code C#
// Calculate end date for all nodes foreach (VcNode node in vcGantt1.NodeCollection) { SetNodeEndDate(node); }由用户引起的数据改变可以通过事件VcNodeModified来检测。添加的方法调用将计算结束日期。
Example Code VB.NET
Private Sub VcGantt1_VcNodeModified(ByVal sender As Object, ByVal e As NETRONIC.XGantt.VcNodeModifiedEventArgs) Handles VcGantt1.VcNodeModified SetNodeEndDate(e.Node) End Sub
Example Code C#
private void vcGantt1_VcNodeModified(object sender, NETRONIC.XGantt.VcNodeModifiedEventArgs e) { SetNodeEndDate(e.Node); }如果数据的值被API改变,则必须显式调用方法SetNodeEndDate(…)。
APS帮助提升企业生产效率,真正实现生产计划可视化呈现与控制,快速有效响应不同场景的生产计划,提高准时交货能力,提高产能和资源利用率
想要了解甘特图或慧都APS系统,请登录慧都网,解决您的问题!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:本文将探讨如何使用 Spire.XLS for .NET 在 C# 程序中导入 Excel 数据到数据库以及导出数据库到 Excel 文件,实现数据在 Excel 和数据库之间无缝流转。
在本文中,我们将向您展示如何逐步执行此操作,告诉您什么是 SCORM,为什么需要使用它,并列出我们测试过的最佳 SCORM 转换工具之一——iSpring Suite。
本文主要介绍如何使用Kendo UI for Angular组件的ListView来构建带有图表的仪表板,欢迎下载新版控件体验!
在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢