Ik ben bezig met een treeview te maken die een overzicht geeft van een database. De database is "plat" opgebouwd. De structuur wil ik als volgt visualiseren:
De tabel is dan weer (niet zozeer voor deze treeview maar voor de rest van mijn programma dat wel al naar behoren werkt, dus wijzigen: liever niet :-)) als volgt opgebouwd:
Allereerst haal ik de data van de database uit de database en zet ik die in een array als volgt:
Maar nu komt the tricky part in mijn ogen. Al die dingen structureel in die treeview proppen. Zo ver kom ik:
code:
Etc.1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [Projectdeel]
|
+-[Hoofdgroep1]-+
| |
| +-[Subgroep1]
| +-[Subgroep2]
| +-[Subgroep3]
|
|
+-[Hoofdgroep2]-+
|
+-[Subgroep1]
+-[Subgroep2]
+-[Subgroep3] |
De tabel is dan weer (niet zozeer voor deze treeview maar voor de rest van mijn programma dat wel al naar behoren werkt, dus wijzigen: liever niet :-)) als volgt opgebouwd:
code:
De structuur lijkt me opzich eigelijk ideaal om een treeview van te maken. En ik snap dan ook wel hoe ik ongeveer die nodes wil toevoegen. Maar ik loop wegens mijn magere ervaring met Visual Basic tegen technische problemen op.1
2
3
4
5
6
7
8
9
10
11
12
| [Tabel Projectdelen] Id Projectdeel [Tabel Hoofdgroepen] Id ProjectdeelId Hoofdgroep [Tabel Subgroepen] Id ProjectdeelId HoofdgroepId Subgroep |
Allereerst haal ik de data van de database uit de database en zet ik die in een array als volgt:
Visual Basic:
En dat doe ik dan ook voor Projectdelen en Hoofdgroepen, alleen hebben hun arrays respectievelkijk 2 en 3 dimensies. Dus elke array heeft als eerste dimensie zijn eigen Id, als 2de zijn naam, als 3de de eventueel bovenliggende groep en de 4de ook een eventueel daarboven liggende groep.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| ' --------------------------------------------------------------------- ' Data ophalen uit tblCalculatieSubgroepen Dim tblCalculatieSubgroepenpDbAdapter As OleDbDataAdapter = New OleDbDataAdapter("SELECT Subgroep, Id, HoofdgroepId, ProjectdeelId FROM tblCalculatieSubgroepen", pConnection) Dim tblCalculatieSubgroepenpDataset As DataSet = New DataSet ' Probeer data op te halen en geef indien fout een foutmelding Try tblCalculatieSubgroepenpDbAdapter.Fill(tblCalculatieSubgroepenpDataset) Catch ex As OleDbException MsgBox("Fout: " & ex.Message & "Project Id:" & wizCalculatieId) Return End Try ' Array aanmaken van de Subgroepen Dim wizSubgroepenArray(tblCalculatieSubgroepenpDataset.Tables(0).Rows.Count - 1, 3) As String For i As Integer = 0 To tblCalculatieSubgroepenpDataset.Tables(0).Rows.Count - 1 wizSubgroepenArray(i, 0) = tblCalculatieSubgroepenpDataset.Tables(0).Rows(i)("Subgroep") wizSubgroepenArray(i, 1) = tblCalculatieSubgroepenpDataset.Tables(0).Rows(i)("ProjectdeelId") wizSubgroepenArray(i, 2) = tblCalculatieSubgroepenpDataset.Tables(0).Rows(i)("HoofdgroepId") wizSubgroepenArray(i, 3) = tblCalculatieSubgroepenpDataset.Tables(0).Rows(i)("Id") Next ' --------------------------------------------------------------------- |
Maar nu komt the tricky part in mijn ogen. Al die dingen structureel in die treeview proppen. Zo ver kom ik:
Visual Basic:
Maar wat ik nu eigelijk doe is een for loop in een forloop in het toevoegen van een node, enja ALS dat al kan is het heel erg onoverzichtelijk! Kan iemand mij vertellen hoe ik dit beter kan aanpakken? (Ja heb het niet verder geprobeerd af te maken want VS.NET gaf me al aan dat ik fout bezig was).
1
2
3
4
5
| ' --------------------------------------------------------------------- For i As Integer = 0 To wizProjectdelenArray.GetLength(0) - 1 tviewWizard8Overzicht.Nodes.AddRange(New TreeNode() {New TreeNode(wizProjectdelenArray(i, 0), New TreeNode() {For i2 as Integer = 0 To wizHoofdgroepenArray.GetLength -1 New TreeNode("Hoofdgroep 1", New TreeNode() {New TreeNode("Subgroep 1")}) Next })}) Next |