参考一下了:
(5)常用的几个操作:增加、删除、修改、剪切@增加节点:
        Dim tmpNd3 As New Microsoft.Web.UI.WebControls.TreeNode()
        Dim NdSel As New Microsoft.Web.UI.WebControls.TreeNode()
        'NdSel 为当前选定的节点,新节点将作为它的子节点 
        NdSel = Treepaybasic.GetNodeFromIndex(Treepaybasic.SelectedNodeIndex)
        tmpNd3.Text = "新增节点"
        '在树中添加这个新节点
        NdSel.Nodes.Add(tmpNd3)
@删除节点:
        Dim tmpNd3 As New Microsoft.Web.UI.WebControls.TreeNode()
        Dim NdSel As New Microsoft.Web.UI.WebControls.TreeNode()
        'NdSel 为当前选定的要删除节点,tmpNd3为它的父节点 
        NdSel = Treepaybasic.GetNodeFromIndex(Treepaybasic.SelectedNodeIndex)
        If (Treepaybasic.SelectedNodeIndex <> "0") Then
            tmpNd3 = NdSel.Parent
            tmpNd3.Nodes.Remove(NdSel)
        Else
            Treepaybasic.Nodes.Clear()
        End If
@修改节点:
        Dim NdSel As New Microsoft.Web.UI.WebControls.TreeNode()
        NdSel = Treepaybasic.GetNodeFromIndex(Treepaybasic.SelectedNodeIndex)
        NdSel.Text = "aaa"
@剪切和粘贴剪切:
        Dim tmpNd3 As New Microsoft.Web.UI.WebControls.TreeNode()
        Dim NdSel As New Microsoft.Web.UI.WebControls.TreeNode()
        'NdSel 为当前选定的要删除节点,tmpNd3为它的父节点 
        NdSel = Treepaybasic.GetNodeFromIndex(Treepaybasic.SelectedNodeIndex)
        '将剪切下来的节点存入session
        Session("node") = NdSel
        If (Treepaybasic.SelectedNodeIndex <> "0") Then
            tmpNd3 = NdSel.Parent
            tmpNd3.Nodes.Remove(NdSel)
        End If
粘贴:
            Dim tmpNd3 As New Microsoft.Web.UI.WebControls.TreeNode()
        Dim NdSel As New Microsoft.Web.UI.WebControls.TreeNode()
        'NdSel 为当前要粘贴节点的父节点 
        NdSel = Treepaybasic.GetNodeFromIndex(Treepaybasic.SelectedNodeIndex)
        tmpNd3 = Session("node")
        NdSel.Nodes.Add(tmpNd3)2.用递归生成树的算法和数据库设计
(1)递归说明
  程序调用自身的编程方法称为递归(recursion)。在树的生成以及图的遍历中,递归用的很多。经典的算法求 n! (求n的阶乘)中,用的就是递归方法。递归算法的优点就是简洁,可扩充性好。但是缺点也很明显:低效。因为递归就是程序不断调用自身,对系统的资源消耗比较大。随着节点的增多,执行效率会变的很低。 
  为了解决树在生成过程中的层树不定的问题,同时也是为了让树的扩展性更好。树的生成使用了递归的方法。生成树的代码一旦写成,可以不改动源代码,生成无限级层次的树。树的结构完全由数据库中表的数据决定。
(2)数据库设计
  创建一个数据库,设计树图信息表Treetable,表中属性包含Nodeid、Parentid、Nodename、Address等字段(分别用于表示节点的ID、父节点ID、节点名称、链接地址),其它属性根据实际用户需求和设计而定。节点名称Nodename将在树型控件的节点上显示,Nodeid字段保存节点的唯一标识号,Parentid表示当前节点的父节点ID号(例如有两个节点是父子关系,孩子节点的Parentid值就是其父节点的Nodeid),节点号父子相接组成了一个“链表”,表征并记录了树上节点的层次结构。
