asp.net treeview 菜單樹 鏈接 展開 摺疊

畫面:

<asp:HiddenField ID="hfdXuHao" runat="server" />

<asp:TreeView ID="tvMenu" runat="server" CssClass="tvStyle" EnableClientScript="false"
                                                                                       OnSelectedNodeChanged="tvMenu_SelectedNodeChanged"
                                                                                       ImageSet="Custom" OnTreeNodeExpanded="tvMenu_TreeNodeExpanded">
                                                                                                                                                                            </asp:TreeView>

 

初始化:

 

protected void Page_Load(object sender, EventArgs e)
{

                      if (string.IsNullOrEmpty(this.hfdXuHao.Value.ToString()))
                    {
                        this.hfdXuHao.Value = (string)Request["moduleid"]; //存儲當前頁面id
                    }


                       //清除樹的所有節點
                        tvMenu.Nodes.Clear();
                        //重新組織生成樹
                        this.InitTree(tvMenu.Nodes, "0", "",userid);


             for (int i = 0; i < this.tvMenu.Nodes.Count; i++)
                    {
                        for (int j = 0; j < this.tvMenu.Nodes[i].ChildNodes.Count; j++)
                        {
                            
                            if (this.hfdXuHao.Value == this.tvMenu.Nodes[i].ChildNodes[j].Value)
                            {
                                this.tvMenu.Nodes[i].Expanded = true;
                            }
                           
                        }
                    }

}

 

 

 protected void InitTree(TreeNodeCollection Nds, string parentId,string parentNm)//用遞歸方法動態生成節點
        {

            TreeNode tmpNode;

            //數據庫取得菜單內容
            IList<SqlDABBmodulinfo> groupList = BLLModule.GetModuleList(parentId);
            foreach (SqlDABBmodulinfodrv in groupList)
            {
                tmpNode = new TreeNode();
                tmpNode.Value = drv.ModuleId.ToString();
                tmpNode.Text = drv.ModuleName;
                tmpNode.ToolTip = drv.Url;
              
                if (!"0".Equals(drv.ParentId))
                {
                    tmpNode.NavigateUrl = drv.Url + "?moduleid=" + drv.ModuleId.ToString();//設置超鏈接
                 
                }

                
 
       
                Nds.Add(tmpNode);

                

                this.InitTree(tmpNode.ChildNodes, drv.ModuleId,drv.ModuleName);
            }
        }

 

 

  protected void tvMenu_SelectedNodeChanged(object sender, EventArgs e)
       {
            for (int i = 0; i < this.tvMenu.Nodes.Count; i++)
            {//跌迭根節點
                if (this.tvMenu .SelectedValue==this.tvMenu .Nodes [i].Value )
                {//如果選中的是根節點,就展開
                    this.tvMenu.SelectedNode.Expanded = true;
                }
                else
                {
                    if (this.tvMenu.SelectedNode.Parent != null)
                    {
                        //如果選中的不是根節點
                        for (int j = 0; j < this.tvMenu.SelectedNode.Parent.ChildNodes.Count; j++)
                        {//就讓選中節點的所有同級節點收縮
                            this.tvMenu.SelectedNode.Parent.ChildNodes[j].CollapseAll();
                        }
                        //然後再展開選中的節點及其所有父節點
                        this.tvMenu.SelectedNode.Parent.Expanded = true;
                        this.tvMenu.SelectedNode.Expanded = true;
 
                    }
                
                }
           }
       }//end tvMenu_SelectedNodeChanged

        protected void tvMenu_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
        {
            TreeNodeCollection ts = null;
            if (e.Node.Parent == null)
            {
                ts = ((TreeView)sender).Nodes;
            }
            else
                ts = e.Node.Parent.ChildNodes;
            foreach (TreeNode node in ts)
            {
                if (node != e.Node)
                {
                    node.Collapse();
                }
                
            }
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章