C# 创建依赖于 Children 的轨道 Parents

C# Create Tracks Parents which Depend on Children

我正在尝试创建超过 child 的 Parent 曲目,并将主题放入动态列表框

我有这个 Parent活动 table"

tblParentActivity

并且我想让曲目依赖于 ParentActivity table 在 ListBox 中,如下所示:

Tracks in ListBox

到目前为止的代码:

private void TrackingActivity(long ParentActivityID)
{

    DataTable dtActiveChild = objA.SelectActivityChild(ParentActivityID);

        ListBox lstBox = new ListBox();
        lstBox.ID = "lstTrack" + ParentActivityID.ToString();
        lstBox.Width = 200;
        pnlTrack.Controls.Add(lstBox);

        for (int i = 0; i < dtActiveChild.Rows.Count; i++)
        {
            long ActivityChildID =  Convert.ToInt64(dtActiveChild.Rows[i]["ActivityID"].ToString());
            string ActivityChildName = dtActiveChild.Rows[i]["ActivityName"].ToString();

            lstBox.Items.Add(new ListItem (ActivityChildName.ToString(),ActivityChildID.ToString()));

            DataTable dtBrotherActivity = objA.selectBrotherActivity(ActivityChildID);

            if (dtBrotherActivity.Rows.Count > 0)
            {              
                TrackingActivity(ActivityChildID);
            }
        } 
}

例如ParentActivityID=1;

selectBrotherActivity 正在查询以获取另一个 child parent

它给了我这样的分布:

|1|2 3|4 5|7|9|10|7|9|10|6|8|9|10|

哪个||表示列表框

好的,谢谢大家,我找到了它:

protected void btnCreateTrack_Click(object sender, EventArgs e)

{

  ListBox lstBoxParent = new ListBox();
  lstBoxParent.ID = "lstTrack1";
  lstBoxParent.Width = 200;
  lstBoxParent.Height = 200;
  pnlTrack.Controls.Add(lstBoxParent);

  TrackingActivity(1, lstBoxParent );

}



private void TrackingActivity(long ParentActivityID, ListBox lstBoxParent)
{

    chk:

    DataTable dtActiveChild  = objWFAI.SelectActivityChild(ParentActivityID);
    string ActivityName = objWFA.CurrentActivityName(ParentActivityID);


    lstBoxParent.Items.Add(new ListItem(ActivityName, ParentActivityID.ToString()));

    for (int i = dtActiveChild .Rows.Count - 1; i >= 0; i--)
    {
        long ActivityChildID = Convert.ToInt64(dtActiveChild .Rows[i][" ActivityID"].ToString());

        if (i != 0)
        {
            ListBox lstBoxChild = new ListBox();
            lstBoxChild.ID = "lstTrack" + ActivityChildID.ToString();
            lstBoxChild.Width = 200;
            lstBoxChild.Height = 200;
            pnlTrack.Controls.Add(lstBoxChild);

            for (int p = 0; p < lstBoxParent.Items.Count; p++)
            {
                lstBoxChild.Items.Add(new ListItem(lstBoxParent.Items[p].Text, lstBoxParent.Items[p].Value));
            }
            TrackingActivity(ActivityChildID, lstBoxChild);
        }
        else
        {
            ParentActivityID = ActivityChildID ;

            goto chk;
        }
    }