TreeViewの再帰分析

1920 ワード

TreeNodeCollectionの役割はTreeNodeノードをマウントすることです.
TreeNodeCollection自体は再帰的な特徴を備えていない.TreeNodeのChildNodes属性は再帰的な特徴を備えている.
再帰分析:
キーステートメント:
 AddStandardBudgetAccountsTreeNode(pSBAMDLList, pBudgetCycleID, pBudgetTypeID, sbaNode.ChildNodes, SBAMDL.ID);
は、現在のノードIDを巡回再帰Pidとして毎回除去する.つまり自分のサブ科目を探すことです.
データソースはpSBAMDLListであり、再帰のたびにpSBAMDLListが循環する.Count回.
再帰の出口は、遍歴の終了が再帰の出口である、pSBAMDLListが循環する.Count回、再帰的に戻ります.
最終的にTreeNodeCollectionのオブジェクトを作成します.このオブジェクトをTreeNodeに追加..ChildNodes.Add(*)にあります.
  /// 
    ///            
    /// 
    ///         
    ///       
    public void AddStandardBudgetAccountsTreeNode(IList pSBAMDLList, string pBudgetCycleID, string pBudgetTypeID, TreeNodeCollection nodes, string pid)
    {
        foreach (StandardBudgetAccountsMDL SBAMDL in pSBAMDLList)
        {
            if (SBAMDL.ParentAccountID == pid)
            {
                TreeNode sbaNode = new TreeNode();
                sbaNode.ToolTip = SBAMDL.AccountCode;
                sbaNode.Value = SBAMDL.ID;
                sbaNode.Text = SBAMDL.AccountName;
                sbaNode.Target = "Chmain";
                sbaNode.ImageUrl = Globals.GetOrgImgUrl_t(OT.Organization.EnumOrgTreeNode.Function);
                sbaNode.NavigateUrl = "StandardBudgetAccountsList.aspx?BudgetType=" + pBudgetTypeID + "&BudgetCycleID=" + pBudgetCycleID + "&PID=" + sbaNode.Value;
                AddStandardBudgetAccountsTreeNode(pSBAMDLList, pBudgetCycleID, pBudgetTypeID, sbaNode.ChildNodes, SBAMDL.ID);
                nodes.Add(sbaNode);  //       AddStandardBudgetAccountsTreeNode  ,      ,      ,      ,           ,      
            }
        }

他の良い例はhttp://www.cnblogs.com/duhongyu216/articles/1702591.html