程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> asp.net TreeView遞歸循環子節點生成樹形菜單實例

asp.net TreeView遞歸循環子節點生成樹形菜單實例

編輯:ASP.NET基礎

本文實例講述了asp.net TreeView遞歸循環子節點生成樹形菜單的方法。分享給大家供大家參考,具體如下:

這裡主要用到遞歸循環獲取子結點

/// <summary>
/// 生成根節點
/// </summary>
/// <param name="treeview"></param>
protected void BindTreeView(long ID, TreeView treeview)
{
    DataTable dt = menuLogic.GetMenu2(ID, User.Identity.Name);
    treeview.Nodes.Clear();
    DataRow[] parentrow = dt.Select("par_id=0");
    for (int i = 0; i < parentrow.Length; i++)
    {
      TreeNode rootnode = new TreeNode();
      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>
/// <param name="parentNode"></param>
/// <param name="datatable"></param>
protected void CreateChildNode(TreeNode parentNode, DataTable datatable)
{
    DataRow[] rowlist = datatable.Select("par_id=" + parentNode.Value);
    for (int i = 0; i < rowlist.Length; i++)
    {
      TreeNode node = new TreeNode();
      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 = "<a href=\"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.net ajax技巧總結專題》及《asp.net緩存操作技巧總結》。

希望本文所述對大家asp.net程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved