#region TreeView递归无限节点加载
/// <summary>
/// TreeView递归无限节点加载
///
/// 数据表要求-------------------------------------------------
///
/// NodeValue(ID) RootSign(RootID) NodeText(Name)
/// 001 root RootDisNameA
/// (注释:RootText)
/// 002 root RootDisNameB
/// (注释:RootText)
/// 003 001 RootDisNameC
/// 004 001 RootDisNameD
/// 005 001 RootDisNameE
/// 006 002 RootDisNameF
/// 007 002 RootDisNameG
/// 008 005 RootDisNameH
/// 009 007 RootDisNameI
/// 010 007 RootDisNameJ
/// 011 008 RootDisNameK
/// 012 011 RootDisNameL
///
/// 数据表要求------------------------------------------------
/// 这三个字段是必须的,名字可以自定义
/// </summary>
/// <param name="tv"> 树形控件 </param>
/// <param name="dt"> 数据源控件 </param>
/// <param name="NodeText"> 节点显示的字段名 </param>
/// <param name="NodeValue"> 表主键编码字段名 </param>
/// <param name="RootSign"> 根编码字段名 </param>
/// <param name="RootText"> 显示根的条件内容 </param>
public void LoadTreeViewDt(TreeView tv, DataTable dt, string NodeText, string NodeValue, string RootSign, string RootText)
{
// 得到根节点信息
DataRow[] DataRoot = dt.Select(RootSign + " =' " + RootText + " ' ");
// 循环遍历根节点信息
foreach (DataRow dr in DataRoot)
{
// 加载根节点
TreeNode tn = new TreeNode();
tn.Text = dr[NodeText].ToString();
tn.Tag = dr[NodeValue].ToString();
tv.Nodes.Add(tn);
// 递归加载子节点
LoadNodes(tn, dr, NodeText, NodeValue, RootSign, dt);
}
}
private void LoadNodes(TreeNode tn, DataRow dr, string NodeText, string NodeValue, string RootSign, DataTable dt)
{
if (dr == null || tn == null) { return; }
// 得到子节点信息
DataRow[] DataChild = dt.Select(RootSign + " =' " + dr[NodeValue].ToString() + " ' ");
if (DataChild != null || DataChild.Length > 0)
{
// 循环遍历子节点信息
foreach (DataRow drChild in DataChild)
{
// 加载子节点
TreeNode tnChild = new TreeNode();
tnChild.Text = drChild[NodeText].ToString();
tnChild.Tag = drChild[NodeValue].ToString();
tn.Nodes.Add(tnChild);
// 形成递归
LoadNodes(tnChild, drChild, NodeText, NodeValue, RootSign, dt);
}
}
}
#endregion
/// <summary>
/// TreeView递归无限节点加载
///
/// 数据表要求-------------------------------------------------
///
/// NodeValue(ID) RootSign(RootID) NodeText(Name)
/// 001 root RootDisNameA
/// (注释:RootText)
/// 002 root RootDisNameB
/// (注释:RootText)
/// 003 001 RootDisNameC
/// 004 001 RootDisNameD
/// 005 001 RootDisNameE
/// 006 002 RootDisNameF
/// 007 002 RootDisNameG
/// 008 005 RootDisNameH
/// 009 007 RootDisNameI
/// 010 007 RootDisNameJ
/// 011 008 RootDisNameK
/// 012 011 RootDisNameL
///
/// 数据表要求------------------------------------------------
/// 这三个字段是必须的,名字可以自定义
/// </summary>
/// <param name="tv"> 树形控件 </param>
/// <param name="dt"> 数据源控件 </param>
/// <param name="NodeText"> 节点显示的字段名 </param>
/// <param name="NodeValue"> 表主键编码字段名 </param>
/// <param name="RootSign"> 根编码字段名 </param>
/// <param name="RootText"> 显示根的条件内容 </param>
public void LoadTreeViewDt(TreeView tv, DataTable dt, string NodeText, string NodeValue, string RootSign, string RootText)
{
// 得到根节点信息
DataRow[] DataRoot = dt.Select(RootSign + " =' " + RootText + " ' ");
// 循环遍历根节点信息
foreach (DataRow dr in DataRoot)
{
// 加载根节点
TreeNode tn = new TreeNode();
tn.Text = dr[NodeText].ToString();
tn.Tag = dr[NodeValue].ToString();
tv.Nodes.Add(tn);
// 递归加载子节点
LoadNodes(tn, dr, NodeText, NodeValue, RootSign, dt);
}
}
private void LoadNodes(TreeNode tn, DataRow dr, string NodeText, string NodeValue, string RootSign, DataTable dt)
{
if (dr == null || tn == null) { return; }
// 得到子节点信息
DataRow[] DataChild = dt.Select(RootSign + " =' " + dr[NodeValue].ToString() + " ' ");
if (DataChild != null || DataChild.Length > 0)
{
// 循环遍历子节点信息
foreach (DataRow drChild in DataChild)
{
// 加载子节点
TreeNode tnChild = new TreeNode();
tnChild.Text = drChild[NodeText].ToString();
tnChild.Tag = drChild[NodeValue].ToString();
tn.Nodes.Add(tnChild);
// 形成递归
LoadNodes(tnChild, drChild, NodeText, NodeValue, RootSign, dt);
}
}
}
#endregion