Halloj! Eftersom du inte har skrivit ut vad dina object innehåller (nycklar, identifierare mm) så... men typ så här: Jag använder en <b><code>Lopa kollektioner in i trästruktur
Först lite kod att granska
<code>
//-----------------------------------
// regionsnoden nivå 2
//-----------------------------------
//Skapar kollektionsobjektet och fyller det från datbasen
CRegionCollection col = new CRegionCollection();
col.FindAll();
// Loopar i genom KOllektionen och fyller treeviewn med värden
foreach(CRegion reg in col)
{
RegionTreeNode nod = new RegionTreeNode(reg);
obj.Nodes.Add(nod);
obj.
}
//-----------------------------------
// Districtnoden nivå 3
//-----------------------------------
//
CDistrictCollection DCol = new CDistrictCollection();
DCol.FindAll();
foreach (CDistrict cReg in DCol)
{
DistrictTreeNode Dnod = new DistrictTreeNode(cReg);
obj.Nodes.Add(Dnod);
}
</code>
Vad är nu detta. Jo här laddar jag upp två olika delar från databasen till vars en kollektion fyller en trädstruktur och problemet är att de är på samma nivå i strukturen. Region som den ena heter ligger över District i herarkin. I Districts kollektionnen så finns det på varje rad en fält som heter LevelID och är en relation till olika av posterna i Region. Dvs Det finns flera Distrikt kopplade till en Region.
Det jag nu vill göra är att fylla detta i en trädstruktur där region är första nivån och Distrikt är den andra.
Eftersom jag har en relation mellan tabellerna med RegionsID i distrikttabellen kan jag loppa igenom kolletionenen. Så min önskan är:
1. Ta första regionen i Regionskollektionen. och skriv ute det i trädstrukturen.
2. Hämta sedan alla kopplade distrikt i distriktkollektionen och skriv ut dem i trädstrukturen under den första region
3. Upprepa samma sak med nästa region
Hoppas ni hänger med så frågan är hur fasen kodar jag detta? :-)
/TyronneSv: Lopa kollektioner in i trästruktur
<code>
CRegionCollection col = new CRegionCollection();
col.FindAll();
foreach(CRegion reg in col)
{
RegionTreeNode nod = new RegionTreeNode(reg);
obj.Nodes.Add(nod);
CDistrictCollection DCol = new CDistrictCollection();
// DCol.FindAll();
DCol.FindDistrictsFromRegion(reg.DittUnikaIdPåRegion);
foreach (CDistrict cReg in DCol)
{
DistrictTreeNode Dnod = new DistrictTreeNode(cReg);
nod.Nodes.Add(Dnod);
}
}
</code>
Vill du inte läägga till en metod så funkar kanske detta. Allt beroende på vad su använder som identifierare för en region.
<code>
CRegionCollection col = new CRegionCollection();
col.FindAll();
CDistrictCollection DCol = new CDistrictCollection();
DCol.FindAll();
foreach(CRegion reg in col)
{
RegionTreeNode nod = new RegionTreeNode(reg);
obj.Nodes.Add(nod);
foreach (CDistrict cReg in DCol)
{
if (reg.DittUnikaIdPåRegion== cReg.DittUnikaIdPåRegion)
{
DistrictTreeNode Dnod = new DistrictTreeNode(cReg);
nod.Nodes.Add(Dnod);
}
}
}
</code>
OBS, bara snabba exempel på hur du kan lösa det utan att säga vilket som är bäst mm.Sv:Lopa kollektioner in i trästruktur
Guid RegioID flr Regionen och guid DistrictID för Distriktet, men jag tror att jag förstår dina exempel
Eftersom jag då använder mig av:
<code>
obj.Nodes.Add(nod);
</code>
kan jag använda samma eller måsta jag på något sätt styra så att Distrikten skrivs ut under just den regionen?
/TyronneSv: Lopa kollektioner in i trästruktur
obj.Nodes.Add(nod);
</code>
kan jag använda samma eller måsta jag på något sätt styra så att Distrikten skrivs ut under just den regionen?</b>
Hej
Kolla hur jag har gjort däruppe. För varje region som loopas så lägger jag till distrikt för just den regionen på den noden som skapas. Kolla på det nedan eller kolla i hjälpen hur noder byggs upp.
<code>
foreach(CRegion reg in col)
{
RegionTreeNode nod = new RegionTreeNode(reg);
obj.Nodes.Add(nod);
foreach (CDistrict cReg in DCol)
{
if (reg.DittUnikaIdPåRegion== cReg.DittUnikaIdPåRegion)
{
DistrictTreeNode Dnod = new DistrictTreeNode(cReg);
//Kolla på nedanstående, m,an lägger till childnoder till den nod man har skapat ovan
nod.Nodes.Add(Dnod);
}
}
</code>