这开始加载第一层“目录” ,然后调用 AddTree方法递归加载
this.treeView1.Nodes.Add("目录");
if (dictionaryClassList.Count == 0)
{
return;
}
TreeNode node = treeView1.Nodes[0];
AddTree(node, "", dictionaryClassList);
递归的实现:没一次传入节点node、子节点编号、和需要加载的数据,首先把当前节点加到树上,然后判断该节点下是否还存在子节点,如果存在的话那么调用方法本身实现递归,如果不存在子节点的话就退出(这就是递归终止条件)。
要用递归的方法加载树首先要明白:1、递归条件(这个而是下级还存在子节点)
2、递归终止条件(这是下级不存在子节点)
/// <summary>
/// 递归加载树形结构
/// </summary>
/// <param name="node">树节点</param>
/// <param name="str">子节点CID</param>
/// <param name="tcList">数据</param>
public void AddTree(TreeNode node, string str, List<DictionaryClass> tcList)
{
List<DictionaryClass> tcList1 = new List<DictionaryClass>();
if (tcList.Count == 0)
{
return;
}
foreach (var item in tcList)
{
if (item.PID == str)
{
TreeNode node1 = node.Nodes.Add(item.DicCode);
if (IsExistence(item.DicCode, tcList))
{
AddTree(node1, item.DicCode, tcList);
}
else
return;
}
}
}
这个函数用于判断下级是否存在子节点
/// <summary>
/// 递归终止条件
/// </summary>
/// <param name="str"></param>
/// <param name="tcList"></param>
/// <returns></returns>
public bool IsExistence(string str, List<DictionaryClass> tcList)
{
bool flag = true;
if (tcList.Count == 0)
{
flag = false;
}
foreach (var item in tcList)
{
if (item.PID == str)
{
flag = true;
return flag;
}
}
return flag;
}
该方法还可以优化,希望对您有一点帮助!