A. 在vb.net中,如何將資料庫的內容更新到treeview
treeview的代碼必須是自己根據實際情況編寫的,不是像DATAGRIDVIEW那樣簡單綁定控制項就可以顯示的。
你可以先學習了解一下treeview的屬性。
B. vb.net中treeview的數據綁定
第一步:定義兩個DataTable對象,並把資料庫中的兩個表分別讀入這兩個DataTable對象中;如Dt1用於存儲省名表,Dt2用於存儲省轄市名表。
第二步:先綁定Dt1,以循環方式向TreeView添加Node。其中,Node.index就是Dt1中id欄位的值,Node.Text就是Dt1中name欄位的值。
第三步:綁定Dt2,同樣以循環方式向TreeView添加Node。這里稍微有點復雜,需先判斷下已經存在於TreeView中的節點,如果節點的索引是3,則向這個節點下添加id為3xx的子節點。
獲得當前節點的索引值的語句是:dim s as Integer = TreeView1.Nodes(i).Nodes.IndexOf(Node)
為當前節點添加子節點的語句是:TreeView1.Nodes(i).Nodes(s).Nodes.Add(Node)
最後的效果是:TreeView中有北京、上海、山東等節點,點擊"山東"則會展開其下面的"濟南"、"青島"、"煙台"等子節點。
C. VB.NET中treeview的使用
Nodes 集合包含分配給 TreeView 控制項的所有 TreeNode 對象。此集合中的樹節點稱作根樹節點。隨後添加到根樹節點上的任何樹節點稱作子節點。由於每個 TreeNode 都可以包含其他 TreeNode 對象的集合,您可能會在循環訪問集合時覺得很難確定自己在樹結構中的位置。您可以使用 PathSeparator 字元串值來分析 TreeNode.FullPath 字元串,以確定 TreeNode 標簽的起始和終止位置。
可以在樹節點旁顯示圖像,方法是將一個 ImageList 分配給 ImageList 屬性,然後通過引用 Image 在 ImageList 中的索引值來分配該 Image。使用下面的屬性分配圖像:
將 ImageIndex 屬性設置為當樹節點未選定時所顯示的 Image 的索引值。
將 SelectedImageIndex 屬性設置為當樹節點被選定時要顯示的 Image 的索引值。
ImageIndex 和 SelectedImageIndex 屬性值所引用的圖像是所有分配給 Nodes 集合的樹節點顯示的默認圖像。每個樹節點都可以通過設置 TreeNode.ImageIndex 和 TreeNode.SelectedImageIndex 屬性來取代默認的圖像。
樹節點可以展開,以顯示下一級子樹節點。用戶可以在 TreeNode 旁顯示加號 (+) 按鈕時通過單擊加號 (+) 按鈕來展開 TreeNode,或者可以通過調用 TreeNode.Expand 方法來展開 TreeNode。若要展開 Nodes 集合中的所有子樹節點級別,請調用 ExpandAll 方法。若要折疊子 TreeNode 級別,可以調用 TreeNode.Collapse 方法,也可以在 TreeNode 旁顯示減號 (-) 按鈕時按減號 (-) 按鈕。還可以通過調用 TreeNode.Toggle 方法在展開和折疊狀態之間切換。
樹節點可以選擇性地顯示復選框。若要顯示復選框,請將 TreeView 的 CheckBoxes 屬性設置為 true。對於處於選中狀態的樹節點,Checked 屬性設置為 true。
注意
從 BeforeCheck 或 AfterCheck 事件內設置 TreeNode.Checked 屬性將導致該事件被多次引發並可能產生意外行為。例如,您可以在遞歸更新子節點時在事件處理程序中設置 Checked 屬性,以便用戶不必逐個展開並選中每個節點。如果未將 TreeViewEventArgs 的 Action 屬性設置為 TreeViewAction.Unknown,則若要防止該事件被多次引發,需為僅執行遞歸代碼的事件處理程序添加邏輯。有關如何進行此操作的示例,請參見 AfterCheck 或 BeforeCheck 事件的示例部分。
通過設置 TreeView 控制項的一些顯示和樣式屬性,可以更改此控制項的外觀。如果將 ShowPlusMinus 設置為 true,則會分別在每個可展開或折疊的 TreeNode 旁顯示加號或減號按鈕。如果將 ShowRootLines 屬性設置為 true,TreeView 則會顯示聯接所有根樹節點之間的連線。通過將 ShowLines 屬性設置為 true,可以顯示子樹節點與其根節點之間的連線。如果將 HotTracking 屬性設置為 true,那麼當滑鼠指針移過樹節點標簽時,樹節點標簽的外觀將發生變化。如果啟用熱跟蹤,樹節點標簽將具有超鏈接的外觀。也可以完全自定義 TreeView 控制項的外觀。若要執行此操作,請將 DrawMode 屬性設置為 TreeViewDrawMode.Normal 以外的值並處理 DrawNode 事件。
注意
在運行時設置 CheckBoxes、Scrollable、ImageIndex 和 SelectedImageIndex 屬性時,將重新創建 TreeView 句柄(請參見 Control.RecreateHandle)以更新控制項的外觀。這將折疊除選定的 TreeNode 之外的所有樹節點。
下面的代碼示例闡釋了如何使用 TreeView 控制項。
Private Sub InitializeTreeView()
treeView1.BeginUpdate()
treeView1.Nodes.Add("Parent")
treeView1.Nodes(0).Nodes.Add("Child 1")
treeView1.Nodes(0).Nodes.Add("Child 2")
treeView1.Nodes(0).Nodes(1).Nodes.Add("Grandchild")
treeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Great Grandchild")
treeView1.EndUpdate()
End Sub
From MSDN
D. vb.net 2010 中treeview的問題
0
0,0
0,1
0,1,0
0,1,1
0,1,2
0,1,2,0
1
1,0
1,1
,為每節路徑分隔符。數字為每節從零開始的索引,現在代替文本。其實每句話就是用數組,按順序來。
先新建0,如果有下一節,便是0,0,那麼新建後面的0子節點,沒有則下一行。
應該沒有什麼困難吧。
E. vb.net控制項treeview從資料庫獲得數據分層顯示
說實話一般不是你這樣存儲的,一般是用一個欄位存儲ID號,然後用另一個欄位存儲上級單位的ID號,然後用遞歸函數生成TreeView。建議你增加一個欄位,然後將編號解析出的上級單位存儲在裡面。以下是我的一個程序用的遞歸函數:
表名是unit,其中包含了單位名稱unit_name,編號unit_id,Unit_upper就是上級單位的id號。
調用方式是 addtree(ds1, TreeView1.Nodes, 0),其中ds1是一個DataSet,對應單位的表,treeview1是控制項名稱,0是固定值,與表中根節點部門的Unit_upper一致(這個單位沒有上級)。
Public Function addtree(ByVal ds As DataSet, ByVal treename As TreeNodeCollection, ByVal x1 As Integer) As Boolean
Dim dt As DataTable = ds.Tables("unit")
Dim dm As BindingManagerBase = Me.BindingContext(ds, "unit")
Dim dr As DataRow() = dt.Select("unit_upper=" & x1.ToString)
Dim dr1 As DataRow
Dim nd As TreeNode
Dim nd1 As TreeNode
Dim x2 As Integer
If dr.GetLength(0) <> 0 Then
For Each dr1 In dr
nd = treename.Add(dr1("unit_name"))
nd.Tag = (dr1("unit_id"))
x2 = treename.IndexOf(nd)
addtree(ds, treename.Item(x2).Nodes, dr1("unit_id"))
Next
End If
Return True
End Function
F. vb.net從資料庫讀取信息填充treeview做成層次目錄怎麼做
給你一段我曾經寫的代碼,主要是生成TreeView的節點!有什麼不懂的地方你就提!
Public Sub InitializeTreeView(ByVal strvXL As TreeView, ByVal vrsRecordTwo As DataSet)
Dim treBaseNodeOne As TreeNode
Dim treBaseNodeTwo As TreeNode
Dim strDWDM As String
m_rsRecordTwo = g_clsSybase.SelectSC_PD_SBCSB1()
'查找供電局信息
g_clsSybase.SelectRS_ZZJG_ZZJGDMB(m_rsRecordOne)
'添加根節點
Do While m_rsRecordOne.Read
strDWDM = m_rsRecordOne.GetString(0) '獲取單位代碼
treBaseNodeOne = New TreeNode
treBaseNodeOne.Text = m_rsRecordOne.GetString(1).Trim() '獲取單位名稱
treBaseNodeOne.Name = m_rsRecordOne.GetString(1)
treBaseNodeOne.Tag = ""
strvXL.Nodes.Add(treBaseNodeOne)
'添加樹結構第二層
Dim drsTwo() As DataRow
drsTwo = m_rsRecordTwo.Tables(0).Select("SSDW='" & strDWDM & "' and SC__XLBM is null")
For Each dr As DataRow In drsTwo
treBaseNodeTwo = New TreeNode
treBaseNodeTwo.Text = dr.Item("XLMC").ToString.Trim
treBaseNodeTwo.Name = dr.Item("XLMC")
treBaseNodeTwo.Tag = dr.Item("XLBM")
treBaseNodeOne.Nodes.Add(treBaseNodeTwo)
Next
Loop
m_rsRecordOne.Close()
End Sub
G. VB中,怎麼將TreeView綁定到資料庫
'VB利用ADODB連接ACCESS資料庫,執行查詢、刪除操作
'引用MicrosoftActiveXDataObjects2.8Library
Dimselect_idAsString
DimConnStrAsString
PrivateSubCommand1_Click()'刷新
GetValue
EndSub
PrivateSubForm_Load()
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:你文件的路徑abc.mdb;PersistSecurityInfo=False"
TreeView1.LineStyle=tvwRootLines
TreeView1.LabelEdit=tvwManual
GetValue
EndSub
PrivateSubmnu_del_Click()'菜單:刪除
DelRecordselect_id
EndSub
PrivateSubTreeView1_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
DimndAsNode
IfButton=vbRightButtonThen
Setnd=TreeView1.HitTest(x,y)
IfNotndIsNothingThen
IfLeft(nd.Key,1)="R"Then
select_id=nd.Text
Me.PopupMenumnupop
EndIf
EndIf
EndIf
EndSub
PrivateSubTreeView1_NodeClick(ByValNodeAsMSComctlLib.Node)
IfLeft(Node.Key,1)="R"Then
Text1.Text=Node.Text
Text2.Text=Node.Child.Text
EndIf
EndSub
PrivateSubGetValue()
DimiAsInteger
DimCnnAsADODB.Connection
DimRsAsADODB.Recordset
DimCnn_cAsNewADODB.Command
SetCnn=NewADODB.Connection
SetRs=NewADODB.Recordset
Cnn.ConnectionString=ConnStr
WithCnn
.CursorLocation=adUseClient
.Open
EndWith
Cnn_c.CommandType=adCmdText
Cnn_c.CommandText="select*fromPJ"
SetCnn_c.ActiveConnection=Cnn
SetRs=Cnn_c.Execute
TreeView1.Nodes.Clear
IfRs.RecordCount>0Then
Fori=1ToRs.RecordCount
TreeView1.Nodes.Add,,"R"&i,Rs.Fields("BRAND")
TreeView1.Nodes.Add"R"&i,tvwChild,,Rs.Fields("MODEL")
Rs.MoveNext
Next
Rs.Close
EndIf
Cnn.Close
SetCnn_c=Nothing
SetRs=Nothing
SetCnn=Nothing
EndSub
PrivateSubDelRecord(ByValidAsString)
DimiAsInteger
DimCnnAsADODB.Connection
DimRsAsADODB.Recordset
DimCnn_cAsNewADODB.Command
SetCnn=NewADODB.Connection
SetRs=NewADODB.Recordset
Cnn.ConnectionString=ConnStr
WithCnn
.CursorLocation=adUseClient
.Open
EndWith
Cnn_c.CommandType=adCmdText
Cnn_c.CommandText="deletefromPJwhereBRAND='"&id&"'"
SetCnn_c.ActiveConnection=Cnn
SetRs=Cnn_c.Execute'執行刪除
Cnn_c.CommandText="select*fromPJ"
SetRs=Cnn_c.Execute'執行查詢
TreeView1.Nodes.Clear
IfRs.RecordCount>0Then
Fori=1ToRs.RecordCount
TreeView1.Nodes.Add,,"R"&i,Rs.Fields("BRAND")
TreeView1.Nodes.Add"R"&i,tvwChild,,Rs.Fields("MODEL")
Rs.MoveNext
Next
Rs.Close
EndIf
Cnn.Close
SetCnn_c=Nothing
SetRs=Nothing
SetCnn=Nothing
EndSub
H. VB.NET中的treeview控制項
''' <summary>
''' 加入菜單子節點
''' </summary>
''' <param name="tbMenu">菜單表</param>
''' <param name="tvNode">父節點</param>
''' <remarks></remarks>
Private Sub AddNode(ByVal tbMenu As DataTable, ByVal tvNode As TreeNode)
Dim myRow As DataRow() = tbMenu.Select(String.Format("PRMENUID = '{0}'", tvNode.NodeID), "SORTORDER")『查詢子菜單,按SORTORDER欄位排序
Dim strURL As String = String.Empty『菜單鏈接
For Each DataRow In myRow』循環所有子菜單
Dim MainMenuNode As TreeNode = New TreeNode() With {.Text = DataRow.Item("VALUE"), .NodeID = DataRow.Item("MENU_ID")}'實例化一個子節點
If DataRow.Item("URL").ToString.Length > 0 Then
strURL = String.Format("{0}?menuid={1}", DataRow.Item("URL"), DataRow.Item("MENUID"))』菜單鏈接
MainMenuNode.NavigateUrl = strURL
MainMenuNode.IconUrl = "../image/leaf.gif"『菜單圖標
End If
MainMenuNode.SingleClickExpand = True』設置單擊菜單時展開子菜單
MainMenuNode.Expanded = True『默認展開所有菜單
tvNode.Nodes.Add(MainMenuNode)』將子節點添加進父節點
AddNode(tbMenu, MainMenuNode) '利用遞歸生成樹形菜單
Next
End Sub
希望對你有幫助。