我在示例代码段下面有示例。我希望该方法返回父子关系中的嵌套行。例如,我可以拥有3支球队E.G英格兰,巴西和加拿大,这些球队应该是顶级的父母。然后在每个团队下面,我可能会有类似下面的东西。
英国
巴西
加拿大
玩家1
Palyer 2
尽可能地,特定的palyer也可以在其下面拥有子项。而那些儿童物品也可以有子子物品。
当前问题
我遇到的问题是以下代码只返回英格兰,其子项很好。它完全没有返回巴西和加拿大&我似乎无法弄明白为什么。
public static ObservableCollection<ClubsAndPlayers> GetData()
{
ObservableCollection<ClubsAndPlayers> clubs = new ObservableCollection<ClubsAndPlayers>();
DataTable dt = (DataTable)SessionApp.SessionManager.Session["dtMyTask"];
ClubsAndPlayers parent = null;
ClubsAndPlayers firstChild = null;
ClubsAndPlayers secondChild = null;
ClubsAndPlayers thirdChild = null;
if (!Object.ReferenceEquals(dt, null))
{
if (dt.Rows.Count <= 0)
{
parent = new ClubsAndPlayers("No Player Available ", "", "", "", "", null);
}
else
{
for (var i = 0; i < dt.Rows.Count; i++)
{
string strTaskParentUID = Convert.ToString(dt.Rows[i]["TaskParentUID"]).Trim();
string strTaskID = Convert.ToString(dt.Rows[i]["TaskUID"]).Trim();
string strTaskName = Convert.ToString(dt.Rows[i]["TaskName"]);
string strTaskStartDate = Convert.ToString(dt.Rows[i]["TaskStartDate"]);
string strTaskEndDate = Convert.ToString(dt.Rows[i]["TaskEndDate"]);
int TaskOutlineLevel = Convert.ToInt32(dt.Rows[i]["TaskOutlineLevel"]);
if (i == 0 && TaskOutlineLevel == 1)
{
parent = new ClubsAndPlayers(strTaskName, strTaskID, strTaskStartDate, strTaskEndDate, strTaskParentUID, null);
}
else
{
switch (TaskOutlineLevel)
{
case 2:
firstChild = new ClubsAndPlayers(strTaskName, strTaskID, strTaskStartDate, strTaskEndDate, strTaskParentUID, parent);
if (parent.ID == strTaskParentUID)
{
parent.Items.Add(firstChild);
}
break;
case 3:
secondChild = new ClubsAndPlayers(strTaskName, strTaskID, strTaskStartDate, strTaskEndDate, strTaskParentUID, firstChild);
if (firstChild.ID == secondChild.ParentId)
{
firstChild.Items.Add(secondChild);
}
break;
case 4:
thirdChild = new ClubsAndPlayers(strTaskName, strTaskID, strTaskStartDate, strTaskEndDate, strTaskParentUID, secondChild);
if (secondChild.ID == thirdChild.ParentId)
{
secondChild.Items.Add(thirdChild);
}
break;
}
}
}
}
}
clubs.Add(parent);
return clubs;
}