dhtmlxGantt中,数据渲染,当多个project时间重叠时目前会覆盖掉,需要做避让处理,如何让一行的多个project换行显示呢,不要重叠、不要重叠;
1条回答 默认 最新
关注
不知道你这个问题是否已经解决, 如果还没有解决的话:- 这篇文章:dhtmlxGantt 甘特图 一行展示多条数据 也许能够解决你的问题,你可以看下
- 以下回答由chatgpt基于相关博客总结生成:
我了解到你在使用dhtmlxGantt时遇到了多个project时间重叠的问题,现在我将为你提供一种解决方案。
为了实现多个project时间重叠时的换行显示, 我们可以使用dhtmlxGantt的hook机制来自定义渲染行的行为。
以下是一种实现的思路和代码示例:
- 首先,我们需要创建一个自定义的函数来处理项目渲染。我们可以使用
gantt.templates.task_cell_class
来定义这个函数。这个函数会在每个项目单元格渲染前调用。
gantt.templates.task_cell_class = function(item, date){ // 获取当前项目的起始时间和结束时间 var start = item.start_date; var end = item.end_date; // 获取当前单元格的日期 var cellDate = date.valueOf(); // 检查当前单元格的日期是否在项目的时间范围内 if(cellDate >= start.valueOf() && cellDate <= end.valueOf()){ // 如果是,则添加一个自定义的类名,用于样式处理 return "overlapping"; } return ""; };
在上述代码中,我们定义了一个名为
overlapping
的类名,并将其应用于日期范围内的单元格。你可以自定义这个类名来适应你的项目样式。- 接下来,我们需要为
overlapping
类名添加一些自定义样式。你可以在你的CSS文件中添加以下样式:
.overlapping { white-space: normal !important; overflow: visible !important; }
通过将
white-space
属性设为normal
,我们将允许项目文本在单元格内进行换行。通过将overflow
属性设为visible
,我们允许项目文本超出单元格的边界。- 最后,我们需要确保在使用
dhtmlxGantt.init()
初始化gantt之前加载上述代码,以便Hook函数得到正确的应用。
这样,当你重新加载你的应用程序时,你应该会看到多个project在时间重叠时自动换行显示。
如果你在实施这些解决方案时遇到问题,请随时问我。
- 首先,我们需要创建一个自定义的函数来处理项目渲染。我们可以使用
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决评论 打赏 举报无用 1