前提是每层的结点上设置了NavigateUrl
OnSelectedNodeChanged事件好像失去了作用。
另外TreeView是没有AutoPostBack的!!!!
那么要如何触发OnSelectedNodeChanged事件呢?
其实我想实现的功能很简单就是要点击节点时,该节点新式有所变化。

解决方案 »

  1.   

    没有AutoPostBack用JS触发吧
      

  2.   

    NavigateUrl把这个去掉试试呢?如果可以,就NavigateUrl
    交给后台事件OnSelectedNodeChanged里面赋值
      

  3.   

    去掉可以触发。
    不去掉,我换用JS来实现,但是它没有动态去更新,得到的仍是第一次默认的节点ID。
    如何才能动态得到所选的节点呢?
    我的代码是:
    function goUrl(src)
    {
       var a=" <%=test() %>";
       alert(a);
    } tn.NavigateUrl = "javascript:goUrl('CList.aspx?PID=" + _dataTable.Rows[0]["PID"].ToString() + "');"; protected string test()
        {
            this.SelectedID = new Guid(stv1.SelectedNode.Value);
           
            return this.SelectedID.ToString();
        }
      

  4.   

    解决了。用JQUERY实现的。
    方法:
    jQuery( function()
        {
            var treeObj = jQuery("#<%=stv1.ClientID %>");
            //alert(treeObj.selector);
            //alert(treeObj.length);
            var anchorObjList = treeObj.find("a");
            //alert(anchorObjList.length);
            anchorObjList.click( function()
            {
                //alert('test');
                
                anchorObjList.filter(".selectStyle").removeClass("selectStyle");
                anchorObjList.filter(".ctl00_ContentPlaceHolder1_stv1_0.ctl00_ContentPlaceHolder1_stv1_1.ctl00_ContentPlaceHolder1_stv1_5").removeClass("ctl00_ContentPlaceHolder1_stv1_0 ctl00_ContentPlaceHolder1_stv1_1 ctl00_ContentPlaceHolder1_stv1_5");
               jQuery(this).addClass("selectStyle");//这里的this就是指向点击的元素,点哪个就是哪个。
            });
        });