表具体设计如下:(简化模型,实际使用的要复杂一些)主键 属性名 类型 长度 可空 属性含义
是 Nodeid int 6 否 节点ID
Parentid int 6 否 父节点ID
Nodename char 50 否 节点名称
Address char 80 可 链接地址备注:链接地址 主要是用在: 树在框架中使用的环境。链接可以指向其他框架页中的地址或是带不同的参数。
(3)程序代码
――――――――――――递归函数――――――――――――
    '生成树的函数
    Private Sub inittree(ByRef Nds As Microsoft.Web.UI.WebControls.TreeNodeCollection, ByVal parentId As Integer)
        Dim dv As New DataView()
        Dim dvrow As DataRowView
        Dim tmpNode As Microsoft.Web.UI.WebControls.TreeNode
        'intId为数值型变量,其作用是记录并传递当前记录的ID,做为它子节点的PARENTID值
        Dim intId As Integer
        dv.Table = mySet.Tables("paybasic")
        'parentId传递的是 additem函数中的intId.下面语句的作用是找出当前节点的子孩子集合。 
        dv.RowFilter = "parentID='" & parentId & "'"
        '如果当前节点有孩子,则遍历所有的孩子,并调用递归函数。
        For Each dvrow In dv
            tmpNode = New Microsoft.Web.UI.WebControls.TreeNode()
            '为当前节点的各个属性赋值。
            tmpNode.ID = dvrow("nodeID")
            tmpNode.Text = dvrow("nodename")
            tmpNode.NavigateUrl = dvrow("Address")
            intId = dvrow("parentID")
            '添加一个节点
            Nds.Add(tmpNode)
            '调用递归函数
            inittree(Nds(Nds.Count - 1).Nodes, intId)
        Next
End Sub
――――――――――――――――调用递归函数――――――――――――――――――
CreateReaderDataSet()
inittree(Treepaybasic.Nodes, 999)
―――――――――――――――――生成数据集―――――――――――――――――――
    '生成数据集的函数
    Private Sub CreateReaderDataSet()
        '在运行时连接,并设置连接属性
        MyConn = New System.Data.OleDb.OleDbConnection("Provider=MSDAORA.1;Data Source=oracle9;User ID=user;Password=****;")
        '设置SelectCommand命令
        myAdapter.SelectCommand = New System.Data.OleDb.OleDbCommand("select * from treenode", MyConn)
        '填充数据集
        myAdapter.Fill(mySet, "treenode")
    End Sub

