我用treeview做了一个树,出现了下面的问题:我想点击左边的+号实现打开子树,点击右边的内容打开超链接。做法如下: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load        ConnStr = System.Configuration.ConfigurationSettings.AppSettings("kingseer_dbConnectionString").ToString        MyConnection = New SqlConnection(ConnStr)
        MyConnection.Open()
            AddBuildTreeNodes_root()
Sub AddBuildingTreeNodes(ByVal parentNode As TreeNode, ByVal strSql As String)
                Dim insert_yhmc As SqlCommand = New SqlCommand(strSql, MyConnection)        Dim rs_yhmc As SqlDataReader = insert_yhmc.ExecuteReader
        Dim node As New TreeNode
        Do While rs_yhmc.Read            node = New TreeNode(rs_yhmc.Item("b_name"))
            node.Value = "Buil" + rs_yhmc.GetInt32(1).ToString() + "," + parentNode.Value.Substring(4) 'Substing方法用来去掉Buil
            parentNode.ChildNodes.Add(node)
            node.ChildNodes.Add(New TreeNode(""))
            
        Loop       
        node.NavigateUrl = "index.html"
问题1:======================我在点击节点内容的时候想让他指向index.html页面,可是放在这里没有出现结果。
    End Sub问题2:由于树的节点比较多,我在点击节点的时候,子节点虽然打开了,但是这个页面显示还是把第一个节点放在最上面,我还在往下拉动滚动条才能看到打开的节点。如何才能让打开的节点显示在用户可以看到的范围之内呢?谢谢!

解决方案 »

  1.   

    谢谢大家,第一个问题解决了:Sub AddBuildingTreeNodes(ByVal parentNode As TreeNode, ByVal strSql As String)
                    Dim insert_yhmc As SqlCommand = New SqlCommand(strSql, MyConnection)        Dim rs_yhmc As SqlDataReader = insert_yhmc.ExecuteReader
            Dim node As New TreeNode
            Do While rs_yhmc.Read            node = New TreeNode(rs_yhmc.Item("b_name"))
                node.Value = "Buil" + rs_yhmc.GetInt32(1).ToString() + "," + parentNode.Value.Substring(4) 'Substing方法用来去掉Buil
                parentNode.ChildNodes.Add(node)
                node.ChildNodes.Add(New TreeNode(""))node.NavigateUrl = "index.html"
    '放在循环里面
                
            Loop       
            
        End Sub
    请大家帮忙我解决第二个问题。谢谢
      

  2.   

    也就是说如何能让treeview局部刷新?
      

  3.   

    问题2:在body的onload时候调scrollToSelectedNode()
    其中TreeView1_Data改成{你的TreeView的名字}_Data,这是TreeView自动生成的一个js对象function scrollToSelectedNode()
    {
        var node = getSelectedNode();
        var offset = 10;
        
        if(node!=null)
        {
            var rec = node.getBoundingClientRect(); 
            window.scrollTo(0,rec.top-offset);
        }
    }
    function getSelectedNode()
    {
        var data=TreeView1_Data;
        var id = data.selectedNodeID.value;
        var node = null;
        
        if (id.length > 0) 
        {
            node=document.getElementById(id);
        }    return node;
    }
      

  4.   

    //****设置一下treeview target属性就可以了三
      

  5.   

    谢谢:mmqingfeng(漠漠青峰) 
    您的方法不错,不过跳转的时候不是在原地打开,他每次都把点击到的节点跑到上面,能否像csdn那样,在原地打开?谢谢zhangxiaopin(zxp):请问treeview target属性该如何设置?谢谢!
      

  6.   

    有没有高手解答一下请问treeview target属性该如何设置?
      

  7.   

    绑定的问题,每次点中TreeView后,IE会自动刷新页面,你可以在初始化的时候设置IspostBack的属性.
      

  8.   

    谢谢楼上,请看看我的loadProtected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load        ConnStr = System.Configuration.ConfigurationSettings.AppSettings("kingseer_dbConnectionString").ToString        MyConnection = New SqlConnection(ConnStr)
            MyConnection.Open()
            If Not IsPostBack And Session("a_id") = "" Then
                AddAreaTreeNodes()
            ElseIf Not IsPostBack And Session("a_id") <> "" Then
                AddBuildTreeNodes_root()
            End If    End Sub请问IsPostBack的属性怎么初始化?谢谢!