最近在csdn上通过解答Treeview狂拿分,还是把这个的使用发出来分享一下吧。
这个在msdn上面可以下到安装文件,然后按照上面的教程安装就对了,我记得有几步要在CMD里面运行。安装后会得到这个Microsoft.Web.UI.WebControls.dll
在专案(PS:我使用的是繁体版visual studio .net,所以有些名词不一样)的reference里引入这上面那个DLL,记得是在COM组件里加。加好之后可以看到左边的工具栏里就有了标题里说的那四个控件了,就可以拖进html设计器中使用。
关于toolbar:这个控件唯一要讲的是抓它的各个按钮的事件
Select Case CType(sender, Microsoft.Web.UI.WebControls.ToolbarButton).Index
            Case "0"
第一个按钮
            Case "1"
第二个按钮
end Select

关于Treeview:
第一个问题就是很多人说抓不到treeview的selectedindexchange事件,实际上是因为要将这个控件的autopostback=true了才行。但是这样做每当有indexchange事件发生时页面就会刷新,而且闪动很厉害,客户对页面闪动这个问题简直就是深恶痛绝,所以得想别的办法。
第二个问题就是无刷新抓onselectedindexchange事件。首先要autopostback=false,然后
 Dim strTreeName As String = "TreeView1"
        Dim strRef As String = Page.GetPostBackEventReference(TreeView1)
        '使treeview只有在selectedindex change的時候才刷新的javascript
        Dim strScript As String = "<script language='JavaScript'> " & vbCrLf _
        & "<!-- " & vbCrLf _
        & " function initTree() { " & vbCrLf _
        & "  " & strTreeName & ".onSelectedIndexChange = function() { " & vbCrLf _
        & "   if (event.oldTreeNodeIndex != event.newTreeNodeIndex) " & vbCrLf _
        & "    this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex); " & vbCrLf _
        & "   window.setTimeout('" & strRef.Replace("'", "\'") & "', 0, 'JavaScript'); " & vbCrLf _
        & "  } " & vbCrLf _
        & " } " & vbCrLf _
        & "// --> " & vbCrLf _
        & "</script>"

        Page.RegisterClientScriptBlock("InitTree", strScript)

最后在html编辑器里的body里加上onload="initTree()"这样就可以无刷新抓那个的事件了

第三个是如何写递归函数来初始化树,我的例子是将数据库中数据抓出来,按照数据库中设计的父节点来依次初始化的
 Private Sub intiTree(ByRef Nds As TreeNodeCollection, ByVal parentID As Integer, ByVal rootid As Integer)
        '初始化treeview(遞歸)尋找以當前所選節點為根的樹,如果parentid=0則該節點為根節點,若rootid=0則該節點為子節點
        '以此為條件進行篩選
        Dim dv As New DataView
        Dim drv As DataRowView
        Dim tmpNd As TreeNode
        Dim i As Integer
        Try
            dv.Table = ds.Tables("tree")
            If parentID = 0 Then
                dv.RowFilter = "dcID=" & rootid & ""
            Else
                dv.RowFilter = "PdcID=" & parentID & ""
            End If
            For Each drv In dv
                tmpNd = New TreeNode
                strID = drv("dcID")
                tmpNd.ID = strID
                tmpNd.Text = drv("cdsc")
                Nds.Add(tmpNd)
                intiTree(Nds(Nds.Count - 1).Nodes, CType(strID, Integer), 0)

            Next
        Catch ex As Exception
            Response.Write(ex.ToString)
        End Try
    End Sub
还有些语句比较有用
   Dim curnode As TreeNode = TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex)  '獲得當前節點對象的引用
 Dim newnode As TreeNode = New TreeNode '生成一個新節點並賦值
            newnode.Text = “addstr”
            curnode.Nodes.Add(newnode) '在當前節點下面增加一個新的節點
            curnode.Expanded = True '使當前節點和新增節點處於展開狀態            TreeView1.SelectedNodeIndex = newnode.GetNodeIndex() '置新節點為選擇狀態

第三个Multipage:
只有一个地方需要注意,就是在从第二页开始,在multipage里加入控件的话,studio不会自动在code behind里加入这些控件声明,所以最好是先把所有的控件写好了再加multipage。