典型代码
动态加载 TreeView 控件的节点,经常使用以构成动态菜单。
//参数1:当前节点的子节点集合,如 TreeView.Nodes 或 某个节点的子节点集合
//参数2:当前节点的ID (用于从数据库中寻找当前节点的子节点)
private void DrawTree(TreeNodeCollection nds, string parentID)
{
DataTable dt = mgr.GetListByParent(parentID);//获取当前节点的全部子节点
TreeNode tmpNd;
for (int i = 0; i < dt.Rows.Count; i++)
{
tmpNd = new TreeNode();
tmpNd.Value = dt.Rows[i]["ITEM_ID"].ToString();
tmpNd.Text = dt.Rows[i]["VALUE"].ToString();
if (!(bool)dt.Rows[i]["ISLEAF"]) //若是不是叶子节点
{
tmpNd.NavigateUrl = string.Format("HierarchyEdit.aspx?ID={0}&DID={1}", dt.Rows[i]["ITEM_ID"].ToString(), DEPT_ID);
}
else //若是是叶子
{
tmpNd.NavigateUrl = string.Format("LeafDetail.aspx?ID={0}&DID={1}", dt.Rows[i]["ITEM_ID"].ToString(), DEPT_ID);
tmpNd.Text = string.Format("<span style=\"color:red \">{0}</span>", tmpNd.Text);
}
tmpNd.Target = "content";
nds.Add(tmpNd);
DrawTree(tmpNd.ChildNodes, dt.Rows[i]["ITEM_ID"].ToString());//递归建立子节点
}
}
//调用方法
//绘制根节点,
//DrawTree(this.TVLib.Nodes, "0");