解决方案 »

  1.   

    CSDN是xml的固定的结构,每次点击一个节点就利用dom去找此节点以下的数据,动态的话数据库的话,我想可以用修改xml文件来做,csdn的代码应该可以搞到的吧。。web下treeview确实winform下繁。。
      

  2.   

    Treeview做成逐层加载,谁有例子??
      

  3.   

    Microsoft.Web.UI.WebControls,微软有控件发布,包括TabStrip、MultiPage、Toolbar和Treeview。我用到的是TabStrip、MultiPage,不知道合不合适你用。可以去微软下载,是免费的。
      

  4.   

    有个问题呢,怎么跳到下一条记录阿,死循环了 /// <summary>
    /// 初始化树结构
    /// </summary>
    /// <param name="Nds">树节点集合</param>
    /// <param name="parentId">根节点值</param>
    private void initTree(TreeNodeCollection Nds , string parentId)
    {
    DataView dv=new DataView() ;
    TreeNode tmpNd;
    //int intId;
    dv.Table = objDataSet.Tables["tree"];

    foreach(DataRowView objRow in dv)
    {
    tmpNd=new TreeNode();
    tmpNd.ID=objRow["Nodeid"].ToString();
    tmpNd.Text=objRow["Nodename"].ToString();
    tmpNd.NavigateUrl =objRow["Address"].ToString() ;
    parentId = objRow["Parentid"].ToString();
    //tmpNd.Target="main";
    Nds.Add(tmpNd);
                
    initTree(tmpNd.Nodes,parentId);
                                         //这里还需要什么处理,就是这的递归出了问题
    }   

    }
      

  5.   

    树形图用于显示按照树形结构进行组织的数据,其用途比较广泛,如计算机中的文件系统(Windows中的资源管理器)、企业或公司的组成结构等。我们知道在Windows下VB、PB、Delphi等工具提供了一个功能很强的树型控件TreeView,利用Treeview控件可以方便地开发树形图。然而在网页上实现树形图就不那么容易了,现在在ASP.NET中利用微软提供的Internet Explorer WebControls它使得网页上的树形图开发与在Windows下一样的方便,一样的功能强大,甚至更灵活。 
      本文介绍用Internet Explorer WebControls开发树形图的方法,由于树形图结构较复杂,使用起来常不知如何下手。笔者结合最近刚为公司用ASP.NET编写的应用程序管理器这一具体实例,详细阐述在ASP.NET下如何将Internet Explorer WebControls的使用与数据库联系起来,实现数据分任意多层显示,方便地进行增加、修改、删除、移动操作。笔者希望通过对该实例的阐述,达到抛砖引玉的效果,与各位同仁相互交流,共同进步。 
      Internet Explorer WebControls不在VS.NET的标准Server Control中,要到微软的站点上下载,下载地址是:http://msdn.microsoft.com/downloads/samples/internet/default.asp?url=/Downloads/samples/Internet/ASP_DOT_NET_ServerControls/WebControls/default.asp 下载安装后第一次使用时,要右击工具箱Customize Toolbox…→.NET Framework Components中找到Micosoft.Web.UI.WebControls.Treeview后选中,这样Treeview控件就出现在工具箱中了。 
      一、树的建立 
      具体方法是:创建一个数据库,设计树图信息表TREE_INFO,包含NODEID、PARENTID、NODENAME、ADDERSS、ICON字段,其它字段根据实际业务而定,节点名称NODENAME将在树型控件的节点上显示,NODEID字段保存节点的唯一标识号,PARENTID表示当前节点的父节点号,标识号组成了一个“链表”,记录了树上节点的结构。设计一个Web窗体其上放置TreeView控件。
      
    Private Sub CreateDataSet()’建立数据集 
    Dim myConn As New SqlConnection() 
    Dim myCmd As New SqlCommand("select NODEID,NODENAME,PARENTID,ADDRESS,ICON from Tree_info", myConn) 
    Dim myDataAdapter As New SqlDataAdapter() 
    myConn.ConnectionString = Application("connectstring") 
    myCmd.CommandText = "" 
    myCmd.Connection = myConn 
    myDataAdapter.SelectCommand = myCmd 
    myDataAdapter.Fill(ds, "tree") 
    End Sub 
      建树的基本思路是:从根节点开始递归调用显示子树 
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    CreateDataSet() 
    intiTree(TreeView1.Nodes, 0) 
    End Sub 
    Private Sub intiTree(ByRef Nds As TreeNodeCollection, ByVal parentId As Integer) 
    Dim dv As New DataView() 
    Dim drv As DataRowView 
    Dim tmpNd As TreeNode 
    Dim intId As Integer 
    dv.Table = ds.Tables("tree") 
    dv.RowFilter = "PARENTID=’" & parentId & "’" 
    For Each drv In dv 
    tmpNd = New TreeNode() 
    strId = drv("NODE_ID") 
    tmpNd.ID = strId 
    tmpNd.Text = drv("NODE_NAME ") 
    tmpNd.ImageUrl = drv("ICON").ToString 
    Nds.Add(tmpNd) 
    intiTree(Nds(Nds.Count - 1).Nodes, intId) 
    Next 
    End Sub  
    二、增加、删除树节点 
      单纯在Treeview 上增加、删除、修改节点只需用Nodes属性的Add、 Remove、等方法即可,值得注意的地方是VS.NET中Treeview的Nodes集合与VS6.0中的区别,VS6.0中的是一个大的集合,而VS.NET中的是分层的每个Node下都有Nodes属性。增加、删除、修改树节点时与VS6.0相比有很大差别,特别是删除时。
    Private Sub ButAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButAdd.Click’在选定的节点下添加子节点 
    Dim tmpNd As New TreeNode(), NdSel As TreeNode 
    tmpNd.ID = GetNewId() 
    NdSel = TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex)’选中的节点 
    tmpNd.Text = "新节点" 
    NdSel.Nodes.Add(tmpNd) 
    Dim myRow As DataRow 
    myRow = ds.Tables("tree").NewRow() 
    myRow("NODE_NAME") = tmpNd.ID 
    myRow("NODE_DESCRIPT") = "新节点" & tmpNd.ID & "_" & NdSel.ID 
    myRow("PARENT_NAME") = NdSel.ID 
    ds.Tables("tree").Rows.Add(myRow) 
    End Sub 
    Private Sub ButDele_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButDele.Click’删除选中的节点 
    Dim idx As String = TreeView1.SelectedNodeIndex() 
    GetNdCol(idx).Remove(TreeView1.GetNodeFromIndex(idx)) 
    Dim dv As New DataView(), recNo As Integer 
    dv.Table = ds.Tables("tree") 
    dv.RowFilter= "NODEID=" & NdId 
    dv.Delete(0) 
    End Sub 
    Private Function GetNdCol(ByVal idx As String) As TreeNodeCollection 
    ‘获得选中节点的父节点的Nodes集合 
    Dim cnt As Integer, i As Integer 
    Dim tmpNds As TreeNodeCollection 
    Dim idxs() As String 
    idxs = Split(idx, ".") 
    cnt = UBound(idxs) 
    If cnt = 0 Then 
    tmpNds = TreeView1.Nodes 
    Else 
    tmpNds = TreeView1.Nodes(CInt(idxs(0))).Nodes 
    For i = 1 To cnt - 1 
    tmpNds = tmpNds(CInt(idxs(i))).Nodes 
    Next 
    End If 
    Return tmpNds 
    End Function 
    三、修改、移动树节点 
      由于服务器控件不支持鼠标拖动事件,所以不能象Windows程序那样通过拖动移动节点,这里是通过选择父节点的方式。移动是通过在原位置删除,新位置添加实现的,要注意在删除时先保存节点信息。 
    Private Sub TreeView1_SelectedIndexChange(ByVal sender As Object, ByVal e As Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs) Handles TreeView1.SelectedIndexChange 
    Dim dv As New DataView() 
    dv.Table = ds.Tables("tree") 
    Dim tmpNd As TreeNode = TreeNdSel(e.OldNode), tmpNds As TreeNodeCollection 
    dv.RowFilter= "NODEID=" & tmpNd.ID 
    dv(0)("NODE_DESCRIPT") = Me.TextBox1.Text 
    dv(0)("ADDRESS") = Me.TextBox2.Text 
    dv(0)("TARGET") = Me.TextBox3.Text 
    dv(0)("ICON") = Me.TextBox4.Text 
    If dv(0)("PARENTID").ToString <> Me.DropDownList1.SelectedItem.Value Then 
    ‘移动节点 
    dv(0)("PARENT_NAME") = Me.DropDownList1.SelectedItem.Value 
    If Me.DropDownList1.SelectedItem.Value = "ROOT" Then 
    tmpNds = TreeView1.Nodes 
    Else 
    tmpNds = FromIdToNode(Me.DropDownList1.SelectedItem.Value, TreeView1.Nodes).Nodes’新的父节点的Nodes集合 
    End If 
    GetNdCol(e.OldNode).Remove(tmpNd) 
    tmpNds.Add(tmpNd) 
    End If 
    tmpNd.Text = Me.TextBox1.Text 
    tmpNd.ImageUrl = Me.TextBox4.Text 
    tmpNd = TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex) 
    dv.RowFilter= "NODEID=" & tmpNd.ID 
    Me.TextBox1.Text = dv(0)("NODENAME").ToString 
    Me.TextBox2.Text = dv(0)("ADDRESS").ToString 
    Me.TextBox3.Text = dv(0)("TARGET").ToString 
    Me.TextBox4.Text = dv(0)("ICON").ToString 
    End Sub 
    Private Function FromIdToNode(ByVal ID As String, ByVal Nds As TreeNodeCollection) As TreeNode 
    ‘由关键字查找节点 
    Dim i As Integer 
    Dim tmpNd As TreeNode, tmpNd1 As TreeNode 
    For Each tmpNd In Nds 
    If tmpNd.ID = ID Then 
    Return tmpNd 
    Exit Function 
    End If 
    tmpNd1 = FromIdToNode(ID, tmpNd.Nodes) 
    If Not (tmpNd1 Is Nothing) Then 
    Return tmpNd1 
    Exit Function 
    End If 
    Next 
    Return Nothing 
    End Function  
      四、结束语 
      以上阐述ASP.NET中树状显示的基本方法,以及如何在对树节点进行维护(增加、删除、修改、移动)的同时,修改数据库数据。由于篇幅所限,笔者在此只对基本思路和流程及关键步骤作了介绍,并未列出详细源代码,读者可自行完善。需要详细源代码者可与我联系,本文程序在VS.NET、SQLServer、Windows 2000、IIS5.0下调试通过。
      

  6.   

    这个递归调用怎么死循环了呢???-----------------------------------
    private void initTree(TreeNodeCollection Nds , string parentId)
    {
    DataView dv=new DataView() ;
    TreeNode tmpNd;
    //int intId;
    dv.Table = objDataSet.Tables["tree"];

    foreach(DataRowView objRow in dv)
    {
    tmpNd=new TreeNode();
    tmpNd.ID=objRow["Nodeid"].ToString();
    tmpNd.Text=objRow["Nodename"].ToString();
    tmpNd.NavigateUrl =objRow["Address"].ToString() ;
    parentId = objRow["Parentid"].ToString();
    //tmpNd.Target="main";
    Nds.Add(tmpNd);
                
    initTree(tmpNd.Nodes,parentId);
                                         //这里还需要什么处理,就是这的递归出了问题
    }   

    }-----------------------------------
      

  7.   

    void  creat_node(string
    name,Microsoft.Web.UI.WebControls.TreeNode  t1,string  number)
            {
                //定义一个新的结点            Microsoft.Web.UI.WebControls.TreeNode  t2=new
    Microsoft.Web.UI.WebControls.TreeNode();
                t2.ID=number;
                t2.Text=name;
                //判断是否为根结点
                TreeView1.ExpandedImageUrl="images/Depart03.bmp";
                if(t1.ID.Trim()=="###")
                {
                    TreeView1.Nodes.Add(t2);
                    t2.ImageUrl="images/Depart01.bmp";
                }
                else
                {
                    t1.Nodes.Add(t2);
                       t2.ImageUrl="images/Depart01.bmp";
                    t1.ImageUrl="images/Depart02.bmp";
                }
                //取得这个结点的所有子结点,利用递归自动生成
                string mySelectQuery = "SELECT ParentID, ID,Name FROM table1
    where  ParentID='" + number +"'";
                string MyConnString="provider=Microsoft.Jet.OLEDB.4.0;Data
    Source="+Server.MapPath(".")+"/dt/mydata.mdb";
                OleDbConnection myConnection = new
    OleDbConnection(MyConnString);
                OleDbCommand myCommand = new
    OleDbCommand(mySelectQuery,myConnection);
                myConnection.Open();
                OleDbDataReader myReader;
                myReader = myCommand.ExecuteReader();
                while (myReader.Read())
                {
                    creat_node(myReader.GetString(2),t2,myReader.GetString(1));            }
                myReader.Close();
                myConnection.Close();        }    private void CreateProviderTreeBtn_Click(object sender,
    System.EventArgs e)
            {
                Microsoft.Web.UI.WebControls.TreeNode  t1=new
    Microsoft.Web.UI.WebControls.TreeNode();
                creat_node("",t1,"###");
      

  8.   

    public static void GenerateTree(DataTable dt,string id,string parentid,string name,ref TreeView tv)
    {
    Hashtable ht = new Hashtable();
    int iCount = dt.Rows.Count;
    DataRow dr;
    NodeInfo nodeInfo;
    string [] keyArray = new string[iCount];//保存哈西表中的键值
    //创建所有树节点,保存在哈西表中
    for(int i=0;i<iCount;i++)
    {

    nodeInfo = new NodeInfo(); dr = dt.Rows[i];
    nodeInfo.NodeID = dr[id].ToString();
    keyArray[i] = nodeInfo.NodeID;
    TreeNode tn = new TreeNode (); //创建节点
    tn.ID=  dr[id].ToString();
    tn.Text= dr[name].ToString();

    tn.NodeData= dr[parentid].ToString();
    // } ht.Add(nodeInfo.NodeID,tn);

    }
    //建立节点关系,并将根节点加入到TreeView中
    for(int i=0;i<iCount;i++)
    {
    TreeNode tn = (TreeNode)ht[keyArray[i]];

    if(tn.NodeData  == null || tn.NodeData == "")  tv.Nodes.Add(tn);//这是根节点

    else //这是子节点
    {
    TreeNode tnd1 = (TreeNode)ht[tn.NodeData];//找父节点对象,注意:可能找不到父节点对象
    if(tnd1!=null)
    tnd1.Nodes.Add(tn);//找到父节点:把该节点加到父节点的子节点列表中
    else
    {
    //未找到父节点:或把它设为根节点,或抛弃,你看着办了
    tv.Nodes.Add(tn); //设为根节点
    }
    }
    }
    }
    很简单的,自己看吧
      

  9.   

    节点有个url,你可以加上,以后点的时候取出来
      

  10.   

    http://expert.csdn.net/Expert/topic/2093/2093882.xml?temp=.4099848
      

  11.   

    递归时你的节点的ID和父节点的ID不能相同的,否则会死循环
      

  12.   

    有个问题:
    树结构载入成功后,为什么点击节点的时候会出现“网页发生错误”的信息???
    同时treeview不响应SelectIndexChange()事件,而treeview又没有单击事件,怎么响应呢?
      

  13.   

    点击treeview的节点时不触发SelectIndexChange()事件
    我把节点信息都保存在了TreeNode下的NodeData下了,在点击树节点时,想在窗体的右侧现实选中节点的树信息,但是没有反应,请问是怎么回事呢?下面是SelectedIndexChange事件的代码:
    private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
    {
    string[] sa=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex).NodeData.Split('|');
    Response.Write("<script>alter('"+TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex).NodeData+")</script>");
    }
      

  14.   

    treeview的autopostback设置为true时才能触发SelectedIndexChange事件,但这会导致页面闪烁。
      

  15.   

    这样肯定不行啦,一点击到下一节点就收回到根节点了另外有个问题,为什么要分为客户端操作和服务器端操作呢???
    对于上面的问题我是参照如下进行操作的,可是问题就是“一点击到下一节点就收回到根节点了”参考资料:
    ----------------------------------------------------------------------------
    用.net控件TreeView而展开时不刷新的变通方法主要有以下步骤:  
     
    1。在Page_Load中为你的TreeView添加以下属性,这句话为TreeView添加Click时的回发事件。  
     
    TreeView1.Attributes["OnClick"]  =  @"javascript:  window.setTimeout('__doPostBack(\'TreeView1\',\'\')',  0,  'JavaScript')";  
     
    2。在.aspx页面文件中添加一个隐藏的Button用来产生TreeView的回发事件:  
     
    <INPUT  id="Button1"  style="DISPLAY:none;"  type="button"  value="Button"  name="Button1"  runat="server">  
     
               这个Button必须为Html控件,并将其转为在服务器端运行。  
               style="DISPLAY:none;"该句用来在页面隐藏Button。  
               在Visual.net的设计界面双击该Button产生以下事件:  
               private  void  Button1_ServerClick(object  sender,System.EventArgs  e)  
               {  
                             
               }  
               这里不用添加任何代码,目的是当服务器处理该页面并发送给客户端时产生下面客户端脚本:  
               <script  language="javascript">  
               <!--  
               function  __doPostBack(eventTarget,  eventArgument)  {  
                           var  theform  =  document.Form1;  
                           theform.__EVENTTARGET.value  =  eventTarget;  
                           theform.__EVENTARGUMENT.value  =  eventArgument;  
                           theform.submit();  
               }  
               //  -->  
               </script>  
               这段代码用于回应TreeView的Click事件。此代码不用手工添加。。  
     
    3。好大功告成为你的TreeView添加TreeView1_SelectedIndexChange事件:  
               在设计界面,TreeView上右键属性事件。。找到SelectedIndexChange双击。。在cs文件中产生。。  
               private  void  TreeView1_SelectedIndexChange(object  sender,  Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs  e)  
               {  
                                         
               }  
               在里面添加测试代码  
     
               Microsoft.Web.UI.WebControls.TreeNode  NewNode=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex);  
               Response.Write(NewNode.GetNodeIndex());  
    ----------------------------------------------------------------------------我被这个问题搞死了,各位兄弟帮帮忙吧,:(
      

  16.   

    xml+xslt
    可以满足你的要求
    http://expert.csdn.net/Expert/TopicView1.asp?id=2303525
      

  17.   

    有具体的解决办法吗?目前的情况是这样:
    左侧是一个treeview控件,右侧是树控件对应的数据表的管理(添加父项,添加子项,删除,保存),数据载入是成功了,点击treeview也能响应把数据取出来,但是取了一次后树就不能再展开了,对此感到很疑惑,而且单步跟踪代码也没发现异常,就是一点击了一次树节点后树就在也展不开了。(我将autopostback置为false了的)
      

  18.   

    同时我安装的树型控件为什么没有onclick事件,这样对吗?
    我安装的文件是“iewebcontrols.msi”