有一系列对象。对象是任务。每个对象都有一个嵌套对象数组。嵌套对象是子任务。
在控制器中
object
在视图中
[HttpGet]
public async Task<IActionResult> Gantt()
{
var applicationContext = await _context.GisTask
.Include(g => g.StatusTask).Where(g => g.StatusTask.Name == "В работе")
.Include(g => g.Category)
.Include(g => g.Customer)
.Include(g => g.User)
.Include(g => g.ControleUser)
.Include(g => g.GisComments)
.Include(g => g.SecondTasks)
.OrderBy(g => g.EndDateTime)
.ToListAsync();
//JsonConvert.SerializeObject((from a in db.Events where a.Active select a).ToList(), Formatting.Indented,new JsonSerializerSettings()
//{
// ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
//}
return View(applicationContext);
}
如何将输出子任务输出到图表d3.js?需要在每个任务下显示子任务。在我看来,结果只推断出任务。
答案 0 :(得分:0)
问题解决了。以前,我有一个包含其他对象的对象数组。我将所有子任务与新数组中的任务放在同一级别。我创建了一个通用数组,在每个任务之后都有子任务。此外,在执行循环期间,子任务按结束日期排序。
var datagantt = @Html.Raw(Json.Serialize(Model));
var second = [];
datagantt.forEach(function (item) {
second.push(item);
item.secondTasks
.sort(function (a, b) {
if (a.endDateTime == b.endDateTime)
return 0;
if (a.endDateTime < b.endDateTime)
return -1;
else
return 1;
})
.forEach(function (d) {
second.push(d);
})
});
就是这样 [{0 task},{1 task},{2 task},{3 task:subtasks [{0 subtask} {1 subtask} {3 subtask}]}]
它变得如此[{0 task},{1 task},{2 task},{3 task},{0 subsask in 3 task},{1 subtask in 3 task},{3 subtask in 3 task} ,{4任务},{0任务4个任务},{1个任务2个任务}]