当前位置:编程学习 > C#/ASP.NET >>

treeview

指定了NavigateUrl属性后,SelectedNodeChanged事件不触发了,但是我又要实现“展开一个节点时,关闭同级节点”的功能,求正解啊!!! --------------------编程问答-------------------- 你要用SelectedNodeChanged事件实现“展开一个节点时,关闭同级节点”的功能,为什么还要指定NavigateUrl属性 --------------------编程问答--------------------  rootnode.NavigateUrl = ds.Tables[0].Rows[i]["MenuUrl"].ToString();我需要此属性去连接到页面地址啊 --------------------编程问答-------------------- 去掉 
tn.NavigateUrl 在selectednodechanged事件中 
if(/*判断点中的是这个结点*/) 


Response.Redirect(""); 

} --------------------编程问答-------------------- NavigateUrl属性放到TreeNode的Value中 --------------------编程问答-------------------- 不是很明白 --------------------编程问答-------------------- 你的意思是不是点击之后再给NavigateUrl赋值? --------------------编程问答-------------------- 只要设置你节点的

你的节点.SelectAction = TreeNodeSelectAction.SelectExpand; --------------------编程问答-------------------- selectednodechanged中通过value跳转
--------------------编程问答--------------------   /// <summary>
    /// 绑定功能菜单
    /// </summary>
    void tvDataBind()
    {
        DataSet ds = mic.GetMenuList(RoleID);//获取菜单信息
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            string MenuID = ds.Tables[0].Rows[i]["MenuID"].ToString();
            if (MenuID == "1000")
            {
                TreeNode rootnode = new TreeNode();
                rootnode.Text = ds.Tables[0].Rows[i]["MenuText"].ToString();
                rootnode.Value = ds.Tables[0].Rows[i]["MenuID"].ToString();
                //rootnode.NavigateUrl = ds.Tables[0].Rows[i]["MenuUrl"].ToString();
                tvMenu.Nodes.Add(rootnode);//生成根节点
                GetChildNodes(rootnode, Convert.ToInt32(ds.Tables[0].Rows[i]["MenuChild"]));//获取第一个子节点
            }
        }
        tvMenu.ExpandDepth = 1; //展开所有一级节点
    }

    protected void btnExit_Click(object sender, EventArgs e)
    {
        if (Request.Cookies["UserInfo"] != null)
        {
            HttpCookie myCookie = new HttpCookie("UserInfo");
            myCookie.Expires = DateTime.Now.AddDays(-1d);
            Response.Cookies.Add(myCookie);
        }
        Response.Write("<script>window.location = 'Default.aspx'</script>");
    }

    /// <summary>
    /// 获取子目录
    /// </summary>
    /// <param name="rootnode">父目录节点</param>
    /// <param name="CatalogChild">子目录编号</param>
    void GetChildNodes(TreeNode ParentNode, int NodeChild)
    {
        DataTable drChildNodes = mic.GetMenuForID(NodeChild, RoleID).Tables[0];//获取节点信息
        if (drChildNodes.Rows.Count > 0)
        {

            if (drChildNodes.Rows[0]["MenuCheck"].ToString() == "1")
            {
                TreeNode tnChild = new TreeNode();
                tnChild.Text = drChildNodes.Rows[0]["MenuText"].ToString();
                tnChild.Value = drChildNodes.Rows[0]["MenuID"].ToString();
                if (drChildNodes.Rows[0]["MenuUrl"].ToString() == "#")
                {
                    //tnChild.SelectAction = TreeNodeSelectAction.Expand;
                }
                else
                {
                    //tnChild.NavigateUrl = drChildNodes.Rows[0]["MenuUrl"].ToString();
                }
                ParentNode.ChildNodes.Add(tnChild);
                int ChildNode = Convert.ToInt32(drChildNodes.Rows[0]["MenuChild"].ToString());//子节点值
                if (ChildNode != 0)//是否还有子节点
                {
                    GetChildNodes(tnChild, ChildNode);
                }
            }
               
            int BrotherNode = Convert.ToInt32(drChildNodes.Rows[0]["MenuBrother"].ToString());//兄弟节点值

            if (BrotherNode != 0)//是否还有兄弟节点
            {
                GetBrotherNodes(ParentNode, BrotherNode);
            }
        }
    }

    /// <summary>
    /// 获取兄弟节点
    /// </summary>
    /// <param name="BrotherNode">父目录节点</param>
    /// <param name="CatalogBrother">兄弟节点编号</param>
    void GetBrotherNodes(TreeNode ParentNode, int NodeBrother)
    {
        DataTable dtBrotherNodes = mic.GetMenuForID(NodeBrother, RoleID).Tables[0]; //获取该节点信息
        if (dtBrotherNodes.Rows.Count > 0)
        {
            //判断当前用户是否有权看到此节点
            if (dtBrotherNodes.Rows[0]["MenuCheck"].ToString() == "1")
            {
                TreeNode tnBrother = new TreeNode();
                tnBrother.Text = dtBrotherNodes.Rows[0]["MenuText"].ToString();
                tnBrother.Value = dtBrotherNodes.Rows[0]["MenuID"].ToString();
                if (dtBrotherNodes.Rows[0]["MenuUrl"].ToString() == "#")
                {
                    //tnBrother.SelectAction = TreeNodeSelectAction.Expand;
                }
                else
                {
                    //tnBrother.NavigateUrl = dtBrotherNodes.Rows[0]["MenuUrl"].ToString();
                }
                ParentNode.ChildNodes.Add(tnBrother);//添加到父节点下
                int ChildNode = Convert.ToInt32(dtBrotherNodes.Rows[0]["MenuChild"].ToString());//子节点值            

                if (ChildNode != 0)//是否还有子节点
                {
                    GetChildNodes(tnBrother, ChildNode);
                }
            }

            int BrotherNode = Convert.ToInt32(dtBrotherNodes.Rows[0]["MenuBrother"].ToString());//兄弟节点值

            if (BrotherNode != 0)//是否有兄弟节点
            {
                GetBrotherNodes(ParentNode, BrotherNode);
            }
        }
    }

    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;
            }
            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;
        }
    } --------------------编程问答--------------------  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;
  }
  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;
  }
  }

我写这之后发现根本没达到我想要的啊,我的菜单一共五层,我发现点击第一层根本也不进时间,点最后一层才进 --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,