c#.net中的treeview中的selectnodechange事件。
点击节点第一次可以触发该事件,可点击第二次的时候就不能触发该事件了,有哪位高手给看看啊。
我的selectnodechange事件是这样写的:
 //节点选中事件
    protected void roleTreeView_SelectedNodeChanged(object sender, EventArgs e)
    {
        //objNode.Checked = !objNode.Checked;
        
        this.nodesvalue.Value = this.roleTreeView.SelectedNode.Value;
        //Response.Write("<script>alert('"+nodesvalue.Value+"');</script>");
        Response.Write("<script>window.open('MainRoleUser.aspx?roleId='+'"+this.nodesvalue.Value+"','User','');</script>");
        this.roleTreeView.SelectedNode.NavigateUrl = "MainRoleRight.aspx?roleId=" + nodesvalue.Value;        //roleTreeView.SelectedNode.Selected = false;
        roleTreeView.Nodes.Clear();
        initTree();
       
        //roleTreeView.SelectedNode.Selected = true;
        
        }

解决方案 »

  1.   

    你两次点击的是同一个NODE吗?
    如果是,那么第二次肯定触发不了了,这个事件只有在选择的节点发生变化的时候才会触发。第二次点击同一个节点,根本没变化。
      

  2.   

    ghost281536992 你好:我的操作是这样的,比如说我有 a,b 两个节点,点击a节点,该事件触发,然后点击b节点,也触发该事件,但是当我再点击a节点的时候,该事件就不触发了。
      

  3.   

    你两次点击的是同一个NODE吗?
    如果是,那么第二次肯定触发不了了,这个事件只有在选择的节点发生变化的时候才会触发。第二次点击同一个节点,根本没变化。
    方法调用出错了吧,多调试一下
      

  4.   

    加上
    treeNode tnCurrent=roleTreeView.SelectedNode;
    在事件的最后加上
    tnCurrent.selected=false;
      

  5.   


     roleTreeView.Nodes.Clear();
     initTree();
    这两句是想实现树的重置吗?
      

  6.   

    你的是change事件,换成NodeMouseClick就可以了
      

  7.   

    如果你想实现的是只要节点改变就触发,那么这个事件就是对的,没必要改。
    但是你下面那两句刷新可以注掉,treeview的构建十分影响效率。
    刚才测试了下,事件没错,是楼主的功能代码有问题。建议好好看下。
      

  8.   


    确实是我代码错了,是加了这一句:this.roleTreeView.SelectedNode.NavigateUrl = "MainRoleRight.aspx?roleId=" + nodesvalue.Value;请帮我看一下,为什么加了这句就不行了?应该换成那种方法呢?
      

  9.   

    已经解决了,不用navigateurl 换成 window.open(),呵呵,谢谢大家了,给得分不多,非常感谢ghost281536992