商務英語計算機英語

資料庫中樹形圖的用法

本文已影響 1.07W人 

資料庫中樹形圖的用法的用法你知道嗎?下面小編就跟你們詳細介紹下資料庫中樹形圖的用法的用法,希望對你們有用。

ing-bottom: 100%;">資料庫中樹形圖的用法

  資料庫中樹形圖的用法的用法如下:

樹形圖用於顯示按照樹形結構進行組織的資料,其用途比較廣泛,如計算機中的檔案系統(Windows中的資源管理器)、企業或公司的組成結構等。我們知道在Windows下VB、PB、Delphi等工具提供了一個功能很強的樹型控制元件TreeView,利用Treeview控制元件可以方便地開發樹形圖。然而在網頁上實現樹形圖就不那麼容易了,現在在中利用微軟提供的Internet Explorer WebControls它使得網頁上的樹形圖開發與在Windows下一樣的方便,一樣的功能強大,甚至更靈活。

本文介紹用Internet Explorer WebControls開發樹形圖的方法,由於樹形圖結構較複雜,使用起來常不知如何下手。筆者結合最近剛為公司用編寫的應用程式管理器這一具體例項,詳細闡述在下如何將Internet Explorer WebControls的使用與資料庫聯絡起來,實現資料分任意多層顯示,方便地進行增加、修改、刪除、移動操作。筆者希望通過對該例項的闡述,達到拋磚引玉的效果,與各位同仁相互交流,共同進步。

Internet Explorer WebControls不在的標準Server Control中,要到微軟的站點上下載,下載地址是:

_DOT_NET_ServerControls/WebControls/

下載安裝後第一次使用時,要右擊工具箱Customize Toolbox…→ Framework Components中找到view後選中,這樣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()

ectionString = application("connectstring")

andText = ""

ection = myConn

ctCommand = myCmd

(ds, "tree")

End Sub

建樹的基本思路是:從根節點開始遞迴呼叫顯示子樹

Private Sub Page_Load(ByVal sender As ct, ByVal e As tArgs) Handles

CreateDataSet()

intiTree(s, 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

e = es("tree")

ilter = "PARENTID=’" & parentId & "’"

For Each drv In dv

tmpNd = New TreeNode()

strId = drv("NODE_ID")

= strId

= drv("NODE_NAME ")

eUrl = drv("ICON")ring

(tmpNd)

intiTree(Nds(t - 1)s, intId)

Next

End Sub

二、增加、刪除樹節點

單純在Treeview 上增加、刪除、修改節點只需用Nodes屬性的Add、 Remove、等方法即可,值得注意的地方是中Treeview的Nodes集合與VS6.0中的區別,VS6.0中的是一個大的集合,而中的是分層的每個Node下都有Nodes屬性。增加、刪除、修改樹節點時與VS6.0相比有很大差別,特別是刪除時。

Private Sub ButAdd_Click(ByVal sender As ct, ByVal e As tArgs) Handles k’在選定的節點下新增子節點

Dim tmpNd As New TreeNode(), NdSel As TreeNode

= GetNewId()

NdSel = odeFromIndex(ctedNodeIndex)’選中的節點

= "新節點"

(tmpNd)

Dim myRow As DataRow

myRow = es("tree")ow()

myRow("NODE_NAME") =

myRow("NODE_DESCRipT") = "新節點" & & "_" &

myRow("PARENT_NAME") =

es("tree")(myRow)

End Sub

Private Sub ButDele_Click(ByVal sender As Object, ByVal e As tArgs) Handles k’刪除選中的節點

Dim idx As String = ctedNodeIndex()

GetNdCol(idx)ve(odeFromIndex(idx))

Dim dv As New DataView(), recNo As Integer

e = es("tree")

ilter= "NODEID=" & NdId

te(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 = s

Else

tmpNds = s(CInt(idxs(0)))s

For i = 1 To cnt - 1

tmpNds = tmpNds(CInt(idxs(i)))s

Next

End If

Return tmpNds

End Function

三、修改、移動樹節點

由於伺服器控制元件不支援滑鼠拖動事件,所以不能象Windows程式那樣通過拖動移動節點,這裡是通過選擇父節點的方式。移動是通過在原位置刪除,新位置新增實現的,要注意在刪除時先儲存節點資訊。

Private Sub TreeView1_SelectedIndexChange(ByVal sender As Object, ByVal e As ViewSelectEventArgs) Handles ctedIndexChange

Dim dv As New DataView()

e = es("tree")

Dim tmpNd As TreeNode = TreeNdSel(ode), tmpNds As TreeNodeCollection

ilter= "NODEID=" &

dv(0)("NODE_DESCRIPT") =

dv(0)("ADDRESS") =

dv(0)("TARGET") =

dv(0)("ICON") =

If dv(0)("PARENTID")ring <> e Then

‘移動節點

dv(0)("PARENT_NAME") = e

If e = "ROOT" Then

tmpNds = s

Else

tmpNds = FromIdToNode(e, s)s’新的父節點的Nodes集合

End If

GetNdCol(ode)ve(tmpNd)

(tmpNd)

End If

=

eUrl =

tmpNd = odeFromIndex(ctedNodeIndex)

ilter= "NODEID=" &

= dv(0)("NODENAME")ring

= dv(0)("ADDRESS")ring

= dv(0)("TARGET")ring

= dv(0)("ICON")ring

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 = ID Then

Return tmpNd

Exit Function

End If

tmpNd1 = FromIdToNode(ID, s)

If Not (tmpNd1 Is Nothing) Then

Return tmpNd1

Exit Function

End If

Next

Return Nothing

End Function

猜你喜歡

熱點閱讀

最新文章

推薦閱讀