Beste devvers, op een form heb ik 2 controls naast elkaar gedocked, een TreeView en een DataGrid.
Nu wil ik dat als iemand op zo'n subgroep klikt dat dan de datagrid ernaast alle details (dus alle rows in tblDetails die in de column SubgroepId het Id hebben van de subgroep die je in de treeview aanklikt.
Hoe ik een event maak voor het klikken, hoe je een datagrid vult en hoe ik detecteer of de node uit de treeview waarop je klikt wel een subgroep is weet ik wel maar het probleem is dat ik niet weet hoe ik moet bijhouden welke Node welk SubgroepId heeft.
Ik vul de treeview als volgt:
Zoals je ziet maak ik wel een array aan voor de Id's als ik ze uit de database haal, maar die blijft gewoon in de Sub, en is niet eens buiten de for loop te gebruiken. Een oplossing die ik kan toepassen is een public string maken en daarin voor elke subgroep die ik toevoeg aan de treeview "NodeIndex|SubgroepId," toevoegen en die later met een split functie omtoveren tot een array. Maar dat is niet erg netjes, of is dat de enige oplossing?
code:
De TreeView vul ik met een stukje uit een Acces Database, waarin de volgende 3 tabellen van toepassing zijn: Hoofdgroep, Subgroep en Details. Ze zijn aanelkaar gekoppeld, ze hebben dus elk een column met daarin het Id van de bovenliggende groep. So far so good.1
2
3
4
5
6
7
8
9
10
11
12
| +--------+---------------------+ | Tview | Dgrid | | | | |Hfdgrp1 | Details | | Sbgrp1 | | | Sbgrp2 | | | Sbgrp3 | | |Hfdgrp2 | | | Sbgrp4 | | | Sbgrp5 | | | | | +--------+---------------------+ |
Nu wil ik dat als iemand op zo'n subgroep klikt dat dan de datagrid ernaast alle details (dus alle rows in tblDetails die in de column SubgroepId het Id hebben van de subgroep die je in de treeview aanklikt.
Hoe ik een event maak voor het klikken, hoe je een datagrid vult en hoe ik detecteer of de node uit de treeview waarop je klikt wel een subgroep is weet ik wel maar het probleem is dat ik niet weet hoe ik moet bijhouden welke Node welk SubgroepId heeft.
Ik vul de treeview als volgt:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Private Sub fillTreeSide() tViewSide.Nodes.Clear() Dim pHoofdgroepen As DataSet Dim pSubgroepen As DataSet pHoofdgroepen = sqlGet("SELECT * FROM tblHoofdgroepen", "tmp") Dim pHoofdgroepenArray(pHoofdgroepen.Tables(0).Rows.Count - 1) As String For i As Integer = 0 To pHoofdgroepen.Tables(0).Rows.Count - 1 pHoofdgroepenArray(i) = pHoofdgroepen.Tables(0).Rows(i)("HoofdgroepId") tViewSide.Nodes.Add(pHoofdgroepen.Tables(0).Rows(i)("Hoofdgroep")) pSubgroepen = sqlGet("SELECT * FROM tblSubgroepen WHERE HoofdgroepId = " & pHoofdgroepenArray(i), "tmp") Dim pSubgroepenArray(pHoofdgroepen.Tables(0).Rows.Count - 1, pSubgroepen.Tables(0).Rows.Count - 1) For j As Integer = 0 To pSubgroepen.Tables(0).Rows.Count - 1 pSubgroepenArray(i, j) = pSubgroepen.Tables(0).Rows(j)("Subgroep") tViewSide.Nodes(i).Nodes.Add(pSubgroepenArray(i, j)) Next Next tViewSide.ExpandAll() pHoofdgroepen.Dispose() pSubgroepen.Dispose() End Sub |
Zoals je ziet maak ik wel een array aan voor de Id's als ik ze uit de database haal, maar die blijft gewoon in de Sub, en is niet eens buiten de for loop te gebruiken. Een oplossing die ik kan toepassen is een public string maken en daarin voor elke subgroep die ik toevoeg aan de treeview "NodeIndex|SubgroepId," toevoegen en die later met een split functie omtoveren tot een array. Maar dat is niet erg netjes, of is dat de enige oplossing?
[ Voor 6% gewijzigd door Verwijderd op 13-01-2006 11:01 ]