2016-03-17 74 views
-2
兩個表一個TreeView

你好,我有這樣的兩個表:填充用vb.net

ID

enter image description here

subDepartment table

然後我用樹狀想要這個結果部門類別

  • 1 MIS系統 1 MIS網絡 1 MIS程序員
  • 2審計活動 2審計DS
  • 3 HRD PA 3 HRD PayBen HRD PS 3 HRD PLD
  • 4會計事務代表 4會計快速消費品
  • 5採購NULL

或這樣

  • MIS

-System
-Networking
-Programmer

  • AUDIT
    -operations
    -DS

  • HRD
    -PA
    -PayBen
    -PS
    -PLD

  • Acounting
    -Sup
    -FMCG

可有人請指導我,謝謝。我無法在互聯網上找到任何解決方案,而且我是vb.net語言的新手。

回答

0

在我的代碼下面,我給你的邏輯。你只需要現在查詢你的表格。

如果您需要說明,請告訴我。

TreeView1.Nodes.Clear() 

    'Create a first node and select it 
    Dim root As TreeNode = TreeView1.Nodes.Add("Test") 
    TreeView1.SelectedNode = root 

    'Create two types of node 
    Dim department As New TreeNode() 
    Dim category As New TreeNode() 

    'Daos (if you create a Department class and subDepartment class) 
    Dim _daoD As New Departments(_cnx) 
    Dim _daoSD As New subDepartments(_cnx) 

    'Lists (depending on classes too) 
    Dim listD As List(Of Department) 
    Dim listSD As List(Of subDepatment) 

    For Each dep As Department In listD 
     'Add a Tree node for a new department 
     department = New TreeNode(dep.department) 
     department.Tag = dep.id 
     root.Nodes.Add(department) 
     TreeView1.SelectedNode = departement 

     For Each subDep As subDepartment In listSubDep 
      'Add a TreeNode for new categories 
      categ = New TreeNode(subDep.category) 
      categ.Tag = subDep.id 
      Nodes.Add(categ) 
     Next 
    Next 

然後,您可以創建4個等級(第一個具有屬性,而第二個表中查詢)

Public Class Department 
    'properties 
     Public Property id As Integer 
     Get 
      Return _ID 
     End Get 
     Set(ByVal Value As Integer) 
      _ID = Value 
     End Set 
    End Property 
    'etc 
End Class 

Public Class Departments 
    Dim _cnx As OracleConnection (if you use Oracle) 
    Public Sub New(ByVal pcnx As OracleConnection) 
     _cnx = pcnx 
    End Sub 

    'Your queries 
End Class 
+0

你好nbadaud,感謝你的快速回復,即時通訊使用vb.net 2008這是你給我的代碼是不適用的。比如「.tag」或者有兩個公開課。也是,我需要對代碼的一點解釋。希望你的回覆。非常感謝。 – Jan

+0

你在代碼中不理解什麼? – nbadaud

+0

不知何故,我沒有得到整個代碼,但幸運的是我解決了它。再次感謝你。 – Jan

0

這裏是我的搜索解決方案。我希望這會幫助有這種問題的人。

昏暗myConnString的String = 「數據源=名稱;初始目錄=數據庫;集成安全性=真」 昏暗daMyName作爲新的SqlDataAdapter 昏暗dsMyName作爲新的數據集 昏暗RECCOUNT作爲整數 昏暗mySelectQuery的String =「SELECT DEPARTMENT.department,從subdept subDept.category右連接上.department.id = subDept.parent」 昏暗MyConnection的作爲新的SqlConnection(myConnString) 昏暗mycommand的作爲新的SqlCommand(mySelectQuery,MyConnection的) myConnection.Open() daMyName部門.SelectCommand = myCommand daMyName.Fill(dsMyName) Dim tbl As D ataTable = dsMyName.Tables(0) RECCOUNT = dsMyName.Tables(0).Rows.Count tvw1.Nodes.Clear()「清除的任何節點,所以我們不一棵樹上加載到樹

Dim nd As TreeNode 
    nd = tvw1.Nodes.Add("DEPARTMENT") 
    Dim parentRow As DataRow 

    Dim rowNdx As Integer 
    rowNdx = 0 
    daMyName.Fill(tbl) 
    Dim Jan As String 
    For Each parentRow In tbl.Rows 
     If rowNdx = recCount Then 
      Exit For 
     End If 
     Jan = dsMyName.Tables(0).Rows(rowNdx)("Department").ToString() 'set the next name 
     Dim Dnode As TreeNode 
     Dnode = tvw1.Nodes.Add(dsMyName.Tables(0).Rows(rowNdx)("department").ToString()) 
     Dim cnode As TreeNode 
     cnode = New TreeNode 
     Do While dsMyName.Tables(0).Rows(rowNdx)("department").ToString() = Jan And rowNdx < recCount 
      'if it changes we need to kick out of Do While 
      cnode = Dnode.Nodes.Add(dsMyName.Tables(0).Rows(rowNdx)("category").ToString()) 
      rowNdx = rowNdx + 1 
      If rowNdx = recCount Then 
       Exit Do 
      End If 
     Loop 
    Next parentRow 
    myConnection.Close()