TreeViewの再帰分析
1920 ワード
TreeNodeCollectionの役割はTreeNodeノードをマウントすることです.
TreeNodeCollection自体は再帰的な特徴を備えていない.TreeNodeのChildNodes属性は再帰的な特徴を備えている.
再帰分析:
キーステートメント:
データソースはpSBAMDLListであり、再帰のたびにpSBAMDLListが循環する.Count回.
再帰の出口は、遍歴の終了が再帰の出口である、pSBAMDLListが循環する.Count回、再帰的に戻ります.
最終的にTreeNodeCollectionのオブジェクトを作成します.このオブジェクトをTreeNodeに追加..ChildNodes.Add(*)にあります.
他の良い例はhttp://www.cnblogs.com/duhongyu216/articles/1702591.html
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