diff --git a/blazor/treegrid/columns/column-spanning.md b/blazor/treegrid/columns/column-spanning.md index e5c115b7ec..c30c4ee060 100644 --- a/blazor/treegrid/columns/column-spanning.md +++ b/blazor/treegrid/columns/column-spanning.md @@ -1,7 +1,7 @@ --- layout: post title: Column Spanning in Blazor Tree Grid Component | Syncfusion -description: Check out here and learn more details about the Column spanning in the Syncfusion Blazor Tree Grid component. +description: Check out here and learn more details about the column spanning in the Syncfusion Blazor Tree Grid component. platform: Blazor control: Tree Grid documentation: ug @@ -43,56 +43,61 @@ Column spanning is enabled by setting the [AutoSpan](https://help.syncfusion.com { TreeData = DeveloperSchedule.GetTree().ToList(); } +} + +{% endhighlight %} +{% highlight c# tabtitle="DeveloperSchedule.cs" %} - public class DeveloperSchedule +public class DeveloperSchedule +{ + public int Id { get; set; } + public string Name { get; set; } + public string Slot1 { get; set; } + public string Slot2 { get; set; } + public string Slot3 { get; set; } + public string Slot4 { get; set; } + public string Slot5 { get; set; } + public string Slot6 { get; set; } + public string Slot7 { get; set; } + public int? ParentId { get; set; } + public bool IsExpanded { get; set; } + + public static List GetTree() { - public int Id { get; set; } - public string Name { get; set; } - public string Slot1 { get; set; } - public string Slot2 { get; set; } - public string Slot3 { get; set; } - public string Slot4 { get; set; } - public string Slot5 { get; set; } - public string Slot6 { get; set; } - public string Slot7 { get; set; } - public int? ParentId { get; set; } - public bool IsExpanded { get; set; } - - public static List GetTree() + List Developers = new List { - List Developers = new List - { - new DeveloperSchedule { Id = 1, Name = "Martin", Slot1 = "Feature Dev", Slot2 = "Bug Fixing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Planning", Slot7 = "Code Review", IsExpanded = false }, - new DeveloperSchedule { Id = 2, ParentId = 1, Name = "Vance", Slot1 = "Bug Fixing", Slot2 = "Bug Fixing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Planning", Slot6 = "Code Review", Slot7 = "Feature Dev" }, - new DeveloperSchedule { Id = 3, ParentId = 2, Name = "Charlie", Slot1 = "Team Sync", Slot2 = "Team Sync", Slot3 = "Testing", Slot4 = "Lunch Break", Slot5 = "Feature Dev", Slot6 = "Code Review", Slot7 = "Bug Fixing" }, - new DeveloperSchedule { Id = 4, Name = "Taylor", Slot1 = "Team Sync", Slot2 = "Bug Fixing", Slot3 = "Planning", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Bug Fixing", Slot7 = "Planning", IsExpanded = false }, - new DeveloperSchedule { Id = 5, ParentId = 4, Name = "Anderson", Slot1 = "Testing", Slot2 = "Planning", Slot3 = "Code Review", Slot4 = "Lunch Break", Slot5 = "Bug Fixing", Slot6 = "Testing", Slot7 = "Planning" }, - new DeveloperSchedule { Id = 6, ParentId = 5, Name = "Chris", Slot1 = "Planning", Slot2 = "Code Review", Slot3 = "Feature Dev", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Team Sync", Slot7 = "Testing" }, - new DeveloperSchedule { Id = 7, Name = "Elizabeth", Slot1 = "Code Review", Slot2 = "Feature Dev", Slot3 = "Bug Fixing", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Code Review", Slot7 = "Planning", IsExpanded = false }, - new DeveloperSchedule { Id = 8, ParentId = 7, Name = "Robert", Slot1 = "Feature Dev", Slot2 = "Bug Fixing", Slot3 = "Bug Fixing", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Planning", Slot7 = "Code Review" }, - new DeveloperSchedule { Id = 9, ParentId = 8, Name = "Smith", Slot1 = "Bug Fixing", Slot2 = "Testing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Planning", Slot6 = "Planning", Slot7 = "Feature Dev" }, - new DeveloperSchedule { Id = 10, ParentId = 7, Name = "John", Slot1 = "Scrum", Slot2 = "Team Sync", Slot3 = "Testing", Slot4 = "Lunch Break", Slot5 = "Code Review", Slot6 = "Feature Dev", Slot7 = "Bug Fixing" } - }; - return Developers; - } + new DeveloperSchedule { Id = 1, Name = "Martin", Slot1 = "Feature Dev", Slot2 = "Bug Fixing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Planning", Slot7 = "Code Review", IsExpanded = false }, + new DeveloperSchedule { Id = 2, ParentId = 1, Name = "Vance", Slot1 = "Bug Fixing", Slot2 = "Bug Fixing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Planning", Slot6 = "Code Review", Slot7 = "Feature Dev" }, + new DeveloperSchedule { Id = 3, ParentId = 2, Name = "Charlie", Slot1 = "Team Sync", Slot2 = "Team Sync", Slot3 = "Testing", Slot4 = "Lunch Break", Slot5 = "Feature Dev", Slot6 = "Code Review", Slot7 = "Bug Fixing" }, + new DeveloperSchedule { Id = 4, Name = "Taylor", Slot1 = "Team Sync", Slot2 = "Bug Fixing", Slot3 = "Planning", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Bug Fixing", Slot7 = "Planning", IsExpanded = false }, + new DeveloperSchedule { Id = 5, ParentId = 4, Name = "Anderson", Slot1 = "Testing", Slot2 = "Planning", Slot3 = "Code Review", Slot4 = "Lunch Break", Slot5 = "Bug Fixing", Slot6 = "Testing", Slot7 = "Planning" }, + new DeveloperSchedule { Id = 6, ParentId = 5, Name = "Chris", Slot1 = "Planning", Slot2 = "Code Review", Slot3 = "Feature Dev", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Team Sync", Slot7 = "Testing" }, + new DeveloperSchedule { Id = 7, Name = "Elizabeth", Slot1 = "Code Review", Slot2 = "Feature Dev", Slot3 = "Bug Fixing", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Code Review", Slot7 = "Planning", IsExpanded = false }, + new DeveloperSchedule { Id = 8, ParentId = 7, Name = "Robert", Slot1 = "Feature Dev", Slot2 = "Bug Fixing", Slot3 = "Bug Fixing", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Planning", Slot7 = "Code Review" }, + new DeveloperSchedule { Id = 9, ParentId = 8, Name = "Smith", Slot1 = "Bug Fixing", Slot2 = "Testing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Planning", Slot6 = "Planning", Slot7 = "Feature Dev" }, + new DeveloperSchedule { Id = 10, ParentId = 7, Name = "John", Slot1 = "Scrum", Slot2 = "Team Sync", Slot3 = "Testing", Slot4 = "Lunch Break", Slot5 = "Code Review", Slot6 = "Feature Dev", Slot7 = "Bug Fixing" } + }; + return Developers; } } + {% endhighlight %} {% endtabs %} -## AutoSpanMode enumeration +## AutoSpan Mode Column spanning is part of the broader `AutoSpanMode` enumeration, which provides multiple options for customizing cell merging behavior in the Blazor TreeGrid. The available modes are: + | Enum Value | Description | |---------|-----| -| AutoSpanMode.None | Disables automatic cell spanning. Every cell remains isolated. (Default Mode) | +| AutoSpanMode.None | Disables automatic cell spanning, keeping every cell isolated (Default Mode). | | AutoSpanMode.Row | Enables horizontal merging across columns within the same row. | | AutoSpanMode.Column | Enables vertical merging of adjacent cells with identical values in the same column. | | AutoSpanMode.HorizontalAndVertical | Enables both horizontal and vertical merging. Executes row merging first, followed by column merging. | -## Disable column spanning for specific column +## Disable column spanning for specific column(s) -Spanning in the Syncfusion Blazor TreeGrid can be disabled at the column level by setting the `AutoSpan` property of the `TreeGridColumn` component to `AutoSpanMode.None`. This configuration provides fine-grained control, allowing automatic spanning to be applied globally while excluding specific columns where merging is not desired. +Spanning in the Blazor TreeGrid can be disabled at the column(s) level by setting the `AutoSpan` property of the `TreeGridColumn` component to `AutoSpanMode.None`. This configuration provides fine-grained control, allowing automatic spanning to be applied globally while excluding specific column(s) where merging is not desired. {% tabs %} {% highlight razor tabtitle="Index.razor" %} @@ -148,343 +153,346 @@ Spanning in the Syncfusion Blazor TreeGrid can be disabled at the column level b public List TreeGridData { get; set; } = new(); protected override void OnInitialized() { - TreeGridData = ProjectTask.GetRowSpanData(); + TreeGridData = ProjectTask.GetSpanData(); } - public class ProjectTask +} + +{% endhighlight %} +{% highlight c# tabtitle="ProjectTask.cs" %} +public class ProjectTask +{ + public string ActivityName { get; set; } = string.Empty; + public string LevelId { get; set; } = string.Empty; + public DateTime? StartDate { get; set; } + public DateTime? EndDate { get; set; } + public string Supervisor { get; set; } = string.Empty; + public string Team { get; set; } = string.Empty; + public string Status { get; set; } = string.Empty; + public int Progress { get; set; } + public decimal TotalBudget { get; set; } + public decimal PaidToDate { get; set; } + public string Currency { get; set; } = string.Empty; + public string CostCode { get; set; } = string.Empty; + public string PermitStatus { get; set; } = string.Empty; + public DateTime? InspectionDate { get; set; } + public string InspectionStatus { get; set; } = string.Empty; + public string FollowUpActions { get; set; } = string.Empty; + public decimal InspectionCost { get; set; } + public string PunchListStatus { get; set; } = string.Empty; + public string DocumentReference { get; set; } = string.Empty; + public string MaterialUsed { get; set; } = string.Empty; + public decimal MaterialCost { get; set; } + public string MaterialStockRemaining { get; set; } = string.Empty; + public List Children { get; set; } = new(); + public static List GetSpanData() { - public string ActivityName { get; set; } = string.Empty; - public string LevelId { get; set; } = string.Empty; - public DateTime? StartDate { get; set; } - public DateTime? EndDate { get; set; } - public string Supervisor { get; set; } = string.Empty; - public string Team { get; set; } = string.Empty; - public string Status { get; set; } = string.Empty; - public int Progress { get; set; } - public decimal TotalBudget { get; set; } - public decimal PaidToDate { get; set; } - public string Currency { get; set; } = string.Empty; - public string CostCode { get; set; } = string.Empty; - public string PermitStatus { get; set; } = string.Empty; - public DateTime? InspectionDate { get; set; } - public string InspectionStatus { get; set; } = string.Empty; - public string FollowUpActions { get; set; } = string.Empty; - public decimal InspectionCost { get; set; } - public string PunchListStatus { get; set; } = string.Empty; - public string DocumentReference { get; set; } = string.Empty; - public string MaterialUsed { get; set; } = string.Empty; - public decimal MaterialCost { get; set; } - public string MaterialStockRemaining { get; set; } = string.Empty; - public List Children { get; set; } = new(); - public static List GetRowSpanData() + return new List { - return new List + new ProjectTask { - new ProjectTask + ActivityName = "Tower", + LevelId = "L1-001", + StartDate = new DateTime(2025, 7, 1), + EndDate = new DateTime(2025, 12, 29), + Supervisor = "John Carter", + Team = "Executive Oversight", + Status = "Active", + Progress = 70, + TotalBudget = 1500000m, + PaidToDate = 1050000m, + Currency = "USD", + CostCode = "01-00-00", + PermitStatus = "Approved", + InspectionDate = new DateTime(2025, 12, 30), + InspectionStatus = "Active", + FollowUpActions = "Monitor progress", + InspectionCost = 600m, + PunchListStatus = "Open", + DocumentReference = "DOC-TWR-OVR", + MaterialUsed = "Project Planning Kits", + MaterialCost = 75000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Tower", - LevelId = "L1-001", - StartDate = new DateTime(2025, 7, 1), - EndDate = new DateTime(2025, 12, 29), - Supervisor = "John Carter", - Team = "Executive Oversight", - Status = "Active", - Progress = 70, - TotalBudget = 1500000m, - PaidToDate = 1050000m, - Currency = "USD", - CostCode = "01-00-00", - PermitStatus = "Approved", - InspectionDate = new DateTime(2025, 12, 30), - InspectionStatus = "Active", - FollowUpActions = "Monitor progress", - InspectionCost = 600m, - PunchListStatus = "Open", - DocumentReference = "DOC-TWR-OVR", - MaterialUsed = "Project Planning Kits", - MaterialCost = 75000m, - MaterialStockRemaining = "N/A", - Children = new List + new ProjectTask { - new ProjectTask + ActivityName = "Design Stage", + LevelId = "L2-001", + StartDate = new DateTime(2025, 7, 1), + EndDate = new DateTime(2025, 8, 15), + Supervisor = "Ethan Park", + Team = "Design Division", + Status = "Completed", + Progress = 100, + TotalBudget = 305000m, + PaidToDate = 350000m, + Currency = "USD", + CostCode = "02-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 8, 16), + InspectionStatus = "Passed", + FollowUpActions = "None", + InspectionCost = 200m, + PunchListStatus = "Cleared", + DocumentReference = "DOC-TWR-DES-STG", + MaterialUsed = "Design Blueprints", + MaterialCost = 50000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Design Stage", - LevelId = "L2-001", - StartDate = new DateTime(2025, 7, 1), - EndDate = new DateTime(2025, 8, 15), - Supervisor = "Ethan Park", - Team = "Design Division", - Status = "Completed", - Progress = 100, - TotalBudget = 305000m, - PaidToDate = 350000m, - Currency = "USD", - CostCode = "02-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 8, 16), - InspectionStatus = "Passed", - FollowUpActions = "None", - InspectionCost = 200m, - PunchListStatus = "Cleared", - DocumentReference = "DOC-TWR-DES-STG", - MaterialUsed = "Design Blueprints", - MaterialCost = 50000m, - MaterialStockRemaining = "N/A", - Children = new List - { - new ProjectTask { ActivityName = "Architectural Design Task", LevelId = "L3-001", StartDate = new DateTime(2025, 7, 2), EndDate = new DateTime(2025, 7, 10), Supervisor = "David Lin", Team = "Architecture Unit", Status = "Scheduled", Progress = 100, TotalBudget = 100000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 7, 11), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-ARC-TSK", MaterialUsed = "CAD Drawings", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Structural Design Task", LevelId = "L3-002", StartDate = new DateTime(2025, 7, 11), EndDate = new DateTime(2025, 7, 25), Supervisor = "Sarah Patel", Team = "Structural Unit", Status = "Scheduled", Progress = 100, TotalBudget = 120000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 7, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-STR-TSK", MaterialUsed = "Structural Plans", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "MEP Design Task", LevelId = "L3-003", StartDate = new DateTime(2025, 7, 26), EndDate = new DateTime(2025, 8, 15), Supervisor = "Carlos Rivera", Team = "MEP Unit", Status = "Scheduled", Progress = 100, TotalBudget = 100000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 8, 16), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-MEP-TSK", MaterialUsed = "Electrical Schematics", MaterialCost = 20000m, MaterialStockRemaining = "N/A" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Architectural Design Task", LevelId = "L3-001", StartDate = new DateTime(2025, 7, 2), EndDate = new DateTime(2025, 7, 10), Supervisor = "David Lin", Team = "Architecture Unit", Status = "Scheduled", Progress = 100, TotalBudget = 100000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 7, 11), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-ARC-TSK", MaterialUsed = "CAD Drawings", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Structural Design Task", LevelId = "L3-002", StartDate = new DateTime(2025, 7, 11), EndDate = new DateTime(2025, 7, 25), Supervisor = "Sarah Patel", Team = "Structural Unit", Status = "Scheduled", Progress = 100, TotalBudget = 120000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 7, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-STR-TSK", MaterialUsed = "Structural Plans", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "MEP Design Task", LevelId = "L3-003", StartDate = new DateTime(2025, 7, 26), EndDate = new DateTime(2025, 8, 15), Supervisor = "Carlos Rivera", Team = "MEP Unit", Status = "Scheduled", Progress = 100, TotalBudget = 100000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 8, 16), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-MEP-TSK", MaterialUsed = "Electrical Schematics", MaterialCost = 20000m, MaterialStockRemaining = "N/A" } + } + }, + new ProjectTask + { + ActivityName = "Construction Stage", + LevelId = "L2-002", + StartDate = new DateTime(2025, 8, 16), + EndDate = new DateTime(2025, 10, 20), + Supervisor = "James Patel", + Team = "Construction Division", + Status = "In Progress", + Progress = 75, + TotalBudget = 900000m, + PaidToDate = 675000m, + Currency = "USD", + CostCode = "03-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 10, 21), + InspectionStatus = "Passed with Notes", + FollowUpActions = "Reinforce structure", + InspectionCost = 300m, + PunchListStatus = "Open", + DocumentReference = "DOC-TWR-CON-STG", + MaterialUsed = "Construction Materials", + MaterialCost = 50000m, + MaterialStockRemaining = "300 tons", + Children = new List { - ActivityName = "Construction Stage", - LevelId = "L2-002", - StartDate = new DateTime(2025, 8, 16), - EndDate = new DateTime(2025, 10, 20), - Supervisor = "James Patel", - Team = "Construction Division", - Status = "In Progress", - Progress = 75, - TotalBudget = 900000m, - PaidToDate = 675000m, - Currency = "USD", - CostCode = "03-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 10, 21), - InspectionStatus = "Passed with Notes", - FollowUpActions = "Reinforce structure", - InspectionCost = 300m, - PunchListStatus = "Open", - DocumentReference = "DOC-TWR-CON-STG", - MaterialUsed = "Construction Materials", - MaterialCost = 50000m, - MaterialStockRemaining = "300 tons", - Children = new List - { - new ProjectTask { ActivityName = "Foundation Construction Task", LevelId = "L3-004", StartDate = new DateTime(2025, 8, 16), EndDate = new DateTime(2025, 8, 25), Supervisor = "Robert Singh", Team = "Foundation Crew", Status = "Completed", Progress = 100, TotalBudget = 305000m, PaidToDate = 350000m, Currency = "USD", CostCode = "03-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-FND-TSK", MaterialUsed = "Concrete", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Structural Construction Task", LevelId = "L3-005", StartDate = new DateTime(2025, 8, 26), EndDate = new DateTime(2025, 9, 20), Supervisor = "Nathan Blake", Team = "Structural Team", Status = "In Progress", Progress = 80, TotalBudget = 300000m, PaidToDate = 240000m, Currency = "USD", CostCode = "03-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 21), InspectionStatus = "Passed with Notes", FollowUpActions = "Reinforce beams", InspectionCost = 100m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-STR-TSK", MaterialUsed = "Steel Beams", MaterialCost = 20000m, MaterialStockRemaining = "200 tons" }, - new ProjectTask { ActivityName = "Exterior Construction Task", LevelId = "L3-006", StartDate = new DateTime(2025, 9, 21), EndDate = new DateTime(2025, 10, 20), Supervisor = "Thomas Reed", Team = "Exterior Crew", Status = "In Progress", Progress = 40, TotalBudget = 300000m, PaidToDate = 120000m, Currency = "USD", CostCode = "03-02-03", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 10, 21), InspectionStatus = "Passed with Notes", FollowUpActions = "Continue exterior work", InspectionCost = 100m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-EXT-TSK", MaterialUsed = "Metal Panels", MaterialCost = 15000m, MaterialStockRemaining = "300 panels" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Foundation Construction Task", LevelId = "L3-004", StartDate = new DateTime(2025, 8, 16), EndDate = new DateTime(2025, 8, 25), Supervisor = "Robert Singh", Team = "Foundation Crew", Status = "Completed", Progress = 100, TotalBudget = 305000m, PaidToDate = 350000m, Currency = "USD", CostCode = "03-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-FND-TSK", MaterialUsed = "Concrete", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Structural Construction Task", LevelId = "L3-005", StartDate = new DateTime(2025, 8, 26), EndDate = new DateTime(2025, 9, 20), Supervisor = "Nathan Blake", Team = "Structural Team", Status = "In Progress", Progress = 80, TotalBudget = 300000m, PaidToDate = 240000m, Currency = "USD", CostCode = "03-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 21), InspectionStatus = "Passed with Notes", FollowUpActions = "Reinforce beams", InspectionCost = 100m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-STR-TSK", MaterialUsed = "Steel Beams", MaterialCost = 20000m, MaterialStockRemaining = "200 tons" }, + new ProjectTask { ActivityName = "Exterior Construction Task", LevelId = "L3-006", StartDate = new DateTime(2025, 9, 21), EndDate = new DateTime(2025, 10, 20), Supervisor = "Thomas Reed", Team = "Exterior Crew", Status = "In Progress", Progress = 40, TotalBudget = 300000m, PaidToDate = 120000m, Currency = "USD", CostCode = "03-02-03", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 10, 21), InspectionStatus = "Passed with Notes", FollowUpActions = "Continue exterior work", InspectionCost = 100m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-EXT-TSK", MaterialUsed = "Metal Panels", MaterialCost = 15000m, MaterialStockRemaining = "300 panels" } + } + }, + new ProjectTask + { + ActivityName = "Safety Stage", + LevelId = "L2-003", + StartDate = new DateTime(2025, 10, 21), + EndDate = new DateTime(2025, 11, 5), + Supervisor = "Nathan Blake", + Team = "Safety Division", + Status = "In Progress", + Progress = 60, + TotalBudget = 50000m, + PaidToDate = 30000m, + Currency = "USD", + CostCode = "04-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 11, 6), + InspectionStatus = "Scheduled", + FollowUpActions = "Complete safety audit", + InspectionCost = 0m, + PunchListStatus = "Open", + DocumentReference = "DOC-TWR-SAF-STG", + MaterialUsed = "Safety Equipment", + MaterialCost = 10000m, + MaterialStockRemaining = "50 units", + Children = new List { - ActivityName = "Safety Stage", - LevelId = "L2-003", - StartDate = new DateTime(2025, 10, 21), - EndDate = new DateTime(2025, 11, 5), - Supervisor = "Nathan Blake", - Team = "Safety Division", - Status = "In Progress", - Progress = 60, - TotalBudget = 50000m, - PaidToDate = 30000m, - Currency = "USD", - CostCode = "04-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 11, 6), - InspectionStatus = "Scheduled", - FollowUpActions = "Complete safety audit", - InspectionCost = 0m, - PunchListStatus = "Open", - DocumentReference = "DOC-TWR-SAF-STG", - MaterialUsed = "Safety Equipment", - MaterialCost = 10000m, - MaterialStockRemaining = "50 units", - Children = new List - { - new ProjectTask { ActivityName = "OSHA Compliance Task", LevelId = "L3-007", StartDate = new DateTime(2025, 10, 21), EndDate = new DateTime(2025, 10, 27), Supervisor = "Laura Bennett", Team = "Safety Inspectors", Status = "In Progress", Progress = 70, TotalBudget = 20000m, PaidToDate = 14000m, Currency = "USD", CostCode = "04-02-01", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 10, 28), InspectionStatus = "In Progress", FollowUpActions = "Complete briefing", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-OSHA-TSK", MaterialUsed = "Safety Gear", MaterialCost = 4000m, MaterialStockRemaining = "40 helmets" }, - new ProjectTask { ActivityName = "Fire Safety Task", LevelId = "L3-008", StartDate = new DateTime(2025, 10, 28), EndDate = new DateTime(2025, 11, 1), Supervisor = "Melissa Tran", Team = "Fire Safety Team", Status = "Scheduled", Progress = 30, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-02", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 2), InspectionStatus = "Scheduled", FollowUpActions = "Install exits", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FIRE-TSK", MaterialUsed = "Extinguishers", MaterialCost = 3000m, MaterialStockRemaining = "15 units" }, - new ProjectTask { ActivityName = "Structural Audit Task", LevelId = "L3-009", StartDate = new DateTime(2025, 11, 2), EndDate = new DateTime(2025, 11, 5), Supervisor = "David Lin", Team = "Audit Engineers", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 6), InspectionStatus = "Scheduled", FollowUpActions = "Verify integrity", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-AUD-TSK", MaterialUsed = "Inspection Tools", MaterialCost = 3000m, MaterialStockRemaining = "N/A" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "OSHA Compliance Task", LevelId = "L3-007", StartDate = new DateTime(2025, 10, 21), EndDate = new DateTime(2025, 10, 27), Supervisor = "Laura Bennett", Team = "Safety Inspectors", Status = "In Progress", Progress = 70, TotalBudget = 20000m, PaidToDate = 14000m, Currency = "USD", CostCode = "04-02-01", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 10, 28), InspectionStatus = "In Progress", FollowUpActions = "Complete briefing", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-OSHA-TSK", MaterialUsed = "Safety Gear", MaterialCost = 4000m, MaterialStockRemaining = "40 helmets" }, + new ProjectTask { ActivityName = "Fire Safety Task", LevelId = "L3-008", StartDate = new DateTime(2025, 10, 28), EndDate = new DateTime(2025, 11, 1), Supervisor = "Melissa Tran", Team = "Fire Safety Team", Status = "Scheduled", Progress = 30, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-02", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 2), InspectionStatus = "Scheduled", FollowUpActions = "Install exits", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FIRE-TSK", MaterialUsed = "Extinguishers", MaterialCost = 3000m, MaterialStockRemaining = "15 units" }, + new ProjectTask { ActivityName = "Structural Audit Task", LevelId = "L3-009", StartDate = new DateTime(2025, 11, 2), EndDate = new DateTime(2025, 11, 5), Supervisor = "David Lin", Team = "Audit Engineers", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 6), InspectionStatus = "Scheduled", FollowUpActions = "Verify integrity", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-AUD-TSK", MaterialUsed = "Inspection Tools", MaterialCost = 3000m, MaterialStockRemaining = "N/A" } + } + }, + new ProjectTask + { + ActivityName = "Finishing Stage", + LevelId = "L2-004", + StartDate = new DateTime(2025, 11, 6), + EndDate = new DateTime(2025, 12, 10), + Supervisor = "Melissa Tran", + Team = "Finishing Division", + Status = "Planning", + Progress = 30, + TotalBudget = 250000m, + PaidToDate = 75000m, + Currency = "USD", + CostCode = "05-01-00", + PermitStatus = "Under Review", + InspectionDate = new DateTime(2025, 12, 11), + InspectionStatus = "Scheduled", + FollowUpActions = "Begin interior work", + InspectionCost = 0m, + PunchListStatus = "Pending", + DocumentReference = "DOC-TWR-FIN-STG", + MaterialUsed = "Finishing Supplies", + MaterialCost = 25000m, + MaterialStockRemaining = "200 units", + Children = new List { - ActivityName = "Finishing Stage", - LevelId = "L2-004", - StartDate = new DateTime(2025, 11, 6), - EndDate = new DateTime(2025, 12, 10), - Supervisor = "Melissa Tran", - Team = "Finishing Division", - Status = "Planning", - Progress = 30, - TotalBudget = 250000m, - PaidToDate = 75000m, - Currency = "USD", - CostCode = "05-01-00", - PermitStatus = "Under Review", - InspectionDate = new DateTime(2025, 12, 11), - InspectionStatus = "Scheduled", - FollowUpActions = "Begin interior work", - InspectionCost = 0m, - PunchListStatus = "Pending", - DocumentReference = "DOC-TWR-FIN-STG", - MaterialUsed = "Finishing Supplies", - MaterialCost = 25000m, - MaterialStockRemaining = "200 units", - Children = new List - { - new ProjectTask { ActivityName = "Interior Drywall Task", LevelId = "L3-010", StartDate = new DateTime(2025, 11, 6), EndDate = new DateTime(2025, 11, 20), Supervisor = "Hannah Kim", Team = "Drywall Crew", Status = "In Progress", Progress = 50, TotalBudget = 80000m, PaidToDate = 40000m, Currency = "USD", CostCode = "05-02-01", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 21), InspectionStatus = "In Progress", FollowUpActions = "Check alignment", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-DRY-TSK", MaterialUsed = "Drywall Sheets", MaterialCost = 8000m, MaterialStockRemaining = "150 panels" }, - new ProjectTask { ActivityName = "Flooring Installation Task", LevelId = "L3-011", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 12, 1), Supervisor = "Sarah Patel", Team = "Flooring Team", Status = "Scheduled", Progress = 10, TotalBudget = 80000m, PaidToDate = 0m, Currency = "USD", CostCode = "05-02-02", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 12, 2), InspectionStatus = "Scheduled", FollowUpActions = "Verify level", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FLR-TSM", MaterialUsed = "Concrete Flooring", MaterialCost = 10000m, MaterialStockRemaining = "200 bags" }, - new ProjectTask { ActivityName = "Fixture Setup Task", LevelId = "L3-012", StartDate = new DateTime(2025, 12, 2), EndDate = new DateTime(2025, 12, 10), Supervisor = "Lucas Nguyen", Team = "Fit-Out Crew", Status = "Scheduled", Progress = 10, TotalBudget = 90000m, PaidToDate = 0m, Currency = "USD", CostCode = "05-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 12, 11), InspectionStatus = "Scheduled", FollowUpActions = "Install fixtures", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FIX-TSK", MaterialUsed = "Lighting Fixtures", MaterialCost = 7000m, MaterialStockRemaining = "50 units" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Interior Drywall Task", LevelId = "L3-010", StartDate = new DateTime(2025, 11, 6), EndDate = new DateTime(2025, 11, 20), Supervisor = "Hannah Kim", Team = "Drywall Crew", Status = "In Progress", Progress = 50, TotalBudget = 80000m, PaidToDate = 40000m, Currency = "USD", CostCode = "05-02-01", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 21), InspectionStatus = "In Progress", FollowUpActions = "Check alignment", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-DRY-TSK", MaterialUsed = "Drywall Sheets", MaterialCost = 8000m, MaterialStockRemaining = "150 panels" }, + new ProjectTask { ActivityName = "Flooring Installation Task", LevelId = "L3-011", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 12, 1), Supervisor = "Sarah Patel", Team = "Flooring Team", Status = "Scheduled", Progress = 10, TotalBudget = 80000m, PaidToDate = 0m, Currency = "USD", CostCode = "05-02-02", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 12, 2), InspectionStatus = "Scheduled", FollowUpActions = "Verify level", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FLR-TSM", MaterialUsed = "Concrete Flooring", MaterialCost = 10000m, MaterialStockRemaining = "200 bags" }, + new ProjectTask { ActivityName = "Fixture Setup Task", LevelId = "L3-012", StartDate = new DateTime(2025, 12, 2), EndDate = new DateTime(2025, 12, 10), Supervisor = "Lucas Nguyen", Team = "Fit-Out Crew", Status = "Scheduled", Progress = 10, TotalBudget = 90000m, PaidToDate = 0m, Currency = "USD", CostCode = "05-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 12, 11), InspectionStatus = "Scheduled", FollowUpActions = "Install fixtures", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FIX-TSK", MaterialUsed = "Lighting Fixtures", MaterialCost = 7000m, MaterialStockRemaining = "50 units" } + } + }, + new ProjectTask + { + ActivityName = "Closeout Stage", + LevelId = "L2-005", + StartDate = new DateTime(2025, 12, 11), + EndDate = new DateTime(2025, 12, 29), + Supervisor = "Emma Wilson", + Team = "Closeout Division", + Status = "Planning", + Progress = 20, + TotalBudget = 50000m, + PaidToDate = 10000m, + Currency = "USD", + CostCode = "06-01-00", + PermitStatus = "Under Review", + InspectionDate = new DateTime(2025, 12, 30), + InspectionStatus = "Scheduled", + FollowUpActions = "Finalize handover", + InspectionCost = 0m, + PunchListStatus = "Open", + DocumentReference = "DOC-TWR-CLO-STG", + MaterialUsed = "Closeout Documents", + MaterialCost = 5000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Closeout Stage", - LevelId = "L2-005", - StartDate = new DateTime(2025, 12, 11), - EndDate = new DateTime(2025, 12, 29), - Supervisor = "Emma Wilson", - Team = "Closeout Division", - Status = "Planning", - Progress = 20, - TotalBudget = 50000m, - PaidToDate = 10000m, - Currency = "USD", - CostCode = "06-01-00", - PermitStatus = "Under Review", - InspectionDate = new DateTime(2025, 12, 30), - InspectionStatus = "Scheduled", - FollowUpActions = "Finalize handover", - InspectionCost = 0m, - PunchListStatus = "Open", - DocumentReference = "DOC-TWR-CLO-STG", - MaterialUsed = "Closeout Documents", - MaterialCost = 5000m, - MaterialStockRemaining = "N/A", - Children = new List - { - new ProjectTask { ActivityName = "Punch List Review Task", LevelId = "L3-013", StartDate = new DateTime(2025, 12, 11), EndDate = new DateTime(2025, 12, 15), Supervisor = "John Carter", Team = "Closeout Team", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 16), InspectionStatus = "Not Started", FollowUpActions = "Resolve issues", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-PLR-TSK", MaterialUsed = "Punch List Forms", MaterialCost = 2000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Final Documentation Task", LevelId = "L3-014", StartDate = new DateTime(2025, 12, 16), EndDate = new DateTime(2025, 12, 22), Supervisor = "Emily Foster", Team = "Documentation Team", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 23), InspectionStatus = "Not Started", FollowUpActions = "Prepare reports", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-FD-TSK", MaterialUsed = "As-Built Drawings", MaterialCost = 2000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Client Handover Task", LevelId = "L3-015", StartDate = new DateTime(2025, 12, 23), EndDate = new DateTime(2025, 12, 29), Supervisor = "Emma Wilson", Team = "Client Relations", Status = "Scheduled", Progress = 20, TotalBudget = 20000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 30), InspectionStatus = "Not Started", FollowUpActions = "Conduct walkthrough", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-CH-TSK", MaterialUsed = "Handover Kits", MaterialCost = 1000m, MaterialStockRemaining = "Delivered" } - } + new ProjectTask { ActivityName = "Punch List Review Task", LevelId = "L3-013", StartDate = new DateTime(2025, 12, 11), EndDate = new DateTime(2025, 12, 15), Supervisor = "John Carter", Team = "Closeout Team", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 16), InspectionStatus = "Not Started", FollowUpActions = "Resolve issues", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-PLR-TSK", MaterialUsed = "Punch List Forms", MaterialCost = 2000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Final Documentation Task", LevelId = "L3-014", StartDate = new DateTime(2025, 12, 16), EndDate = new DateTime(2025, 12, 22), Supervisor = "Emily Foster", Team = "Documentation Team", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 23), InspectionStatus = "Not Started", FollowUpActions = "Prepare reports", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-FD-TSK", MaterialUsed = "As-Built Drawings", MaterialCost = 2000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Client Handover Task", LevelId = "L3-015", StartDate = new DateTime(2025, 12, 23), EndDate = new DateTime(2025, 12, 29), Supervisor = "Emma Wilson", Team = "Client Relations", Status = "Scheduled", Progress = 20, TotalBudget = 20000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 30), InspectionStatus = "Not Started", FollowUpActions = "Conduct walkthrough", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-CH-TSK", MaterialUsed = "Handover Kits", MaterialCost = 1000m, MaterialStockRemaining = "Delivered" } } } - }, - new ProjectTask + } + }, + new ProjectTask + { + ActivityName = "Warehouse", + LevelId = "L1-004", + StartDate = new DateTime(2025, 8, 1), + EndDate = new DateTime(2025, 12, 28), + Supervisor = "Emma Wilson", + Team = "Executive Oversight", + Status = "Active", + Progress = 55, + TotalBudget = 1030000m, + PaidToDate = 566500m, + Currency = "USD", + CostCode = "01-00-00", + PermitStatus = "Approved", + InspectionDate = new DateTime(2025, 12, 29), + InspectionStatus = "Passed with Notes", + FollowUpActions = "Address structural concerns", + InspectionCost = 400m, + PunchListStatus = "Open", + DocumentReference = "DOC-WH-OVR", + MaterialUsed = "Project Planning Kits", + MaterialCost = 50000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Warehouse", - LevelId = "L1-004", - StartDate = new DateTime(2025, 8, 1), - EndDate = new DateTime(2025, 12, 28), - Supervisor = "Emma Wilson", - Team = "Executive Oversight", - Status = "Active", - Progress = 55, - TotalBudget = 1030000m, - PaidToDate = 566500m, - Currency = "USD", - CostCode = "01-00-00", - PermitStatus = "Approved", - InspectionDate = new DateTime(2025, 12, 29), - InspectionStatus = "Passed with Notes", - FollowUpActions = "Address structural concerns", - InspectionCost = 400m, - PunchListStatus = "Open", - DocumentReference = "DOC-WH-OVR", - MaterialUsed = "Project Planning Kits", - MaterialCost = 50000m, - MaterialStockRemaining = "N/A", - Children = new List + new ProjectTask { - new ProjectTask + ActivityName = "Design Stage", + LevelId = "L2-016", + StartDate = new DateTime(2025, 8, 1), + EndDate = new DateTime(2025, 9, 10), + Supervisor = "Ethan Park", + Team = "Design Division", + Status = "Completed", + Progress = 100, + TotalBudget = 202000m, + PaidToDate = 220000m, + Currency = "USD", + CostCode = "02-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 9, 11), + InspectionStatus = "Passed", + FollowUpActions = "None", + InspectionCost = 300m, + PunchListStatus = "Cleared", + DocumentReference = "DOC-WH-DES-STG", + MaterialUsed = "Design Blueprints", + MaterialCost = 30000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Design Stage", - LevelId = "L2-016", - StartDate = new DateTime(2025, 8, 1), - EndDate = new DateTime(2025, 9, 10), - Supervisor = "Ethan Park", - Team = "Design Division", - Status = "Completed", - Progress = 100, - TotalBudget = 202000m, - PaidToDate = 220000m, - Currency = "USD", - CostCode = "02-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 9, 11), - InspectionStatus = "Passed", - FollowUpActions = "None", - InspectionCost = 300m, - PunchListStatus = "Cleared", - DocumentReference = "DOC-WH-DES-STG", - MaterialUsed = "Design Blueprints", - MaterialCost = 30000m, - MaterialStockRemaining = "N/A", - Children = new List - { - new ProjectTask { ActivityName = "Architectural Design Task", LevelId = "L3-046", StartDate = new DateTime(2025, 8, 2), EndDate = new DateTime(2025, 8, 12), Supervisor = "David Lin", Team = "Architecture Unit", Status = "Completed", Progress = 100, TotalBudget = 70000m, PaidToDate = 70200m, Currency = "USD", CostCode = "02-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 13), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-ARC-TSK", MaterialUsed = "CAD Drawings", MaterialCost = 10000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Structural Design Task", LevelId = "L3-047", StartDate = new DateTime(2025, 8, 13), EndDate = new DateTime(2025, 8, 28), Supervisor = "Sarah Patel", Team = "Structural Unit", Status = "Completed", Progress = 100, TotalBudget = 72000m, PaidToDate = 70000m, Currency = "USD", CostCode = "02-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 29), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-STR-TSK", MaterialUsed = "Structural Plans", MaterialCost = 10000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "MEP Design Task", LevelId = "L3-048", StartDate = new DateTime(2025, 8, 29), EndDate = new DateTime(2025, 9, 10), Supervisor = "Carlos Rivera", Team = "MEP Unit", Status = "Completed", Progress = 100, TotalBudget = 62000m, PaidToDate = 60000m, Currency = "USD", CostCode = "02-02-03", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 11), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-MEP-TSK", MaterialUsed = "Electrical Schematics", MaterialCost = 10000m, MaterialStockRemaining = "N/A" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Architectural Design Task", LevelId = "L3-046", StartDate = new DateTime(2025, 8, 2), EndDate = new DateTime(2025, 8, 12), Supervisor = "David Lin", Team = "Architecture Unit", Status = "Completed", Progress = 100, TotalBudget = 70000m, PaidToDate = 70200m, Currency = "USD", CostCode = "02-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 13), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-ARC-TSK", MaterialUsed = "CAD Drawings", MaterialCost = 10000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Structural Design Task", LevelId = "L3-047", StartDate = new DateTime(2025, 8, 13), EndDate = new DateTime(2025, 8, 28), Supervisor = "Sarah Patel", Team = "Structural Unit", Status = "Completed", Progress = 100, TotalBudget = 72000m, PaidToDate = 70000m, Currency = "USD", CostCode = "02-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 29), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-STR-TSK", MaterialUsed = "Structural Plans", MaterialCost = 10000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "MEP Design Task", LevelId = "L3-048", StartDate = new DateTime(2025, 8, 29), EndDate = new DateTime(2025, 9, 10), Supervisor = "Carlos Rivera", Team = "MEP Unit", Status = "Completed", Progress = 100, TotalBudget = 62000m, PaidToDate = 60000m, Currency = "USD", CostCode = "02-02-03", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 11), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-MEP-TSK", MaterialUsed = "Electrical Schematics", MaterialCost = 10000m, MaterialStockRemaining = "N/A" } + } + }, + new ProjectTask + { + ActivityName = "Construction Stage", + LevelId = "L2-017", + StartDate = new DateTime(2025, 9, 11), + EndDate = new DateTime(2025, 11, 20), + Supervisor = "James Patel", + Team = "Construction Division", + Status = "In Progress", + Progress = 50, + TotalBudget = 800000m, + PaidToDate = 400000m, + Currency = "USD", + CostCode = "03-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 11, 21), + InspectionStatus = "Passed with Notes", + FollowUpActions = "Address structural issues", + InspectionCost = 400m, + PunchListStatus = "Open", + DocumentReference = "DOC-WH-CON-STG", + MaterialUsed = "Construction Materials", + MaterialCost = 200000m, + MaterialStockRemaining = "500 tons", + Children = new List { - ActivityName = "Construction Stage", - LevelId = "L2-017", - StartDate = new DateTime(2025, 9, 11), - EndDate = new DateTime(2025, 11, 20), - Supervisor = "James Patel", - Team = "Construction Division", - Status = "In Progress", - Progress = 50, - TotalBudget = 800000m, - PaidToDate = 400000m, - Currency = "USD", - CostCode = "03-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 11, 21), - InspectionStatus = "Passed with Notes", - FollowUpActions = "Address structural issues", - InspectionCost = 400m, - PunchListStatus = "Open", - DocumentReference = "DOC-WH-CON-STG", - MaterialUsed = "Construction Materials", - MaterialCost = 200000m, - MaterialStockRemaining = "500 tons", - Children = new List - { - new ProjectTask { ActivityName = "Foundation Construction Task", LevelId = "L3-049", StartDate = new DateTime(2025, 9, 11), EndDate = new DateTime(2025, 9, 25), Supervisor = "Robert Singh", Team = "Foundation Crew", Status = "Completed", Progress = 100, TotalBudget = 300000m, PaidToDate = 320000m, Currency = "USD", CostCode = "03-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-FND-TSK", MaterialUsed = "Concrete Mix", MaterialCost = 80000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Framing Construction Task", LevelId = "L3-050", StartDate = new DateTime(2025, 9, 26), EndDate = new DateTime(2025, 10, 25), Supervisor = "Angela Moore", Team = "Structural Crew", Status = "In Progress", Progress = 60, TotalBudget = 300000m, PaidToDate = 180000m, Currency = "USD", CostCode = "03-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 10, 26), InspectionStatus = "Passed with Notes", FollowUpActions = "Continue framing", InspectionCost = 200m, PunchListStatus = "Open", DocumentReference = "DOC-WH-FRM-TSK", MaterialUsed = "Steel Beams", MaterialCost = 60000m, MaterialStockRemaining = "200 tons" }, - new ProjectTask { ActivityName = "Exterior Construction Task", LevelId = "L3-051", StartDate = new DateTime(2025, 10, 26), EndDate = new DateTime(2025, 11, 20), Supervisor = "Thomas Reed", Team = "Exterior Crew", Status = "In Progress", Progress = 20, TotalBudget = 200000m, PaidToDate = 40000m, Currency = "USD", CostCode = "03-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 21), InspectionStatus = "In Progress", FollowUpActions = "Continue exterior work", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-WH-EXT-TSK", MaterialUsed = "Metal Panels", MaterialCost = 60000m, MaterialStockRemaining = "300 panels" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Foundation Construction Task", LevelId = "L3-049", StartDate = new DateTime(2025, 9, 11), EndDate = new DateTime(2025, 9, 25), Supervisor = "Robert Singh", Team = "Foundation Crew", Status = "Completed", Progress = 100, TotalBudget = 300000m, PaidToDate = 320000m, Currency = "USD", CostCode = "03-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-FND-TSK", MaterialUsed = "Concrete Mix", MaterialCost = 80000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Framing Construction Task", LevelId = "L3-050", StartDate = new DateTime(2025, 9, 26), EndDate = new DateTime(2025, 10, 25), Supervisor = "Angela Moore", Team = "Structural Crew", Status = "In Progress", Progress = 60, TotalBudget = 300000m, PaidToDate = 180000m, Currency = "USD", CostCode = "03-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 10, 26), InspectionStatus = "Passed with Notes", FollowUpActions = "Continue framing", InspectionCost = 200m, PunchListStatus = "Open", DocumentReference = "DOC-WH-FRM-TSK", MaterialUsed = "Steel Beams", MaterialCost = 60000m, MaterialStockRemaining = "200 tons" }, + new ProjectTask { ActivityName = "Exterior Construction Task", LevelId = "L3-051", StartDate = new DateTime(2025, 10, 26), EndDate = new DateTime(2025, 11, 20), Supervisor = "Thomas Reed", Team = "Exterior Crew", Status = "In Progress", Progress = 20, TotalBudget = 200000m, PaidToDate = 40000m, Currency = "USD", CostCode = "03-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 21), InspectionStatus = "In Progress", FollowUpActions = "Continue exterior work", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-WH-EXT-TSK", MaterialUsed = "Metal Panels", MaterialCost = 60000m, MaterialStockRemaining = "300 panels" } + } + }, + new ProjectTask + { + ActivityName = "Safety Stage", + LevelId = "L2-018", + StartDate = new DateTime(2025, 11, 21), + EndDate = new DateTime(2025, 12, 10), + Supervisor = "Nathan Blake", + Team = "Safety Division", + Status = "Planning", + Progress = 30, + TotalBudget = 30000m, + PaidToDate = 9000m, + Currency = "USD", + CostCode = "04-01-00", + PermitStatus = "Under Review", + InspectionDate = new DateTime(2025, 12, 11), + InspectionStatus = "Scheduled", + FollowUpActions = "Schedule safety audit", + InspectionCost = 0m, + PunchListStatus = "Scheduled", + DocumentReference = "DOC-WH-SAF-STG", + MaterialUsed = "Safety Equipment", + MaterialCost = 5000m, + MaterialStockRemaining = "50 units", + Children = new List { - ActivityName = "Safety Stage", - LevelId = "L2-018", - StartDate = new DateTime(2025, 11, 21), - EndDate = new DateTime(2025, 12, 10), - Supervisor = "Nathan Blake", - Team = "Safety Division", - Status = "Planning", - Progress = 30, - TotalBudget = 30000m, - PaidToDate = 9000m, - Currency = "USD", - CostCode = "04-01-00", - PermitStatus = "Under Review", - InspectionDate = new DateTime(2025, 12, 11), - InspectionStatus = "Scheduled", - FollowUpActions = "Schedule safety audit", - InspectionCost = 0m, - PunchListStatus = "Scheduled", - DocumentReference = "DOC-WH-SAF-STG", - MaterialUsed = "Safety Equipment", - MaterialCost = 5000m, - MaterialStockRemaining = "50 units", - Children = new List - { - new ProjectTask { ActivityName = "OSHA Compliance Task", LevelId = "L3-052", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 11, 28), Supervisor = "Laura Bennett", Team = "Safety Inspectors", Status = "Scheduled", Progress = 30, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 11, 29), InspectionStatus = "Not Started", FollowUpActions = "Conduct briefing", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-OSHA-TSK", MaterialUsed = "Safety Gear", MaterialCost = 2000m, MaterialStockRemaining = "40 helmets" }, - new ProjectTask { ActivityName = "Fire Safety Task", LevelId = "L3-053", StartDate = new DateTime(2025, 11, 29), EndDate = new DateTime(2025, 12, 5), Supervisor = "Melissa Tran", Team = "Fire Safety Team", Status = "Scheduled", Progress = 20, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 6), InspectionStatus = "Not Started", FollowUpActions = "Install exits", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-FIRE-TSK", MaterialUsed = "Extinguishers", MaterialCost = 1500m, MaterialStockRemaining = "15 units" }, - new ProjectTask { ActivityName = "Structural Audit Task", LevelId = "L3-054", StartDate = new DateTime(2025, 12, 6), EndDate = new DateTime(2025, 12, 10), Supervisor = "David Lin", Team = "Audit Engineers", Status = "Scheduled", Progress = 20, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 11), InspectionStatus = "Not Started", FollowUpActions = "Verify integrity", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-AUD-TSK", MaterialUsed = "Inspection Tools", MaterialCost = 1500m, MaterialStockRemaining = "N/A" } - } + new ProjectTask { ActivityName = "OSHA Compliance Task", LevelId = "L3-052", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 11, 28), Supervisor = "Laura Bennett", Team = "Safety Inspectors", Status = "Scheduled", Progress = 30, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 11, 29), InspectionStatus = "Not Started", FollowUpActions = "Conduct briefing", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-OSHA-TSK", MaterialUsed = "Safety Gear", MaterialCost = 2000m, MaterialStockRemaining = "40 helmets" }, + new ProjectTask { ActivityName = "Fire Safety Task", LevelId = "L3-053", StartDate = new DateTime(2025, 11, 29), EndDate = new DateTime(2025, 12, 5), Supervisor = "Melissa Tran", Team = "Fire Safety Team", Status = "Scheduled", Progress = 20, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 6), InspectionStatus = "Not Started", FollowUpActions = "Install exits", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-FIRE-TSK", MaterialUsed = "Extinguishers", MaterialCost = 1500m, MaterialStockRemaining = "15 units" }, + new ProjectTask { ActivityName = "Structural Audit Task", LevelId = "L3-054", StartDate = new DateTime(2025, 12, 6), EndDate = new DateTime(2025, 12, 10), Supervisor = "David Lin", Team = "Audit Engineers", Status = "Scheduled", Progress = 20, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 11), InspectionStatus = "Not Started", FollowUpActions = "Verify integrity", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-AUD-TSK", MaterialUsed = "Inspection Tools", MaterialCost = 1500m, MaterialStockRemaining = "N/A" } } } } - }; - } + } + }; } } {% endhighlight %} @@ -526,7 +534,7 @@ Use `MergeCellsAsync` method to manually merge cells by defining rectangular reg | info | `MergeCellInfo` | Defines a single rectangular cell region to be merged. | | infos | `IEnumerable` | Specifies multiple cell regions to be merged in a batch operation. Each region is defined by a `MergeCellInfo` instance. | -To define a merged region, use the following properties of the MergeCellInfo class, +To define a merged region, use the following properties of the `MergeCellInfo` class, | Property | Type | Description | |--------------|------|-----------------------------------------------------------------------------| @@ -540,6 +548,7 @@ The following sample demonstrates programmatic column spanning by calling `Merge {% tabs %} {% highlight razor tabtitle="Index.razor" %} +@using Syncfusion.Blazor.Grids @using Syncfusion.Blazor.TreeGrid @using Syncfusion.Blazor.Buttons @@ -584,11 +593,12 @@ The following sample demonstrates programmatic column spanning by calling `Merge protected override void OnInitialized() { - Tasks = ProjectTask.GetRowSpanData(); + Tasks = ProjectTask.GetSpanData(); } } + {% endhighlight %} -{% highlight c# tabtitle="Order.cs" %} +{% highlight c# tabtitle="ProjectTask.cs" %} public class ProjectTask { @@ -600,155 +610,155 @@ public class ProjectTask public int Progress { get; set; } public List Children { get; set; } = new(); - public static List GetRowSpanData() + public static List GetSpanData() { return new List + { + new ProjectTask { - new ProjectTask - { - ActivityName = "Tower", - StartDate = new DateTime(2025, 7, 1), - EndDate = new DateTime(2025, 12, 29), - Supervisor = "John Carter", - Status = "In Progress", - Progress = 87, - Children = new List + ActivityName = "Tower", + StartDate = new DateTime(2025, 7, 1), + EndDate = new DateTime(2025, 12, 29), + Supervisor = "John Carter", + Status = "In Progress", + Progress = 87, + Children = new List + { + new ProjectTask { - new ProjectTask - { - ActivityName = "Design Stage", - StartDate = new DateTime(2025, 7, 1), - EndDate = new DateTime(2025, 8, 15), - Supervisor = "Ethan Park", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Architectural Design Task", StartDate = new DateTime(2025, 7, 2), EndDate = new DateTime(2025, 7, 10), Supervisor = "David Lin", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Design Task", StartDate = new DateTime(2025, 7, 11), EndDate = new DateTime(2025, 7, 25), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "MEP Design Task", StartDate = new DateTime(2025, 7, 26), EndDate = new DateTime(2025, 8, 15), Supervisor = "Carlos Rivera", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Construction Stage", - StartDate = new DateTime(2025, 8, 16), - EndDate = new DateTime(2025, 10, 20), - Supervisor = "James Patel", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Foundation Construction Task", StartDate = new DateTime(2025, 8, 16), EndDate = new DateTime(2025, 8, 25), Supervisor = "Robert Singh", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Construction Task", StartDate = new DateTime(2025, 8, 26), EndDate = new DateTime(2025, 9, 20), Supervisor = "Nathan Blake", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Exterior Construction Task", StartDate = new DateTime(2025, 9, 21), EndDate = new DateTime(2025, 10, 20), Supervisor = "Thomas Reed", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Safety Stage", - StartDate = new DateTime(2025, 10, 21), - EndDate = new DateTime(2025, 11, 5), - Supervisor = "Nathan Blake", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "OSHA Compliance Task", StartDate = new DateTime(2025, 10, 21), EndDate = new DateTime(2025, 10, 27), Supervisor = "Laura Bennett", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Fire Safety Task", StartDate = new DateTime(2025, 10, 28), EndDate = new DateTime(2025, 11, 1), Supervisor = "Melissa Tran", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Audit Task", StartDate = new DateTime(2025, 11, 2), EndDate = new DateTime(2025, 11, 5), Supervisor = "David Lin", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Finishing Stage", - StartDate = new DateTime(2025, 11, 6), - EndDate = new DateTime(2025, 12, 10), - Supervisor = "Melissa Tran", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Interior Drywall Task", StartDate = new DateTime(2025, 11, 6), EndDate = new DateTime(2025, 11, 20), Supervisor = "Hannah Kim", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Flooring Installation Task", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 12, 1), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Fixture Setup Task", StartDate = new DateTime(2025, 12, 2), EndDate = new DateTime(2025, 12, 10), Supervisor = "Lucas Nguyen", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Closeout Stage", - StartDate = new DateTime(2025, 12, 11), - EndDate = new DateTime(2025, 12, 29), - Supervisor = "Emma Wilson", - Status = "In Progress", - Progress = 33, - Children = new List - { - new ProjectTask { ActivityName = "Punch List Review Task", StartDate = new DateTime(2025, 12, 11), EndDate = new DateTime(2025, 12, 15), Supervisor = "John Carter", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Final Documentation Task", StartDate = new DateTime(2025, 12, 16), EndDate = new DateTime(2025, 12, 22), Supervisor = "Emily Foster", Status = "In Progress", Progress = 0 }, - new ProjectTask { ActivityName = "Client Handover Task", StartDate = new DateTime(2025, 12, 23), EndDate = new DateTime(2025, 12, 29), Supervisor = "Emma Wilson", Status = "Scheduled", Progress = 0 } - } + ActivityName = "Design Stage", + StartDate = new DateTime(2025, 7, 1), + EndDate = new DateTime(2025, 8, 15), + Supervisor = "Ethan Park", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Architectural Design Task", StartDate = new DateTime(2025, 7, 2), EndDate = new DateTime(2025, 7, 10), Supervisor = "David Lin", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Design Task", StartDate = new DateTime(2025, 7, 11), EndDate = new DateTime(2025, 7, 25), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "MEP Design Task", StartDate = new DateTime(2025, 7, 26), EndDate = new DateTime(2025, 8, 15), Supervisor = "Carlos Rivera", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Construction Stage", + StartDate = new DateTime(2025, 8, 16), + EndDate = new DateTime(2025, 10, 20), + Supervisor = "James Patel", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Foundation Construction Task", StartDate = new DateTime(2025, 8, 16), EndDate = new DateTime(2025, 8, 25), Supervisor = "Robert Singh", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Construction Task", StartDate = new DateTime(2025, 8, 26), EndDate = new DateTime(2025, 9, 20), Supervisor = "Nathan Blake", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Exterior Construction Task", StartDate = new DateTime(2025, 9, 21), EndDate = new DateTime(2025, 10, 20), Supervisor = "Thomas Reed", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Safety Stage", + StartDate = new DateTime(2025, 10, 21), + EndDate = new DateTime(2025, 11, 5), + Supervisor = "Nathan Blake", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "OSHA Compliance Task", StartDate = new DateTime(2025, 10, 21), EndDate = new DateTime(2025, 10, 27), Supervisor = "Laura Bennett", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Fire Safety Task", StartDate = new DateTime(2025, 10, 28), EndDate = new DateTime(2025, 11, 1), Supervisor = "Melissa Tran", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Audit Task", StartDate = new DateTime(2025, 11, 2), EndDate = new DateTime(2025, 11, 5), Supervisor = "David Lin", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Finishing Stage", + StartDate = new DateTime(2025, 11, 6), + EndDate = new DateTime(2025, 12, 10), + Supervisor = "Melissa Tran", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Interior Drywall Task", StartDate = new DateTime(2025, 11, 6), EndDate = new DateTime(2025, 11, 20), Supervisor = "Hannah Kim", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Flooring Installation Task", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 12, 1), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Fixture Setup Task", StartDate = new DateTime(2025, 12, 2), EndDate = new DateTime(2025, 12, 10), Supervisor = "Lucas Nguyen", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Closeout Stage", + StartDate = new DateTime(2025, 12, 11), + EndDate = new DateTime(2025, 12, 29), + Supervisor = "Emma Wilson", + Status = "In Progress", + Progress = 33, + Children = new List + { + new ProjectTask { ActivityName = "Punch List Review Task", StartDate = new DateTime(2025, 12, 11), EndDate = new DateTime(2025, 12, 15), Supervisor = "John Carter", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Final Documentation Task", StartDate = new DateTime(2025, 12, 16), EndDate = new DateTime(2025, 12, 22), Supervisor = "Emily Foster", Status = "In Progress", Progress = 0 }, + new ProjectTask { ActivityName = "Client Handover Task", StartDate = new DateTime(2025, 12, 23), EndDate = new DateTime(2025, 12, 29), Supervisor = "Emma Wilson", Status = "Scheduled", Progress = 0 } } } - }, - new ProjectTask - { - ActivityName = "Warehouse", - StartDate = new DateTime(2025, 8, 1), - EndDate = new DateTime(2025, 12, 28), - Supervisor = "Emma Wilson", - Status = "Completed", - Progress = 100, - Children = new List + } + }, + new ProjectTask + { + ActivityName = "Warehouse", + StartDate = new DateTime(2025, 8, 1), + EndDate = new DateTime(2025, 12, 28), + Supervisor = "Emma Wilson", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { - new ProjectTask - { - ActivityName = "Design Stage", - StartDate = new DateTime(2025, 8, 1), - EndDate = new DateTime(2025, 9, 10), - Supervisor = "Ethan Park", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Architectural Design Task", StartDate = new DateTime(2025, 8, 2), EndDate = new DateTime(2025, 8, 12), Supervisor = "David Lin", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Design Task", StartDate = new DateTime(2025, 8, 13), EndDate = new DateTime(2025, 8, 28), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "MEP Design Task", StartDate = new DateTime(2025, 8, 29), EndDate = new DateTime(2025, 9, 10), Supervisor = "Carlos Rivera", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Construction Stage", - StartDate = new DateTime(2025, 9, 11), - EndDate = new DateTime(2025, 11, 20), - Supervisor = "James Patel", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Foundation Construction Task", StartDate = new DateTime(2025, 9, 11), EndDate = new DateTime(2025, 9, 25), Supervisor = "Robert Singh", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Framing Construction Task", StartDate = new DateTime(2025, 9, 26), EndDate = new DateTime(2025, 10, 25), Supervisor = "Angela Moore", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Exterior Construction Task", StartDate = new DateTime(2025, 10, 26), EndDate = new DateTime(2025, 11, 20), Supervisor = "Thomas Reed", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Safety Stage", - StartDate = new DateTime(2025, 11, 21), - EndDate = new DateTime(2025, 12, 10), - Supervisor = "Nathan Blake", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "OSHA Compliance Task", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 11, 28), Supervisor = "Laura Bennett", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Fire Safety Task", StartDate = new DateTime(2025, 11, 29), EndDate = new DateTime(2025, 12, 5), Supervisor = "Melissa Tran", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Audit Task", StartDate = new DateTime(2025, 12, 6), EndDate = new DateTime(2025, 12, 10), Supervisor = "David Lin", Status = "Completed", Progress = 100 } - } + ActivityName = "Design Stage", + StartDate = new DateTime(2025, 8, 1), + EndDate = new DateTime(2025, 9, 10), + Supervisor = "Ethan Park", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Architectural Design Task", StartDate = new DateTime(2025, 8, 2), EndDate = new DateTime(2025, 8, 12), Supervisor = "David Lin", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Design Task", StartDate = new DateTime(2025, 8, 13), EndDate = new DateTime(2025, 8, 28), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "MEP Design Task", StartDate = new DateTime(2025, 8, 29), EndDate = new DateTime(2025, 9, 10), Supervisor = "Carlos Rivera", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Construction Stage", + StartDate = new DateTime(2025, 9, 11), + EndDate = new DateTime(2025, 11, 20), + Supervisor = "James Patel", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Foundation Construction Task", StartDate = new DateTime(2025, 9, 11), EndDate = new DateTime(2025, 9, 25), Supervisor = "Robert Singh", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Framing Construction Task", StartDate = new DateTime(2025, 9, 26), EndDate = new DateTime(2025, 10, 25), Supervisor = "Angela Moore", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Exterior Construction Task", StartDate = new DateTime(2025, 10, 26), EndDate = new DateTime(2025, 11, 20), Supervisor = "Thomas Reed", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Safety Stage", + StartDate = new DateTime(2025, 11, 21), + EndDate = new DateTime(2025, 12, 10), + Supervisor = "Nathan Blake", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "OSHA Compliance Task", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 11, 28), Supervisor = "Laura Bennett", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Fire Safety Task", StartDate = new DateTime(2025, 11, 29), EndDate = new DateTime(2025, 12, 5), Supervisor = "Melissa Tran", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Audit Task", StartDate = new DateTime(2025, 12, 6), EndDate = new DateTime(2025, 12, 10), Supervisor = "David Lin", Status = "Completed", Progress = 100 } } } } - }; + } + }; } } @@ -777,15 +787,14 @@ This sample demonstrates clearing merged regions in the TreeGrid by calling `Unm {% tabs %} {% highlight razor tabtitle="Index.razor" %} +@using Syncfusion.Blazor.Grids @using Syncfusion.Blazor.TreeGrid @using Syncfusion.Blazor.Buttons Merge Cell UnMerge Cell - Merge Multiple Cells UnMerge Multiple Cells - UnMerge All Cells @@ -835,7 +844,7 @@ This sample demonstrates clearing merged regions in the TreeGrid by calling `Unm public async Task UnMergeCells() { - await Grid.UnmergeCellsAsync(new[] + await TreeGrid.UnmergeCellsAsync(new[] { new UnmergeCellInfo { RowIndex = 0, ColumnIndex = 0 }, new UnmergeCellInfo { RowIndex = 5, ColumnIndex = 0 }, @@ -845,16 +854,17 @@ This sample demonstrates clearing merged regions in the TreeGrid by calling `Unm public async Task UnMergeAllCells() { - await Grid.UnmergeAllAsync(); + await TreeGrid.UnmergeAllAsync(); } protected override void OnInitialized() { - Tasks = ProjectTask.GetRowSpanData(); + Tasks = ProjectTask.GetSpanData(); } } + {% endhighlight %} -{% highlight c# tabtitle="Order.cs" %} +{% highlight c# tabtitle="ProjectTask.cs" %} public class ProjectTask { @@ -866,7 +876,7 @@ public class ProjectTask public int Progress { get; set; } public List Children { get; set; } = new(); - public static List GetRowSpanData() + public static List GetSpanData() { return new List { @@ -1023,11 +1033,11 @@ public class ProjectTask ## Limitations -The following list outlines the features that are not compatible with column spanning. +The following list outlines the features that are not compatible with column spanning: * Virtualization * Infinite Scrolling -* Row Drag and Drop +* Row - Drag and Drop * Column Virtualization * Detail Template * Editing @@ -1035,6 +1045,4 @@ The following list outlines the features that are not compatible with column spa ## See also -* [Column spanning in Syncfusion® TreeGrid](https://blazor.syncfusion.com/documentation/treegrid/rows/row-spanning) - - +* [Row Spanning in Syncfusion® TreeGrid](https://blazor.syncfusion.com/documentation/treegrid/rows/row-spanning) diff --git a/blazor/treegrid/rows/row-spanning.md b/blazor/treegrid/rows/row-spanning.md index dc9cf9695d..6e30511ef0 100644 --- a/blazor/treegrid/rows/row-spanning.md +++ b/blazor/treegrid/rows/row-spanning.md @@ -1,7 +1,7 @@ --- layout: post title: Row Spanning in Blazor Tree Grid Component | Syncfusion -description: Check out here and learn more details about the Row spanning in the Syncfusion Blazor Tree Grid component. +description: Check out here and learn more details about the row spanning in the Syncfusion Blazor Tree Grid component. platform: Blazor control: Tree Grid documentation: ug @@ -43,58 +43,61 @@ Row spanning is enabled by setting the [AutoSpan](https://help.syncfusion.com/cr { TreeData = DeveloperSchedule.GetTree().ToList(); } +} + +{% endhighlight %} +{% highlight c# tabtitle="DeveloperSchedule.cs" %} - public class DeveloperSchedule +public class DeveloperSchedule +{ + public int Id { get; set; } + public string Name { get; set; } + public string Slot1 { get; set; } + public string Slot2 { get; set; } + public string Slot3 { get; set; } + public string Slot4 { get; set; } + public string Slot5 { get; set; } + public string Slot6 { get; set; } + public string Slot7 { get; set; } + public int? ParentId { get; set; } + public bool IsExpanded { get; set; } + + public static List GetTree() { - public int Id { get; set; } - public string Name { get; set; } - public string Slot1 { get; set; } - public string Slot2 { get; set; } - public string Slot3 { get; set; } - public string Slot4 { get; set; } - public string Slot5 { get; set; } - public string Slot6 { get; set; } - public string Slot7 { get; set; } - public int? ParentId { get; set; } - public bool IsExpanded { get; set; } - - public static List GetTree() + List Developers = new List { - List Developers = new List - { - new DeveloperSchedule { Id = 1, Name = "Martin", Slot1 = "Feature Dev", Slot2 = "Bug Fixing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Planning", Slot7 = "Code Review", IsExpanded = false }, - new DeveloperSchedule { Id = 2, ParentId = 1, Name = "Vance", Slot1 = "Bug Fixing", Slot2 = "Bug Fixing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Planning", Slot6 = "Code Review", Slot7 = "Feature Dev" }, - new DeveloperSchedule { Id = 3, ParentId = 2, Name = "Charlie", Slot1 = "Team Sync", Slot2 = "Team Sync", Slot3 = "Testing", Slot4 = "Lunch Break", Slot5 = "Feature Dev", Slot6 = "Code Review", Slot7 = "Bug Fixing" }, - new DeveloperSchedule { Id = 4, Name = "Taylor", Slot1 = "Team Sync", Slot2 = "Bug Fixing", Slot3 = "Planning", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Bug Fixing", Slot7 = "Planning", IsExpanded = false }, - new DeveloperSchedule { Id = 5, ParentId = 4, Name = "Anderson", Slot1 = "Testing", Slot2 = "Planning", Slot3 = "Code Review", Slot4 = "Lunch Break", Slot5 = "Bug Fixing", Slot6 = "Testing", Slot7 = "Planning" }, - new DeveloperSchedule { Id = 6, ParentId = 5, Name = "Chris", Slot1 = "Planning", Slot2 = "Code Review", Slot3 = "Feature Dev", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Team Sync", Slot7 = "Testing" }, - new DeveloperSchedule { Id = 7, Name = "Elizabeth", Slot1 = "Code Review", Slot2 = "Feature Dev", Slot3 = "Bug Fixing", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Code Review", Slot7 = "Planning", IsExpanded = false }, - new DeveloperSchedule { Id = 8, ParentId = 7, Name = "Robert", Slot1 = "Feature Dev", Slot2 = "Bug Fixing", Slot3 = "Bug Fixing", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Planning", Slot7 = "Code Review" }, - new DeveloperSchedule { Id = 9, ParentId = 8, Name = "Smith", Slot1 = "Bug Fixing", Slot2 = "Testing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Planning", Slot6 = "Planning", Slot7 = "Feature Dev" }, - new DeveloperSchedule { Id = 10, ParentId = 7, Name = "John", Slot1 = "Scrum", Slot2 = "Team Sync", Slot3 = "Testing", Slot4 = "Lunch Break", Slot5 = "Code Review", Slot6 = "Feature Dev", Slot7 = "Bug Fixing" } - }; - return Developers; - } + new DeveloperSchedule { Id = 1, Name = "Martin", Slot1 = "Feature Dev", Slot2 = "Bug Fixing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Planning", Slot7 = "Code Review", IsExpanded = false }, + new DeveloperSchedule { Id = 2, ParentId = 1, Name = "Vance", Slot1 = "Bug Fixing", Slot2 = "Bug Fixing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Planning", Slot6 = "Code Review", Slot7 = "Feature Dev" }, + new DeveloperSchedule { Id = 3, ParentId = 2, Name = "Charlie", Slot1 = "Team Sync", Slot2 = "Team Sync", Slot3 = "Testing", Slot4 = "Lunch Break", Slot5 = "Feature Dev", Slot6 = "Code Review", Slot7 = "Bug Fixing" }, + new DeveloperSchedule { Id = 4, Name = "Taylor", Slot1 = "Team Sync", Slot2 = "Bug Fixing", Slot3 = "Planning", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Bug Fixing", Slot7 = "Planning", IsExpanded = false }, + new DeveloperSchedule { Id = 5, ParentId = 4, Name = "Anderson", Slot1 = "Testing", Slot2 = "Planning", Slot3 = "Code Review", Slot4 = "Lunch Break", Slot5 = "Bug Fixing", Slot6 = "Testing", Slot7 = "Planning" }, + new DeveloperSchedule { Id = 6, ParentId = 5, Name = "Chris", Slot1 = "Planning", Slot2 = "Code Review", Slot3 = "Feature Dev", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Team Sync", Slot7 = "Testing" }, + new DeveloperSchedule { Id = 7, Name = "Elizabeth", Slot1 = "Code Review", Slot2 = "Feature Dev", Slot3 = "Bug Fixing", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Code Review", Slot7 = "Planning", IsExpanded = false }, + new DeveloperSchedule { Id = 8, ParentId = 7, Name = "Robert", Slot1 = "Feature Dev", Slot2 = "Bug Fixing", Slot3 = "Bug Fixing", Slot4 = "Lunch Break", Slot5 = "Testing", Slot6 = "Planning", Slot7 = "Code Review" }, + new DeveloperSchedule { Id = 9, ParentId = 8, Name = "Smith", Slot1 = "Bug Fixing", Slot2 = "Testing", Slot3 = "Team Sync", Slot4 = "Lunch Break", Slot5 = "Planning", Slot6 = "Planning", Slot7 = "Feature Dev" }, + new DeveloperSchedule { Id = 10, ParentId = 7, Name = "John", Slot1 = "Scrum", Slot2 = "Team Sync", Slot3 = "Testing", Slot4 = "Lunch Break", Slot5 = "Code Review", Slot6 = "Feature Dev", Slot7 = "Bug Fixing" } + }; + return Developers; } } {% endhighlight %} -{% endtabs %}@using Syncfusion.Blazor.Grids +{% endtabs %} -## AutoSpanMode enumeration +## AutoSpan Mode Row spanning is part of the broader `AutoSpanMode` enumeration, which provides multiple options for customizing cell merging behavior in the Blazor TreeGrid. The available modes are: | Enum Value | Description | |---------|-----| -| AutoSpanMode.None | Disables automatic cell spanning. Every cell remains isolated. (Default Mode) | +| AutoSpanMode.None | Disables automatic cell spanning, keeping every cell isolated (Default Mode). | | AutoSpanMode.Row | Enables horizontal merging across columns within the same row. | | AutoSpanMode.Column | Enables vertical merging of adjacent cells with identical values in the same column. | | AutoSpanMode.HorizontalAndVertical | Enables both horizontal and vertical merging. Executes row merging first, followed by column merging. | -## Disable spanning for specific column +## Disable spanning for specific column(s) -Spanning in the Blazor TreeGrid can be disabled at the column level by setting the `AutoSpan` property of the `TreeGridColumn` component to `AutoSpanMode.None`. This configuration provides fine-grained control, allowing automatic spanning to be applied globally while excluding specific columns where merging is not desired. +Spanning in the Blazor TreeGrid can be disabled at the column(s) level by setting the `AutoSpan` property of the `TreeGridColumn` component to `AutoSpanMode.None`. This configuration provides fine-grained control, allowing automatic spanning to be applied globally while excluding specific column(s) where merging is not desired. {% tabs %} {% highlight razor tabtitle="Index.razor" %} @@ -111,7 +114,7 @@ Spanning in the Blazor TreeGrid can be disabled at the column level by setting t - + @@ -150,346 +153,348 @@ Spanning in the Blazor TreeGrid can be disabled at the column level by setting t public List TreeGridData { get; set; } = new(); protected override void OnInitialized() { - TreeGridData = ProjectTask.GetRowSpanData(); + TreeGridData = ProjectTask.GetSpanData(); } - public class ProjectTask +} + +{% endhighlight %} +{% highlight c# tabtitle="ProjectTask.cs" %} +public class ProjectTask +{ + public string ActivityName { get; set; } = string.Empty; + public string LevelId { get; set; } = string.Empty; + public DateTime? StartDate { get; set; } + public DateTime? EndDate { get; set; } + public string Supervisor { get; set; } = string.Empty; + public string Team { get; set; } = string.Empty; + public string Status { get; set; } = string.Empty; + public int Progress { get; set; } + public decimal TotalBudget { get; set; } + public decimal PaidToDate { get; set; } + public string Currency { get; set; } = string.Empty; + public string CostCode { get; set; } = string.Empty; + public string PermitStatus { get; set; } = string.Empty; + public DateTime? InspectionDate { get; set; } + public string InspectionStatus { get; set; } = string.Empty; + public string FollowUpActions { get; set; } = string.Empty; + public decimal InspectionCost { get; set; } + public string PunchListStatus { get; set; } = string.Empty; + public string DocumentReference { get; set; } = string.Empty; + public string MaterialUsed { get; set; } = string.Empty; + public decimal MaterialCost { get; set; } + public string MaterialStockRemaining { get; set; } = string.Empty; + public List Children { get; set; } = new(); + public static List GetSpanData() { - public string ActivityName { get; set; } = string.Empty; - public string LevelId { get; set; } = string.Empty; - public DateTime? StartDate { get; set; } - public DateTime? EndDate { get; set; } - public string Supervisor { get; set; } = string.Empty; - public string Team { get; set; } = string.Empty; - public string Status { get; set; } = string.Empty; - public int Progress { get; set; } - public decimal TotalBudget { get; set; } - public decimal PaidToDate { get; set; } - public string Currency { get; set; } = string.Empty; - public string CostCode { get; set; } = string.Empty; - public string PermitStatus { get; set; } = string.Empty; - public DateTime? InspectionDate { get; set; } - public string InspectionStatus { get; set; } = string.Empty; - public string FollowUpActions { get; set; } = string.Empty; - public decimal InspectionCost { get; set; } - public string PunchListStatus { get; set; } = string.Empty; - public string DocumentReference { get; set; } = string.Empty; - public string MaterialUsed { get; set; } = string.Empty; - public decimal MaterialCost { get; set; } - public string MaterialStockRemaining { get; set; } = string.Empty; - public List Children { get; set; } = new(); - public static List GetRowSpanData() + return new List { - return new List + new ProjectTask { - new ProjectTask + ActivityName = "Tower", + LevelId = "L1-001", + StartDate = new DateTime(2025, 7, 1), + EndDate = new DateTime(2025, 12, 29), + Supervisor = "John Carter", + Team = "Executive Oversight", + Status = "Active", + Progress = 70, + TotalBudget = 1500000m, + PaidToDate = 1050000m, + Currency = "USD", + CostCode = "01-00-00", + PermitStatus = "Approved", + InspectionDate = new DateTime(2025, 12, 30), + InspectionStatus = "Active", + FollowUpActions = "Monitor progress", + InspectionCost = 600m, + PunchListStatus = "Open", + DocumentReference = "DOC-TWR-OVR", + MaterialUsed = "Project Planning Kits", + MaterialCost = 75000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Tower", - LevelId = "L1-001", - StartDate = new DateTime(2025, 7, 1), - EndDate = new DateTime(2025, 12, 29), - Supervisor = "John Carter", - Team = "Executive Oversight", - Status = "Active", - Progress = 70, - TotalBudget = 1500000m, - PaidToDate = 1050000m, - Currency = "USD", - CostCode = "01-00-00", - PermitStatus = "Approved", - InspectionDate = new DateTime(2025, 12, 30), - InspectionStatus = "Active", - FollowUpActions = "Monitor progress", - InspectionCost = 600m, - PunchListStatus = "Open", - DocumentReference = "DOC-TWR-OVR", - MaterialUsed = "Project Planning Kits", - MaterialCost = 75000m, - MaterialStockRemaining = "N/A", - Children = new List + new ProjectTask { - new ProjectTask + ActivityName = "Design Stage", + LevelId = "L2-001", + StartDate = new DateTime(2025, 7, 1), + EndDate = new DateTime(2025, 8, 15), + Supervisor = "Ethan Park", + Team = "Design Division", + Status = "Completed", + Progress = 100, + TotalBudget = 305000m, + PaidToDate = 350000m, + Currency = "USD", + CostCode = "02-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 8, 16), + InspectionStatus = "Passed", + FollowUpActions = "None", + InspectionCost = 200m, + PunchListStatus = "Cleared", + DocumentReference = "DOC-TWR-DES-STG", + MaterialUsed = "Design Blueprints", + MaterialCost = 50000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Design Stage", - LevelId = "L2-001", - StartDate = new DateTime(2025, 7, 1), - EndDate = new DateTime(2025, 8, 15), - Supervisor = "Ethan Park", - Team = "Design Division", - Status = "Completed", - Progress = 100, - TotalBudget = 305000m, - PaidToDate = 350000m, - Currency = "USD", - CostCode = "02-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 8, 16), - InspectionStatus = "Passed", - FollowUpActions = "None", - InspectionCost = 200m, - PunchListStatus = "Cleared", - DocumentReference = "DOC-TWR-DES-STG", - MaterialUsed = "Design Blueprints", - MaterialCost = 50000m, - MaterialStockRemaining = "N/A", - Children = new List - { - new ProjectTask { ActivityName = "Architectural Design Task", LevelId = "L3-001", StartDate = new DateTime(2025, 7, 2), EndDate = new DateTime(2025, 7, 10), Supervisor = "David Lin", Team = "Architecture Unit", Status = "Scheduled", Progress = 100, TotalBudget = 100000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 7, 11), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-ARC-TSK", MaterialUsed = "CAD Drawings", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Structural Design Task", LevelId = "L3-002", StartDate = new DateTime(2025, 7, 11), EndDate = new DateTime(2025, 7, 25), Supervisor = "Sarah Patel", Team = "Structural Unit", Status = "Scheduled", Progress = 100, TotalBudget = 120000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 7, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-STR-TSK", MaterialUsed = "Structural Plans", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "MEP Design Task", LevelId = "L3-003", StartDate = new DateTime(2025, 7, 26), EndDate = new DateTime(2025, 8, 15), Supervisor = "Carlos Rivera", Team = "MEP Unit", Status = "Scheduled", Progress = 100, TotalBudget = 100000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 8, 16), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-MEP-TSK", MaterialUsed = "Electrical Schematics", MaterialCost = 20000m, MaterialStockRemaining = "N/A" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Architectural Design Task", LevelId = "L3-001", StartDate = new DateTime(2025, 7, 2), EndDate = new DateTime(2025, 7, 10), Supervisor = "David Lin", Team = "Architecture Unit", Status = "Scheduled", Progress = 100, TotalBudget = 100000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 7, 11), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-ARC-TSK", MaterialUsed = "CAD Drawings", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Structural Design Task", LevelId = "L3-002", StartDate = new DateTime(2025, 7, 11), EndDate = new DateTime(2025, 7, 25), Supervisor = "Sarah Patel", Team = "Structural Unit", Status = "Scheduled", Progress = 100, TotalBudget = 120000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 7, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-STR-TSK", MaterialUsed = "Structural Plans", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "MEP Design Task", LevelId = "L3-003", StartDate = new DateTime(2025, 7, 26), EndDate = new DateTime(2025, 8, 15), Supervisor = "Carlos Rivera", Team = "MEP Unit", Status = "Scheduled", Progress = 100, TotalBudget = 100000m, PaidToDate = 0m, Currency = "USD", CostCode = "02-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 8, 16), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-MEP-TSK", MaterialUsed = "Electrical Schematics", MaterialCost = 20000m, MaterialStockRemaining = "N/A" } + } + }, + new ProjectTask + { + ActivityName = "Construction Stage", + LevelId = "L2-002", + StartDate = new DateTime(2025, 8, 16), + EndDate = new DateTime(2025, 10, 20), + Supervisor = "James Patel", + Team = "Construction Division", + Status = "In Progress", + Progress = 75, + TotalBudget = 900000m, + PaidToDate = 675000m, + Currency = "USD", + CostCode = "03-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 10, 21), + InspectionStatus = "Passed with Notes", + FollowUpActions = "Reinforce structure", + InspectionCost = 300m, + PunchListStatus = "Open", + DocumentReference = "DOC-TWR-CON-STG", + MaterialUsed = "Construction Materials", + MaterialCost = 50000m, + MaterialStockRemaining = "300 tons", + Children = new List { - ActivityName = "Construction Stage", - LevelId = "L2-002", - StartDate = new DateTime(2025, 8, 16), - EndDate = new DateTime(2025, 10, 20), - Supervisor = "James Patel", - Team = "Construction Division", - Status = "In Progress", - Progress = 75, - TotalBudget = 900000m, - PaidToDate = 675000m, - Currency = "USD", - CostCode = "03-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 10, 21), - InspectionStatus = "Passed with Notes", - FollowUpActions = "Reinforce structure", - InspectionCost = 300m, - PunchListStatus = "Open", - DocumentReference = "DOC-TWR-CON-STG", - MaterialUsed = "Construction Materials", - MaterialCost = 50000m, - MaterialStockRemaining = "300 tons", - Children = new List - { - new ProjectTask { ActivityName = "Foundation Construction Task", LevelId = "L3-004", StartDate = new DateTime(2025, 8, 16), EndDate = new DateTime(2025, 8, 25), Supervisor = "Robert Singh", Team = "Foundation Crew", Status = "Completed", Progress = 100, TotalBudget = 305000m, PaidToDate = 350000m, Currency = "USD", CostCode = "03-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-FND-TSK", MaterialUsed = "Concrete", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Structural Construction Task", LevelId = "L3-005", StartDate = new DateTime(2025, 8, 26), EndDate = new DateTime(2025, 9, 20), Supervisor = "Nathan Blake", Team = "Structural Team", Status = "In Progress", Progress = 80, TotalBudget = 300000m, PaidToDate = 240000m, Currency = "USD", CostCode = "03-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 21), InspectionStatus = "Passed with Notes", FollowUpActions = "Reinforce beams", InspectionCost = 100m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-STR-TSK", MaterialUsed = "Steel Beams", MaterialCost = 20000m, MaterialStockRemaining = "200 tons" }, - new ProjectTask { ActivityName = "Exterior Construction Task", LevelId = "L3-006", StartDate = new DateTime(2025, 9, 21), EndDate = new DateTime(2025, 10, 20), Supervisor = "Thomas Reed", Team = "Exterior Crew", Status = "In Progress", Progress = 40, TotalBudget = 300000m, PaidToDate = 120000m, Currency = "USD", CostCode = "03-02-03", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 10, 21), InspectionStatus = "Passed with Notes", FollowUpActions = "Continue exterior work", InspectionCost = 100m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-EXT-TSK", MaterialUsed = "Metal Panels", MaterialCost = 15000m, MaterialStockRemaining = "300 panels" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Foundation Construction Task", LevelId = "L3-004", StartDate = new DateTime(2025, 8, 16), EndDate = new DateTime(2025, 8, 25), Supervisor = "Robert Singh", Team = "Foundation Crew", Status = "Completed", Progress = 100, TotalBudget = 305000m, PaidToDate = 350000m, Currency = "USD", CostCode = "03-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-TWR-FND-TSK", MaterialUsed = "Concrete", MaterialCost = 15000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Structural Construction Task", LevelId = "L3-005", StartDate = new DateTime(2025, 8, 26), EndDate = new DateTime(2025, 9, 20), Supervisor = "Nathan Blake", Team = "Structural Team", Status = "In Progress", Progress = 80, TotalBudget = 300000m, PaidToDate = 240000m, Currency = "USD", CostCode = "03-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 21), InspectionStatus = "Passed with Notes", FollowUpActions = "Reinforce beams", InspectionCost = 100m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-STR-TSK", MaterialUsed = "Steel Beams", MaterialCost = 20000m, MaterialStockRemaining = "200 tons" }, + new ProjectTask { ActivityName = "Exterior Construction Task", LevelId = "L3-006", StartDate = new DateTime(2025, 9, 21), EndDate = new DateTime(2025, 10, 20), Supervisor = "Thomas Reed", Team = "Exterior Crew", Status = "In Progress", Progress = 40, TotalBudget = 300000m, PaidToDate = 120000m, Currency = "USD", CostCode = "03-02-03", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 10, 21), InspectionStatus = "Passed with Notes", FollowUpActions = "Continue exterior work", InspectionCost = 100m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-EXT-TSK", MaterialUsed = "Metal Panels", MaterialCost = 15000m, MaterialStockRemaining = "300 panels" } + } + }, + new ProjectTask + { + ActivityName = "Safety Stage", + LevelId = "L2-003", + StartDate = new DateTime(2025, 10, 21), + EndDate = new DateTime(2025, 11, 5), + Supervisor = "Nathan Blake", + Team = "Safety Division", + Status = "In Progress", + Progress = 60, + TotalBudget = 50000m, + PaidToDate = 30000m, + Currency = "USD", + CostCode = "04-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 11, 6), + InspectionStatus = "Scheduled", + FollowUpActions = "Complete safety audit", + InspectionCost = 0m, + PunchListStatus = "Open", + DocumentReference = "DOC-TWR-SAF-STG", + MaterialUsed = "Safety Equipment", + MaterialCost = 10000m, + MaterialStockRemaining = "50 units", + Children = new List { - ActivityName = "Safety Stage", - LevelId = "L2-003", - StartDate = new DateTime(2025, 10, 21), - EndDate = new DateTime(2025, 11, 5), - Supervisor = "Nathan Blake", - Team = "Safety Division", - Status = "In Progress", - Progress = 60, - TotalBudget = 50000m, - PaidToDate = 30000m, - Currency = "USD", - CostCode = "04-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 11, 6), - InspectionStatus = "Scheduled", - FollowUpActions = "Complete safety audit", - InspectionCost = 0m, - PunchListStatus = "Open", - DocumentReference = "DOC-TWR-SAF-STG", - MaterialUsed = "Safety Equipment", - MaterialCost = 10000m, - MaterialStockRemaining = "50 units", - Children = new List - { - new ProjectTask { ActivityName = "OSHA Compliance Task", LevelId = "L3-007", StartDate = new DateTime(2025, 10, 21), EndDate = new DateTime(2025, 10, 27), Supervisor = "Laura Bennett", Team = "Safety Inspectors", Status = "In Progress", Progress = 70, TotalBudget = 20000m, PaidToDate = 14000m, Currency = "USD", CostCode = "04-02-01", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 10, 28), InspectionStatus = "In Progress", FollowUpActions = "Complete briefing", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-OSHA-TSK", MaterialUsed = "Safety Gear", MaterialCost = 4000m, MaterialStockRemaining = "40 helmets" }, - new ProjectTask { ActivityName = "Fire Safety Task", LevelId = "L3-008", StartDate = new DateTime(2025, 10, 28), EndDate = new DateTime(2025, 11, 1), Supervisor = "Melissa Tran", Team = "Fire Safety Team", Status = "Scheduled", Progress = 30, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-02", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 2), InspectionStatus = "Scheduled", FollowUpActions = "Install exits", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FIRE-TSK", MaterialUsed = "Extinguishers", MaterialCost = 3000m, MaterialStockRemaining = "15 units" }, - new ProjectTask { ActivityName = "Structural Audit Task", LevelId = "L3-009", StartDate = new DateTime(2025, 11, 2), EndDate = new DateTime(2025, 11, 5), Supervisor = "David Lin", Team = "Audit Engineers", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 6), InspectionStatus = "Scheduled", FollowUpActions = "Verify integrity", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-AUD-TSK", MaterialUsed = "Inspection Tools", MaterialCost = 3000m, MaterialStockRemaining = "N/A" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "OSHA Compliance Task", LevelId = "L3-007", StartDate = new DateTime(2025, 10, 21), EndDate = new DateTime(2025, 10, 27), Supervisor = "Laura Bennett", Team = "Safety Inspectors", Status = "In Progress", Progress = 70, TotalBudget = 20000m, PaidToDate = 14000m, Currency = "USD", CostCode = "04-02-01", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 10, 28), InspectionStatus = "In Progress", FollowUpActions = "Complete briefing", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-OSHA-TSK", MaterialUsed = "Safety Gear", MaterialCost = 4000m, MaterialStockRemaining = "40 helmets" }, + new ProjectTask { ActivityName = "Fire Safety Task", LevelId = "L3-008", StartDate = new DateTime(2025, 10, 28), EndDate = new DateTime(2025, 11, 1), Supervisor = "Melissa Tran", Team = "Fire Safety Team", Status = "Scheduled", Progress = 30, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-02", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 2), InspectionStatus = "Scheduled", FollowUpActions = "Install exits", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FIRE-TSK", MaterialUsed = "Extinguishers", MaterialCost = 3000m, MaterialStockRemaining = "15 units" }, + new ProjectTask { ActivityName = "Structural Audit Task", LevelId = "L3-009", StartDate = new DateTime(2025, 11, 2), EndDate = new DateTime(2025, 11, 5), Supervisor = "David Lin", Team = "Audit Engineers", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 6), InspectionStatus = "Scheduled", FollowUpActions = "Verify integrity", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-AUD-TSK", MaterialUsed = "Inspection Tools", MaterialCost = 3000m, MaterialStockRemaining = "N/A" } + } + }, + new ProjectTask + { + ActivityName = "Finishing Stage", + LevelId = "L2-004", + StartDate = new DateTime(2025, 11, 6), + EndDate = new DateTime(2025, 12, 10), + Supervisor = "Melissa Tran", + Team = "Finishing Division", + Status = "Planning", + Progress = 30, + TotalBudget = 250000m, + PaidToDate = 75000m, + Currency = "USD", + CostCode = "05-01-00", + PermitStatus = "Under Review", + InspectionDate = new DateTime(2025, 12, 11), + InspectionStatus = "Scheduled", + FollowUpActions = "Begin interior work", + InspectionCost = 0m, + PunchListStatus = "Pending", + DocumentReference = "DOC-TWR-FIN-STG", + MaterialUsed = "Finishing Supplies", + MaterialCost = 25000m, + MaterialStockRemaining = "200 units", + Children = new List { - ActivityName = "Finishing Stage", - LevelId = "L2-004", - StartDate = new DateTime(2025, 11, 6), - EndDate = new DateTime(2025, 12, 10), - Supervisor = "Melissa Tran", - Team = "Finishing Division", - Status = "Planning", - Progress = 30, - TotalBudget = 250000m, - PaidToDate = 75000m, - Currency = "USD", - CostCode = "05-01-00", - PermitStatus = "Under Review", - InspectionDate = new DateTime(2025, 12, 11), - InspectionStatus = "Scheduled", - FollowUpActions = "Begin interior work", - InspectionCost = 0m, - PunchListStatus = "Pending", - DocumentReference = "DOC-TWR-FIN-STG", - MaterialUsed = "Finishing Supplies", - MaterialCost = 25000m, - MaterialStockRemaining = "200 units", - Children = new List - { - new ProjectTask { ActivityName = "Interior Drywall Task", LevelId = "L3-010", StartDate = new DateTime(2025, 11, 6), EndDate = new DateTime(2025, 11, 20), Supervisor = "Hannah Kim", Team = "Drywall Crew", Status = "In Progress", Progress = 50, TotalBudget = 80000m, PaidToDate = 40000m, Currency = "USD", CostCode = "05-02-01", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 21), InspectionStatus = "In Progress", FollowUpActions = "Check alignment", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-DRY-TSK", MaterialUsed = "Drywall Sheets", MaterialCost = 8000m, MaterialStockRemaining = "150 panels" }, - new ProjectTask { ActivityName = "Flooring Installation Task", LevelId = "L3-011", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 12, 1), Supervisor = "Sarah Patel", Team = "Flooring Team", Status = "Scheduled", Progress = 10, TotalBudget = 80000m, PaidToDate = 0m, Currency = "USD", CostCode = "05-02-02", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 12, 2), InspectionStatus = "Scheduled", FollowUpActions = "Verify level", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FLR-TSM", MaterialUsed = "Concrete Flooring", MaterialCost = 10000m, MaterialStockRemaining = "200 bags" }, - new ProjectTask { ActivityName = "Fixture Setup Task", LevelId = "L3-012", StartDate = new DateTime(2025, 12, 2), EndDate = new DateTime(2025, 12, 10), Supervisor = "Lucas Nguyen", Team = "Fit-Out Crew", Status = "Scheduled", Progress = 10, TotalBudget = 90000m, PaidToDate = 0m, Currency = "USD", CostCode = "05-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 12, 11), InspectionStatus = "Scheduled", FollowUpActions = "Install fixtures", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FIX-TSK", MaterialUsed = "Lighting Fixtures", MaterialCost = 7000m, MaterialStockRemaining = "50 units" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Interior Drywall Task", LevelId = "L3-010", StartDate = new DateTime(2025, 11, 6), EndDate = new DateTime(2025, 11, 20), Supervisor = "Hannah Kim", Team = "Drywall Crew", Status = "In Progress", Progress = 50, TotalBudget = 80000m, PaidToDate = 40000m, Currency = "USD", CostCode = "05-02-01", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 21), InspectionStatus = "In Progress", FollowUpActions = "Check alignment", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-DRY-TSK", MaterialUsed = "Drywall Sheets", MaterialCost = 8000m, MaterialStockRemaining = "150 panels" }, + new ProjectTask { ActivityName = "Flooring Installation Task", LevelId = "L3-011", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 12, 1), Supervisor = "Sarah Patel", Team = "Flooring Team", Status = "Scheduled", Progress = 10, TotalBudget = 80000m, PaidToDate = 0m, Currency = "USD", CostCode = "05-02-02", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 12, 2), InspectionStatus = "Scheduled", FollowUpActions = "Verify level", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FLR-TSM", MaterialUsed = "Concrete Flooring", MaterialCost = 10000m, MaterialStockRemaining = "200 bags" }, + new ProjectTask { ActivityName = "Fixture Setup Task", LevelId = "L3-012", StartDate = new DateTime(2025, 12, 2), EndDate = new DateTime(2025, 12, 10), Supervisor = "Lucas Nguyen", Team = "Fit-Out Crew", Status = "Scheduled", Progress = 10, TotalBudget = 90000m, PaidToDate = 0m, Currency = "USD", CostCode = "05-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 12, 11), InspectionStatus = "Scheduled", FollowUpActions = "Install fixtures", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-TWR-FIX-TSK", MaterialUsed = "Lighting Fixtures", MaterialCost = 7000m, MaterialStockRemaining = "50 units" } + } + }, + new ProjectTask + { + ActivityName = "Closeout Stage", + LevelId = "L2-005", + StartDate = new DateTime(2025, 12, 11), + EndDate = new DateTime(2025, 12, 29), + Supervisor = "Emma Wilson", + Team = "Closeout Division", + Status = "Planning", + Progress = 20, + TotalBudget = 50000m, + PaidToDate = 10000m, + Currency = "USD", + CostCode = "06-01-00", + PermitStatus = "Under Review", + InspectionDate = new DateTime(2025, 12, 30), + InspectionStatus = "Scheduled", + FollowUpActions = "Finalize handover", + InspectionCost = 0m, + PunchListStatus = "Open", + DocumentReference = "DOC-TWR-CLO-STG", + MaterialUsed = "Closeout Documents", + MaterialCost = 5000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Closeout Stage", - LevelId = "L2-005", - StartDate = new DateTime(2025, 12, 11), - EndDate = new DateTime(2025, 12, 29), - Supervisor = "Emma Wilson", - Team = "Closeout Division", - Status = "Planning", - Progress = 20, - TotalBudget = 50000m, - PaidToDate = 10000m, - Currency = "USD", - CostCode = "06-01-00", - PermitStatus = "Under Review", - InspectionDate = new DateTime(2025, 12, 30), - InspectionStatus = "Scheduled", - FollowUpActions = "Finalize handover", - InspectionCost = 0m, - PunchListStatus = "Open", - DocumentReference = "DOC-TWR-CLO-STG", - MaterialUsed = "Closeout Documents", - MaterialCost = 5000m, - MaterialStockRemaining = "N/A", - Children = new List - { - new ProjectTask { ActivityName = "Punch List Review Task", LevelId = "L3-013", StartDate = new DateTime(2025, 12, 11), EndDate = new DateTime(2025, 12, 15), Supervisor = "John Carter", Team = "Closeout Team", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 16), InspectionStatus = "Not Started", FollowUpActions = "Resolve issues", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-PLR-TSK", MaterialUsed = "Punch List Forms", MaterialCost = 2000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Final Documentation Task", LevelId = "L3-014", StartDate = new DateTime(2025, 12, 16), EndDate = new DateTime(2025, 12, 22), Supervisor = "Emily Foster", Team = "Documentation Team", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 23), InspectionStatus = "Not Started", FollowUpActions = "Prepare reports", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-FD-TSK", MaterialUsed = "As-Built Drawings", MaterialCost = 2000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Client Handover Task", LevelId = "L3-015", StartDate = new DateTime(2025, 12, 23), EndDate = new DateTime(2025, 12, 29), Supervisor = "Emma Wilson", Team = "Client Relations", Status = "Scheduled", Progress = 20, TotalBudget = 20000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 30), InspectionStatus = "Not Started", FollowUpActions = "Conduct walkthrough", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-CH-TSK", MaterialUsed = "Handover Kits", MaterialCost = 1000m, MaterialStockRemaining = "Delivered" } - } + new ProjectTask { ActivityName = "Punch List Review Task", LevelId = "L3-013", StartDate = new DateTime(2025, 12, 11), EndDate = new DateTime(2025, 12, 15), Supervisor = "John Carter", Team = "Closeout Team", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 16), InspectionStatus = "Not Started", FollowUpActions = "Resolve issues", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-PLR-TSK", MaterialUsed = "Punch List Forms", MaterialCost = 2000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Final Documentation Task", LevelId = "L3-014", StartDate = new DateTime(2025, 12, 16), EndDate = new DateTime(2025, 12, 22), Supervisor = "Emily Foster", Team = "Documentation Team", Status = "Scheduled", Progress = 20, TotalBudget = 15000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 23), InspectionStatus = "Not Started", FollowUpActions = "Prepare reports", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-FD-TSK", MaterialUsed = "As-Built Drawings", MaterialCost = 2000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Client Handover Task", LevelId = "L3-015", StartDate = new DateTime(2025, 12, 23), EndDate = new DateTime(2025, 12, 29), Supervisor = "Emma Wilson", Team = "Client Relations", Status = "Scheduled", Progress = 20, TotalBudget = 20000m, PaidToDate = 0m, Currency = "USD", CostCode = "06-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 30), InspectionStatus = "Not Started", FollowUpActions = "Conduct walkthrough", InspectionCost = 0m, PunchListStatus = "Pending", DocumentReference = "DOC-TWR-CH-TSK", MaterialUsed = "Handover Kits", MaterialCost = 1000m, MaterialStockRemaining = "Delivered" } } } - }, - new ProjectTask + } + }, + new ProjectTask + { + ActivityName = "Warehouse", + LevelId = "L1-004", + StartDate = new DateTime(2025, 8, 1), + EndDate = new DateTime(2025, 12, 28), + Supervisor = "Emma Wilson", + Team = "Executive Oversight", + Status = "Active", + Progress = 55, + TotalBudget = 1030000m, + PaidToDate = 566500m, + Currency = "USD", + CostCode = "01-00-00", + PermitStatus = "Approved", + InspectionDate = new DateTime(2025, 12, 29), + InspectionStatus = "Passed with Notes", + FollowUpActions = "Address structural concerns", + InspectionCost = 400m, + PunchListStatus = "Open", + DocumentReference = "DOC-WH-OVR", + MaterialUsed = "Project Planning Kits", + MaterialCost = 50000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Warehouse", - LevelId = "L1-004", - StartDate = new DateTime(2025, 8, 1), - EndDate = new DateTime(2025, 12, 28), - Supervisor = "Emma Wilson", - Team = "Executive Oversight", - Status = "Active", - Progress = 55, - TotalBudget = 1030000m, - PaidToDate = 566500m, - Currency = "USD", - CostCode = "01-00-00", - PermitStatus = "Approved", - InspectionDate = new DateTime(2025, 12, 29), - InspectionStatus = "Passed with Notes", - FollowUpActions = "Address structural concerns", - InspectionCost = 400m, - PunchListStatus = "Open", - DocumentReference = "DOC-WH-OVR", - MaterialUsed = "Project Planning Kits", - MaterialCost = 50000m, - MaterialStockRemaining = "N/A", - Children = new List + new ProjectTask { - new ProjectTask + ActivityName = "Design Stage", + LevelId = "L2-016", + StartDate = new DateTime(2025, 8, 1), + EndDate = new DateTime(2025, 9, 10), + Supervisor = "Ethan Park", + Team = "Design Division", + Status = "Completed", + Progress = 100, + TotalBudget = 202000m, + PaidToDate = 220000m, + Currency = "USD", + CostCode = "02-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 9, 11), + InspectionStatus = "Passed", + FollowUpActions = "None", + InspectionCost = 300m, + PunchListStatus = "Cleared", + DocumentReference = "DOC-WH-DES-STG", + MaterialUsed = "Design Blueprints", + MaterialCost = 30000m, + MaterialStockRemaining = "N/A", + Children = new List { - ActivityName = "Design Stage", - LevelId = "L2-016", - StartDate = new DateTime(2025, 8, 1), - EndDate = new DateTime(2025, 9, 10), - Supervisor = "Ethan Park", - Team = "Design Division", - Status = "Completed", - Progress = 100, - TotalBudget = 202000m, - PaidToDate = 220000m, - Currency = "USD", - CostCode = "02-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 9, 11), - InspectionStatus = "Passed", - FollowUpActions = "None", - InspectionCost = 300m, - PunchListStatus = "Cleared", - DocumentReference = "DOC-WH-DES-STG", - MaterialUsed = "Design Blueprints", - MaterialCost = 30000m, - MaterialStockRemaining = "N/A", - Children = new List - { - new ProjectTask { ActivityName = "Architectural Design Task", LevelId = "L3-046", StartDate = new DateTime(2025, 8, 2), EndDate = new DateTime(2025, 8, 12), Supervisor = "David Lin", Team = "Architecture Unit", Status = "Completed", Progress = 100, TotalBudget = 70000m, PaidToDate = 70200m, Currency = "USD", CostCode = "02-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 13), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-ARC-TSK", MaterialUsed = "CAD Drawings", MaterialCost = 10000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Structural Design Task", LevelId = "L3-047", StartDate = new DateTime(2025, 8, 13), EndDate = new DateTime(2025, 8, 28), Supervisor = "Sarah Patel", Team = "Structural Unit", Status = "Completed", Progress = 100, TotalBudget = 72000m, PaidToDate = 70000m, Currency = "USD", CostCode = "02-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 29), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-STR-TSK", MaterialUsed = "Structural Plans", MaterialCost = 10000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "MEP Design Task", LevelId = "L3-048", StartDate = new DateTime(2025, 8, 29), EndDate = new DateTime(2025, 9, 10), Supervisor = "Carlos Rivera", Team = "MEP Unit", Status = "Completed", Progress = 100, TotalBudget = 62000m, PaidToDate = 60000m, Currency = "USD", CostCode = "02-02-03", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 11), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-MEP-TSK", MaterialUsed = "Electrical Schematics", MaterialCost = 10000m, MaterialStockRemaining = "N/A" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Architectural Design Task", LevelId = "L3-046", StartDate = new DateTime(2025, 8, 2), EndDate = new DateTime(2025, 8, 12), Supervisor = "David Lin", Team = "Architecture Unit", Status = "Completed", Progress = 100, TotalBudget = 70000m, PaidToDate = 70200m, Currency = "USD", CostCode = "02-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 13), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-ARC-TSK", MaterialUsed = "CAD Drawings", MaterialCost = 10000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Structural Design Task", LevelId = "L3-047", StartDate = new DateTime(2025, 8, 13), EndDate = new DateTime(2025, 8, 28), Supervisor = "Sarah Patel", Team = "Structural Unit", Status = "Completed", Progress = 100, TotalBudget = 72000m, PaidToDate = 70000m, Currency = "USD", CostCode = "02-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 8, 29), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-STR-TSK", MaterialUsed = "Structural Plans", MaterialCost = 10000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "MEP Design Task", LevelId = "L3-048", StartDate = new DateTime(2025, 8, 29), EndDate = new DateTime(2025, 9, 10), Supervisor = "Carlos Rivera", Team = "MEP Unit", Status = "Completed", Progress = 100, TotalBudget = 62000m, PaidToDate = 60000m, Currency = "USD", CostCode = "02-02-03", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 11), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-MEP-TSK", MaterialUsed = "Electrical Schematics", MaterialCost = 10000m, MaterialStockRemaining = "N/A" } + } + }, + new ProjectTask + { + ActivityName = "Construction Stage", + LevelId = "L2-017", + StartDate = new DateTime(2025, 9, 11), + EndDate = new DateTime(2025, 11, 20), + Supervisor = "James Patel", + Team = "Construction Division", + Status = "In Progress", + Progress = 50, + TotalBudget = 800000m, + PaidToDate = 400000m, + Currency = "USD", + CostCode = "03-01-00", + PermitStatus = "Issued", + InspectionDate = new DateTime(2025, 11, 21), + InspectionStatus = "Passed with Notes", + FollowUpActions = "Address structural issues", + InspectionCost = 400m, + PunchListStatus = "Open", + DocumentReference = "DOC-WH-CON-STG", + MaterialUsed = "Construction Materials", + MaterialCost = 200000m, + MaterialStockRemaining = "500 tons", + Children = new List { - ActivityName = "Construction Stage", - LevelId = "L2-017", - StartDate = new DateTime(2025, 9, 11), - EndDate = new DateTime(2025, 11, 20), - Supervisor = "James Patel", - Team = "Construction Division", - Status = "In Progress", - Progress = 50, - TotalBudget = 800000m, - PaidToDate = 400000m, - Currency = "USD", - CostCode = "03-01-00", - PermitStatus = "Issued", - InspectionDate = new DateTime(2025, 11, 21), - InspectionStatus = "Passed with Notes", - FollowUpActions = "Address structural issues", - InspectionCost = 400m, - PunchListStatus = "Open", - DocumentReference = "DOC-WH-CON-STG", - MaterialUsed = "Construction Materials", - MaterialCost = 200000m, - MaterialStockRemaining = "500 tons", - Children = new List - { - new ProjectTask { ActivityName = "Foundation Construction Task", LevelId = "L3-049", StartDate = new DateTime(2025, 9, 11), EndDate = new DateTime(2025, 9, 25), Supervisor = "Robert Singh", Team = "Foundation Crew", Status = "Completed", Progress = 100, TotalBudget = 300000m, PaidToDate = 320000m, Currency = "USD", CostCode = "03-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-FND-TSK", MaterialUsed = "Concrete Mix", MaterialCost = 80000m, MaterialStockRemaining = "N/A" }, - new ProjectTask { ActivityName = "Framing Construction Task", LevelId = "L3-050", StartDate = new DateTime(2025, 9, 26), EndDate = new DateTime(2025, 10, 25), Supervisor = "Angela Moore", Team = "Structural Crew", Status = "In Progress", Progress = 60, TotalBudget = 300000m, PaidToDate = 180000m, Currency = "USD", CostCode = "03-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 10, 26), InspectionStatus = "Passed with Notes", FollowUpActions = "Continue framing", InspectionCost = 200m, PunchListStatus = "Open", DocumentReference = "DOC-WH-FRM-TSK", MaterialUsed = "Steel Beams", MaterialCost = 60000m, MaterialStockRemaining = "200 tons" }, - new ProjectTask { ActivityName = "Exterior Construction Task", LevelId = "L3-051", StartDate = new DateTime(2025, 10, 26), EndDate = new DateTime(2025, 11, 20), Supervisor = "Thomas Reed", Team = "Exterior Crew", Status = "In Progress", Progress = 20, TotalBudget = 200000m, PaidToDate = 40000m, Currency = "USD", CostCode = "03-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 21), InspectionStatus = "In Progress", FollowUpActions = "Continue exterior work", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-WH-EXT-TSK", MaterialUsed = "Metal Panels", MaterialCost = 60000m, MaterialStockRemaining = "300 panels" } - } - }, - new ProjectTask + new ProjectTask { ActivityName = "Foundation Construction Task", LevelId = "L3-049", StartDate = new DateTime(2025, 9, 11), EndDate = new DateTime(2025, 9, 25), Supervisor = "Robert Singh", Team = "Foundation Crew", Status = "Completed", Progress = 100, TotalBudget = 300000m, PaidToDate = 320000m, Currency = "USD", CostCode = "03-02-01", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 9, 26), InspectionStatus = "Passed", FollowUpActions = "None", InspectionCost = 100m, PunchListStatus = "Cleared", DocumentReference = "DOC-WH-FND-TSK", MaterialUsed = "Concrete Mix", MaterialCost = 80000m, MaterialStockRemaining = "N/A" }, + new ProjectTask { ActivityName = "Framing Construction Task", LevelId = "L3-050", StartDate = new DateTime(2025, 9, 26), EndDate = new DateTime(2025, 10, 25), Supervisor = "Angela Moore", Team = "Structural Crew", Status = "In Progress", Progress = 60, TotalBudget = 300000m, PaidToDate = 180000m, Currency = "USD", CostCode = "03-02-02", PermitStatus = "Approved", InspectionDate = new DateTime(2025, 10, 26), InspectionStatus = "Passed with Notes", FollowUpActions = "Continue framing", InspectionCost = 200m, PunchListStatus = "Open", DocumentReference = "DOC-WH-FRM-TSK", MaterialUsed = "Steel Beams", MaterialCost = 60000m, MaterialStockRemaining = "200 tons" }, + new ProjectTask { ActivityName = "Exterior Construction Task", LevelId = "L3-051", StartDate = new DateTime(2025, 10, 26), EndDate = new DateTime(2025, 11, 20), Supervisor = "Thomas Reed", Team = "Exterior Crew", Status = "In Progress", Progress = 20, TotalBudget = 200000m, PaidToDate = 40000m, Currency = "USD", CostCode = "03-02-03", PermitStatus = "Issued", InspectionDate = new DateTime(2025, 11, 21), InspectionStatus = "In Progress", FollowUpActions = "Continue exterior work", InspectionCost = 0m, PunchListStatus = "Open", DocumentReference = "DOC-WH-EXT-TSK", MaterialUsed = "Metal Panels", MaterialCost = 60000m, MaterialStockRemaining = "300 panels" } + } + }, + new ProjectTask + { + ActivityName = "Safety Stage", + LevelId = "L2-018", + StartDate = new DateTime(2025, 11, 21), + EndDate = new DateTime(2025, 12, 10), + Supervisor = "Nathan Blake", + Team = "Safety Division", + Status = "Planning", + Progress = 30, + TotalBudget = 30000m, + PaidToDate = 9000m, + Currency = "USD", + CostCode = "04-01-00", + PermitStatus = "Under Review", + InspectionDate = new DateTime(2025, 12, 11), + InspectionStatus = "Scheduled", + FollowUpActions = "Schedule safety audit", + InspectionCost = 0m, + PunchListStatus = "Scheduled", + DocumentReference = "DOC-WH-SAF-STG", + MaterialUsed = "Safety Equipment", + MaterialCost = 5000m, + MaterialStockRemaining = "50 units", + Children = new List { - ActivityName = "Safety Stage", - LevelId = "L2-018", - StartDate = new DateTime(2025, 11, 21), - EndDate = new DateTime(2025, 12, 10), - Supervisor = "Nathan Blake", - Team = "Safety Division", - Status = "Planning", - Progress = 30, - TotalBudget = 30000m, - PaidToDate = 9000m, - Currency = "USD", - CostCode = "04-01-00", - PermitStatus = "Under Review", - InspectionDate = new DateTime(2025, 12, 11), - InspectionStatus = "Scheduled", - FollowUpActions = "Schedule safety audit", - InspectionCost = 0m, - PunchListStatus = "Scheduled", - DocumentReference = "DOC-WH-SAF-STG", - MaterialUsed = "Safety Equipment", - MaterialCost = 5000m, - MaterialStockRemaining = "50 units", - Children = new List - { - new ProjectTask { ActivityName = "OSHA Compliance Task", LevelId = "L3-052", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 11, 28), Supervisor = "Laura Bennett", Team = "Safety Inspectors", Status = "Scheduled", Progress = 30, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 11, 29), InspectionStatus = "Not Started", FollowUpActions = "Conduct briefing", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-OSHA-TSK", MaterialUsed = "Safety Gear", MaterialCost = 2000m, MaterialStockRemaining = "40 helmets" }, - new ProjectTask { ActivityName = "Fire Safety Task", LevelId = "L3-053", StartDate = new DateTime(2025, 11, 29), EndDate = new DateTime(2025, 12, 5), Supervisor = "Melissa Tran", Team = "Fire Safety Team", Status = "Scheduled", Progress = 20, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 6), InspectionStatus = "Not Started", FollowUpActions = "Install exits", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-FIRE-TSK", MaterialUsed = "Extinguishers", MaterialCost = 1500m, MaterialStockRemaining = "15 units" }, - new ProjectTask { ActivityName = "Structural Audit Task", LevelId = "L3-054", StartDate = new DateTime(2025, 12, 6), EndDate = new DateTime(2025, 12, 10), Supervisor = "David Lin", Team = "Audit Engineers", Status = "Scheduled", Progress = 20, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 11), InspectionStatus = "Not Started", FollowUpActions = "Verify integrity", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-AUD-TSK", MaterialUsed = "Inspection Tools", MaterialCost = 1500m, MaterialStockRemaining = "N/A" } - } + new ProjectTask { ActivityName = "OSHA Compliance Task", LevelId = "L3-052", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 11, 28), Supervisor = "Laura Bennett", Team = "Safety Inspectors", Status = "Scheduled", Progress = 30, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-01", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 11, 29), InspectionStatus = "Not Started", FollowUpActions = "Conduct briefing", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-OSHA-TSK", MaterialUsed = "Safety Gear", MaterialCost = 2000m, MaterialStockRemaining = "40 helmets" }, + new ProjectTask { ActivityName = "Fire Safety Task", LevelId = "L3-053", StartDate = new DateTime(2025, 11, 29), EndDate = new DateTime(2025, 12, 5), Supervisor = "Melissa Tran", Team = "Fire Safety Team", Status = "Scheduled", Progress = 20, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-02", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 6), InspectionStatus = "Not Started", FollowUpActions = "Install exits", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-FIRE-TSK", MaterialUsed = "Extinguishers", MaterialCost = 1500m, MaterialStockRemaining = "15 units" }, + new ProjectTask { ActivityName = "Structural Audit Task", LevelId = "L3-054", StartDate = new DateTime(2025, 12, 6), EndDate = new DateTime(2025, 12, 10), Supervisor = "David Lin", Team = "Audit Engineers", Status = "Scheduled", Progress = 20, TotalBudget = 10000m, PaidToDate = 0m, Currency = "USD", CostCode = "04-02-03", PermitStatus = "Scheduled", InspectionDate = new DateTime(2025, 12, 11), InspectionStatus = "Not Started", FollowUpActions = "Verify integrity", InspectionCost = 0m, PunchListStatus = "Not Started", DocumentReference = "DOC-WH-AUD-TSK", MaterialUsed = "Inspection Tools", MaterialCost = 1500m, MaterialStockRemaining = "N/A" } } } } - }; - } + } + }; } } - {% endhighlight %} {% endtabs %} @@ -529,7 +534,7 @@ Use `MergeCellsAsync` method to manually merge cells by defining rectangular reg | info | `MergeCellInfo` | Defines a single rectangular cell region to be merged. | | infos | `IEnumerable` | Specifies multiple cell regions to be merged in a batch operation. Each region is defined by a `MergeCellInfo` instance. | -To define a merged region, use the following properties of the MergeCellInfo class, +To define a merged region, use the following properties of the `MergeCellInfo` class, | Property | Type | Description | |--------------|------|-----------------------------------------------------------------------------| @@ -543,6 +548,7 @@ The following sample demonstrates programmatic row spanning by calling `MergeCel {% tabs %} {% highlight razor tabtitle="Index.razor" %} +@using Syncfusion.Blazor.Grids @using Syncfusion.Blazor.TreeGrid @using Syncfusion.Blazor.Buttons @@ -571,7 +577,7 @@ The following sample demonstrates programmatic row spanning by calling `MergeCel { RowIndex = 1, ColumnIndex = 1, - RowSpan = 2, + ColumnSpan = 2, }); } @@ -579,19 +585,20 @@ The following sample demonstrates programmatic row spanning by calling `MergeCel { await TreeGrid.MergeCellsAsync(new[] { - new MergeCellInfo { RowIndex = 0, ColumnIndex = 0, RowSpan = 2 }, - new MergeCellInfo { RowIndex = 5, ColumnIndex = 0, RowSpan = 3 }, - new MergeCellInfo { RowIndex = 7, ColumnIndex = 0, RowSpan = 2 } + new MergeCellInfo { RowIndex = 0, ColumnIndex = 0, ColumnSpan = 2 }, + new MergeCellInfo { RowIndex = 5, ColumnIndex = 0, ColumnSpan = 3 }, + new MergeCellInfo { RowIndex = 7, ColumnIndex = 0, ColumnSpan = 2 } }); } protected override void OnInitialized() { - Tasks = ProjectTask.GetRowSpanData(); + Tasks = ProjectTask.GetSpanData(); } } + {% endhighlight %} -{% highlight c# tabtitle="Order.cs" %} +{% highlight c# tabtitle="ProjectTask.cs" %} public class ProjectTask { @@ -603,155 +610,155 @@ public class ProjectTask public int Progress { get; set; } public List Children { get; set; } = new(); - public static List GetRowSpanData() + public static List GetSpanData() { return new List + { + new ProjectTask { - new ProjectTask - { - ActivityName = "Tower", - StartDate = new DateTime(2025, 7, 1), - EndDate = new DateTime(2025, 12, 29), - Supervisor = "John Carter", - Status = "In Progress", - Progress = 87, - Children = new List + ActivityName = "Tower", + StartDate = new DateTime(2025, 7, 1), + EndDate = new DateTime(2025, 12, 29), + Supervisor = "John Carter", + Status = "In Progress", + Progress = 87, + Children = new List + { + new ProjectTask { - new ProjectTask - { - ActivityName = "Design Stage", - StartDate = new DateTime(2025, 7, 1), - EndDate = new DateTime(2025, 8, 15), - Supervisor = "Ethan Park", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Architectural Design Task", StartDate = new DateTime(2025, 7, 2), EndDate = new DateTime(2025, 7, 10), Supervisor = "David Lin", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Design Task", StartDate = new DateTime(2025, 7, 11), EndDate = new DateTime(2025, 7, 25), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "MEP Design Task", StartDate = new DateTime(2025, 7, 26), EndDate = new DateTime(2025, 8, 15), Supervisor = "Carlos Rivera", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Construction Stage", - StartDate = new DateTime(2025, 8, 16), - EndDate = new DateTime(2025, 10, 20), - Supervisor = "James Patel", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Foundation Construction Task", StartDate = new DateTime(2025, 8, 16), EndDate = new DateTime(2025, 8, 25), Supervisor = "Robert Singh", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Construction Task", StartDate = new DateTime(2025, 8, 26), EndDate = new DateTime(2025, 9, 20), Supervisor = "Nathan Blake", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Exterior Construction Task", StartDate = new DateTime(2025, 9, 21), EndDate = new DateTime(2025, 10, 20), Supervisor = "Thomas Reed", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Safety Stage", - StartDate = new DateTime(2025, 10, 21), - EndDate = new DateTime(2025, 11, 5), - Supervisor = "Nathan Blake", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "OSHA Compliance Task", StartDate = new DateTime(2025, 10, 21), EndDate = new DateTime(2025, 10, 27), Supervisor = "Laura Bennett", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Fire Safety Task", StartDate = new DateTime(2025, 10, 28), EndDate = new DateTime(2025, 11, 1), Supervisor = "Melissa Tran", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Audit Task", StartDate = new DateTime(2025, 11, 2), EndDate = new DateTime(2025, 11, 5), Supervisor = "David Lin", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Finishing Stage", - StartDate = new DateTime(2025, 11, 6), - EndDate = new DateTime(2025, 12, 10), - Supervisor = "Melissa Tran", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Interior Drywall Task", StartDate = new DateTime(2025, 11, 6), EndDate = new DateTime(2025, 11, 20), Supervisor = "Hannah Kim", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Flooring Installation Task", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 12, 1), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Fixture Setup Task", StartDate = new DateTime(2025, 12, 2), EndDate = new DateTime(2025, 12, 10), Supervisor = "Lucas Nguyen", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Closeout Stage", - StartDate = new DateTime(2025, 12, 11), - EndDate = new DateTime(2025, 12, 29), - Supervisor = "Emma Wilson", - Status = "In Progress", - Progress = 33, - Children = new List - { - new ProjectTask { ActivityName = "Punch List Review Task", StartDate = new DateTime(2025, 12, 11), EndDate = new DateTime(2025, 12, 15), Supervisor = "John Carter", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Final Documentation Task", StartDate = new DateTime(2025, 12, 16), EndDate = new DateTime(2025, 12, 22), Supervisor = "Emily Foster", Status = "In Progress", Progress = 0 }, - new ProjectTask { ActivityName = "Client Handover Task", StartDate = new DateTime(2025, 12, 23), EndDate = new DateTime(2025, 12, 29), Supervisor = "Emma Wilson", Status = "Scheduled", Progress = 0 } - } + ActivityName = "Design Stage", + StartDate = new DateTime(2025, 7, 1), + EndDate = new DateTime(2025, 8, 15), + Supervisor = "Ethan Park", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Architectural Design Task", StartDate = new DateTime(2025, 7, 2), EndDate = new DateTime(2025, 7, 10), Supervisor = "David Lin", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Design Task", StartDate = new DateTime(2025, 7, 11), EndDate = new DateTime(2025, 7, 25), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "MEP Design Task", StartDate = new DateTime(2025, 7, 26), EndDate = new DateTime(2025, 8, 15), Supervisor = "Carlos Rivera", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Construction Stage", + StartDate = new DateTime(2025, 8, 16), + EndDate = new DateTime(2025, 10, 20), + Supervisor = "James Patel", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Foundation Construction Task", StartDate = new DateTime(2025, 8, 16), EndDate = new DateTime(2025, 8, 25), Supervisor = "Robert Singh", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Construction Task", StartDate = new DateTime(2025, 8, 26), EndDate = new DateTime(2025, 9, 20), Supervisor = "Nathan Blake", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Exterior Construction Task", StartDate = new DateTime(2025, 9, 21), EndDate = new DateTime(2025, 10, 20), Supervisor = "Thomas Reed", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Safety Stage", + StartDate = new DateTime(2025, 10, 21), + EndDate = new DateTime(2025, 11, 5), + Supervisor = "Nathan Blake", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "OSHA Compliance Task", StartDate = new DateTime(2025, 10, 21), EndDate = new DateTime(2025, 10, 27), Supervisor = "Laura Bennett", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Fire Safety Task", StartDate = new DateTime(2025, 10, 28), EndDate = new DateTime(2025, 11, 1), Supervisor = "Melissa Tran", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Audit Task", StartDate = new DateTime(2025, 11, 2), EndDate = new DateTime(2025, 11, 5), Supervisor = "David Lin", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Finishing Stage", + StartDate = new DateTime(2025, 11, 6), + EndDate = new DateTime(2025, 12, 10), + Supervisor = "Melissa Tran", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Interior Drywall Task", StartDate = new DateTime(2025, 11, 6), EndDate = new DateTime(2025, 11, 20), Supervisor = "Hannah Kim", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Flooring Installation Task", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 12, 1), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Fixture Setup Task", StartDate = new DateTime(2025, 12, 2), EndDate = new DateTime(2025, 12, 10), Supervisor = "Lucas Nguyen", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Closeout Stage", + StartDate = new DateTime(2025, 12, 11), + EndDate = new DateTime(2025, 12, 29), + Supervisor = "Emma Wilson", + Status = "In Progress", + Progress = 33, + Children = new List + { + new ProjectTask { ActivityName = "Punch List Review Task", StartDate = new DateTime(2025, 12, 11), EndDate = new DateTime(2025, 12, 15), Supervisor = "John Carter", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Final Documentation Task", StartDate = new DateTime(2025, 12, 16), EndDate = new DateTime(2025, 12, 22), Supervisor = "Emily Foster", Status = "In Progress", Progress = 0 }, + new ProjectTask { ActivityName = "Client Handover Task", StartDate = new DateTime(2025, 12, 23), EndDate = new DateTime(2025, 12, 29), Supervisor = "Emma Wilson", Status = "Scheduled", Progress = 0 } } } - }, - new ProjectTask - { - ActivityName = "Warehouse", - StartDate = new DateTime(2025, 8, 1), - EndDate = new DateTime(2025, 12, 28), - Supervisor = "Emma Wilson", - Status = "Completed", - Progress = 100, - Children = new List + } + }, + new ProjectTask + { + ActivityName = "Warehouse", + StartDate = new DateTime(2025, 8, 1), + EndDate = new DateTime(2025, 12, 28), + Supervisor = "Emma Wilson", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { - new ProjectTask - { - ActivityName = "Design Stage", - StartDate = new DateTime(2025, 8, 1), - EndDate = new DateTime(2025, 9, 10), - Supervisor = "Ethan Park", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Architectural Design Task", StartDate = new DateTime(2025, 8, 2), EndDate = new DateTime(2025, 8, 12), Supervisor = "David Lin", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Design Task", StartDate = new DateTime(2025, 8, 13), EndDate = new DateTime(2025, 8, 28), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "MEP Design Task", StartDate = new DateTime(2025, 8, 29), EndDate = new DateTime(2025, 9, 10), Supervisor = "Carlos Rivera", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Construction Stage", - StartDate = new DateTime(2025, 9, 11), - EndDate = new DateTime(2025, 11, 20), - Supervisor = "James Patel", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "Foundation Construction Task", StartDate = new DateTime(2025, 9, 11), EndDate = new DateTime(2025, 9, 25), Supervisor = "Robert Singh", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Framing Construction Task", StartDate = new DateTime(2025, 9, 26), EndDate = new DateTime(2025, 10, 25), Supervisor = "Angela Moore", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Exterior Construction Task", StartDate = new DateTime(2025, 10, 26), EndDate = new DateTime(2025, 11, 20), Supervisor = "Thomas Reed", Status = "Completed", Progress = 100 } - } - }, - new ProjectTask - { - ActivityName = "Safety Stage", - StartDate = new DateTime(2025, 11, 21), - EndDate = new DateTime(2025, 12, 10), - Supervisor = "Nathan Blake", - Status = "Completed", - Progress = 100, - Children = new List - { - new ProjectTask { ActivityName = "OSHA Compliance Task", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 11, 28), Supervisor = "Laura Bennett", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Fire Safety Task", StartDate = new DateTime(2025, 11, 29), EndDate = new DateTime(2025, 12, 5), Supervisor = "Melissa Tran", Status = "Completed", Progress = 100 }, - new ProjectTask { ActivityName = "Structural Audit Task", StartDate = new DateTime(2025, 12, 6), EndDate = new DateTime(2025, 12, 10), Supervisor = "David Lin", Status = "Completed", Progress = 100 } - } + ActivityName = "Design Stage", + StartDate = new DateTime(2025, 8, 1), + EndDate = new DateTime(2025, 9, 10), + Supervisor = "Ethan Park", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Architectural Design Task", StartDate = new DateTime(2025, 8, 2), EndDate = new DateTime(2025, 8, 12), Supervisor = "David Lin", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Design Task", StartDate = new DateTime(2025, 8, 13), EndDate = new DateTime(2025, 8, 28), Supervisor = "Sarah Patel", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "MEP Design Task", StartDate = new DateTime(2025, 8, 29), EndDate = new DateTime(2025, 9, 10), Supervisor = "Carlos Rivera", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Construction Stage", + StartDate = new DateTime(2025, 9, 11), + EndDate = new DateTime(2025, 11, 20), + Supervisor = "James Patel", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "Foundation Construction Task", StartDate = new DateTime(2025, 9, 11), EndDate = new DateTime(2025, 9, 25), Supervisor = "Robert Singh", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Framing Construction Task", StartDate = new DateTime(2025, 9, 26), EndDate = new DateTime(2025, 10, 25), Supervisor = "Angela Moore", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Exterior Construction Task", StartDate = new DateTime(2025, 10, 26), EndDate = new DateTime(2025, 11, 20), Supervisor = "Thomas Reed", Status = "Completed", Progress = 100 } + } + }, + new ProjectTask + { + ActivityName = "Safety Stage", + StartDate = new DateTime(2025, 11, 21), + EndDate = new DateTime(2025, 12, 10), + Supervisor = "Nathan Blake", + Status = "Completed", + Progress = 100, + Children = new List + { + new ProjectTask { ActivityName = "OSHA Compliance Task", StartDate = new DateTime(2025, 11, 21), EndDate = new DateTime(2025, 11, 28), Supervisor = "Laura Bennett", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Fire Safety Task", StartDate = new DateTime(2025, 11, 29), EndDate = new DateTime(2025, 12, 5), Supervisor = "Melissa Tran", Status = "Completed", Progress = 100 }, + new ProjectTask { ActivityName = "Structural Audit Task", StartDate = new DateTime(2025, 12, 6), EndDate = new DateTime(2025, 12, 10), Supervisor = "David Lin", Status = "Completed", Progress = 100 } } } } - }; + } + }; } } @@ -779,15 +786,15 @@ This sample demonstrates clearing merged regions in the TreeGrid by calling `Unm {% tabs %} {% highlight razor tabtitle="Index.razor" %} + +@using Syncfusion.Blazor.Grids @using Syncfusion.Blazor.TreeGrid @using Syncfusion.Blazor.Buttons Merge Cell UnMerge Cell - Merge Multiple Cells UnMerge Multiple Cells - UnMerge All Cells @@ -812,7 +819,7 @@ This sample demonstrates clearing merged regions in the TreeGrid by calling `Unm { RowIndex = 1, ColumnIndex = 1, - RowSpan = 2, + ColumnSpan = 2, }); } @@ -821,7 +828,7 @@ This sample demonstrates clearing merged regions in the TreeGrid by calling `Unm await TreeGrid.UnmergeCellsAsync(new UnmergeCellInfo { RowIndex = 1, - RowSpan = 1, + ColumnIndex = 1, }); } @@ -829,9 +836,9 @@ This sample demonstrates clearing merged regions in the TreeGrid by calling `Unm { await TreeGrid.MergeCellsAsync(new[] { - new MergeCellInfo { RowIndex = 0, ColumnIndex = 0, RowSpan = 2 }, - new MergeCellInfo { RowIndex = 5, ColumnIndex = 0, RowSpan = 3 }, - new MergeCellInfo { RowIndex = 7, ColumnIndex = 0, RowSpan = 2 } + new MergeCellInfo { RowIndex = 0, ColumnIndex = 0, ColumnSpan = 2 }, + new MergeCellInfo { RowIndex = 5, ColumnIndex = 0, ColumnSpan = 3 }, + new MergeCellInfo { RowIndex = 7, ColumnIndex = 0, ColumnSpan = 2 } }); } @@ -852,11 +859,12 @@ This sample demonstrates clearing merged regions in the TreeGrid by calling `Unm protected override void OnInitialized() { - Tasks = ProjectTask.GetRowSpanData(); + Tasks = ProjectTask.GetSpanData(); } } + {% endhighlight %} -{% highlight c# tabtitle="Order.cs" %} +{% highlight c# tabtitle="ProjectTask.cs" %} public class ProjectTask { @@ -868,7 +876,7 @@ public class ProjectTask public int Progress { get; set; } public List Children { get; set; } = new(); - public static List GetRowSpanData() + public static List GetSpanData() { return new List { @@ -1025,11 +1033,11 @@ public class ProjectTask ## Limitations -The following list outlines the features that are not compatible with row spanning. +The following list outlines the features that are not compatible with row spanning: * Virtualization * Infinite Scrolling -* Row Drag and Drop +* Row - Drag and Drop * Column Virtualization * Detail Template * Editing @@ -1037,4 +1045,4 @@ The following list outlines the features that are not compatible with row spanni ## See also -* [Column spanning in Syncfusion® TreeGrid](https://blazor.syncfusion.com/documentation/treegrid/columns/column-spanning) \ No newline at end of file +* [Column Spanning in Syncfusion® TreeGrid](https://blazor.syncfusion.com/documentation/treegrid/columns/column-spanning) \ No newline at end of file