数据库表字段:人员=ID,归属(某家庭),姓名,生日,性别,关系(父、母、夫、妻、子、女);树节=归属-姓名-生日3级。
数据库表字段:节律自定义提示=ID,智力值,情绪值,体力值,日期,提示内容,心情日记;树节=提示内容-心情日记2级。
private void 树()
{
树.Nodes.Clear(); DataTable 表 = 加载数据(), 树表 = null; string[] 重组表列 = null; DataRow[] 子节 = null;
if (表.TableName == "人员") 重组表列 = new string[] { "归属", "姓名", "生日" };
if (表.TableName == "提示") 重组表列 = new string[] { "提示内容", "心情日记" };
树表 = 表.DefaultView.ToTable(true, 重组表列);
DataTable 根表 = 树表.DefaultView.ToTable(true, 重组表列[0]);
foreach (DataRow 数据列 in 根表.Rows)
{
TreeNode 根节点 = new TreeNode(), 子节点 = new TreeNode();
根节点.Text = 数据列[0].ToString();
根节点.Tag = 数据列;
树.Nodes.Add(根节点);
子节 = 树表.Select(重组表列[0] + "='" + 根节点.Text + "'");
foreach (DataRow 元素 in 子节)
{
子节点 = 根节点;
for (int 级 = 1; 级 < 重组表列.Length; 级++)
{ 子节点 = 无级树(子节点, 元素, 级); }
}
}
}
private TreeNode 无级树(TreeNode 节点, DataRow 子节, int 级)
{
TreeNode 加子节 = new TreeNode();
加子节.Tag = 子节;
加子节.Text = 子节[级].ToString();
节点.Nodes.Add(加子节);
return 加子节;
}