9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦>學習英語>專業英語>計算機英語>

數據庫中樹形圖的用法

時間: 長思709 分享

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

  數據庫中樹形圖的用法的用法如下:

  樹形圖用于顯示按照樹形結構進行組織的數據,其用途比較廣泛,如計算機中的文件系統(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

數據庫中樹形圖的用法

數據庫中樹形圖的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數據庫中樹形圖的用法的用法,希望對你們有用。 數據庫中樹形圖的用法的用法如下: 樹形圖用于顯示按照樹形結構進行組織的數據,其用途比較廣泛,如計算機中的文件系統(
推薦度:
點擊下載文檔文檔為doc格式

精選文章

  • 數據庫中using的用法
    數據庫中using的用法

    數據庫中using的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數據庫中using的用法的用法,希望對你們有用。 數據庫中using的用法的用法如下: 使用

  • 數據庫中update的用法
    數據庫中update的用法

    數據庫中update的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數據庫中update的用法的用法,希望對你們有用。 數據庫中update的用法的用法如下: 首

  • 數據庫中union的用法
    數據庫中union的用法

    數據庫中union的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數據庫中union的用法的用法,希望對你們有用。 數據庫中union的用法的用法如下: UNIO

  • 數據庫中top的用法
    數據庫中top的用法

    數據庫中top的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數據庫中top的用法的用法,希望對你們有用。 數據庫中top的用法的用法如下: 在編寫程

543252 主站蜘蛛池模板: 午夜精品久久久久久久2023| 国产精品国产自产拍在线| 91精品乱码一区二区三区| 国产妇女馒头高清泬20p多毛| 日产无人区一线二码三码2021| 亚洲 卡通 欧美 制服 中文| 久久影院午夜伦手机不四虎卡| 麻豆人妻| 亚洲一区二区三区四区三级视频 | 国产蜜臀精品一区二区三区| 内射中出无码护士在线| 精品婷婷色一区二区三区| 97精品国产91久久久久久久| 欧产日产国产精品精品| 欧美人与zoxxxx另类| 国产精品久久久国产盗摄| 亚洲欧美综合一区二区三区| 野花韩国高清电影| 国产精品v片在线观看不卡| 国产精品无码mv在线观看| 久久99热只有频精品6狠狠| 成人无套少萝内射中出| 免费国产黄线在线观看| 国产乱人伦偷精品视频下| 无码国产精品一区二区VR老人 | 亚洲午夜福利AV一区二区无码| 亚洲欧美高清在线精品一区二区| 亚洲欧美综合中文| 中文字幕人妻在线精品| 在线精品视频一区二区三四| 免费看成人毛片无码视频| 久久经精品久久精品免费观看| 国产在线精品第一区二区| 人人妻人人添人人爽日韩欧美 | 婷婷六月色| 成全高清在线播放电视剧| 欧美日韩另类国产| 国产福利社区一区二区| 亚洲乱理伦片在线观看中字| 九九热精品在线免费视频| 国产乱久久亚洲国产精品|