js所做的修改服务器是不会认识的,服务器控件能保存状态是因为有ViewState
你得手动提交到服务器端

解决方案 »

  1.   

    看看这段js,这样写服务器端就能正确得到js对选中节点的更改了
    var oldIndex=TreeView1.selectedNodeIndex;
    var newIndex="1";
    TreeView1.selectedNodeIndex=newIndex;
    this.queueEvent('onselectedindexchange', oldIndex + ',' + newIndex)
      

  2.   

    >>>>treeview1.SelectedNodeIndex的值没有任何变化,一直是第一次加载树时的index.
    你在加载树时有没有判断是否是IsPostBack
    if( !IsPostBack )
    {
      //加载树代码.
    }
      

  3.   

    >>>>treeview1.SelectedNodeIndex = Request.Form("text")左边是int型,右边是字符串类型呀?
      

  4.   

    肯定是判断了是否postback了.
    onselectedindexchange,他只有当节点发生改变才起作用.我要点击他不管是否发生改变.
      我首先是用一个hidden保存我所点击treeview的node的index,再在cs中写了
    treeview1.SelectedNodeIndex = Request.Form("text"),text为一个hidden它的value为点击树结点的index,
    到后面取结点的id时(treeview1.Nodes(treeview1.SelectedNodeIndex).ID.ToString() )
     报错:无法把string强制转换成Integer型.
      

  5.   

    可是Request.Form("text")值为0.0.1,0或0.0我怎么把他改为int型
      

  6.   

    以前对TREEVIEW进行了一番深入研究,写了一些应用的代码:
    先把其中一个应用的代码贴出来供你参考!
    <script event="onselectedindexchange" for="myDeviceTree">
    var myNode = myDeviceTree.getTreeNode(myDeviceTree.selectedNodeIndex);
    ResourceTree.txtSelectIndex.value =myDeviceTree.selectedNodeIndex;
    </script>
    txtSelectIndex为hidden控件服务端是:
    if(!Page.IsPostBack)
    {
    ViewState["selectNodeIndex"]="0";
    txtSelectIndex.Value="0";
    }
    if(Request["txtSelectIndex"]!=null)
    {
    mSelectedNodeIndex=Request["txtSelectIndex"].ToString();
    ViewState["selectNodeIndex"]=mSelectedNodeIndex;
    }
    后台操作时:
    myDeviceTree.GetNodeFromIndex(ViewState["selectNodeIndex"].ToString()).Remove();
    不知到能不能帮到你!其实很多问题在帮助里面都可以找到的!