asp.net TreeView递归循环子节点生成树形菜单实例
本文实例讲述了asp.netTreeView递归循环子节点生成树形菜单的方法。分享给大家供大家参考,具体如下:
这里主要用到递归循环获取子结点
///<summary>
///生成根节点
///</summary>
///<paramname="treeview"></param>
protectedvoidBindTreeView(longID,TreeViewtreeview)
{
DataTabledt=menuLogic.GetMenu2(ID,User.Identity.Name);
treeview.Nodes.Clear();
DataRow[]parentrow=dt.Select("par_id=0");
for(inti=0;i<parentrow.Length;i++)
{
TreeNoderootnode=newTreeNode();
rootnode.Text=parentrow[i]["node_name"].ToString();//parentrow[i][3].ToString();
rootnode.Value=parentrow[i]["ID"].ToString();//parentrow[i][1].ToString();主键
rootnode.Expanded=true;
rootnode.Selected=false;
rootnode.SelectAction=TreeNodeSelectAction.None;
treeview.Nodes.Add(rootnode);
CreateChildNode(rootnode,dt);//
}
}
///<summary>
///生成子节点
///</summary>
///<paramname="parentNode"></param>
///<paramname="datatable"></param>
protectedvoidCreateChildNode(TreeNodeparentNode,DataTabledatatable)
{
DataRow[]rowlist=datatable.Select("par_id="+parentNode.Value);
for(inti=0;i<rowlist.Length;i++)
{
TreeNodenode=newTreeNode();
if(datatable.Select("par_id="+rowlist[i]["ID"].ToString().Trim()).Length>0)
{
node.Text=rowlist[i]["node_name"].ToString();
node.Value=rowlist[i]["ID"].ToString();
}
else
{
node.Text="<ahref=\"javascript:;\"onclick=\"OpenUrl('"+rowlist[i]["url"].ToString().Trim()+"',this)\">"+rowlist[i]["node_name"].ToString()+"</a>";
node.Value=rowlist[i]["ID"].ToString();
}
node.Expanded=false;
node.Selected=false;
node.SelectAction=TreeNodeSelectAction.None;
parentNode.ChildNodes.Add(node);
CreateChildNode(node,datatable);//递归调用
}
}
更多关于asp.net相关内容感兴趣的读者可查看本站专题:《asp.net操作json技巧总结》、《asp.net字符串操作技巧汇总》、《asp.net操作XML技巧总结》、《asp.net文件操作技巧汇总》、《asp.netajax技巧总结专题》及《asp.net缓存操作技巧总结》。
希望本文所述对大家asp.net程序设计有所帮助。