Gå til innhold

Hierarkisk treeview fra en hierarkisk oppbygd database


Anbefalte innlegg

Heisann,

 

Jeg holder på med et prosjekt, og ting har nå stoppet opp på treeviewen jeg skal lage.

 

Databasen er bygd opp slik:

"Parent id" "Child id" "name"

 

 

Her peker child id direkte på parent id. Hovedkategorier har NULL som child id, og underkategoriene i treeviewen har en child id som peker på parent iden.

Teoretisk sett skal det være mulig med et ubegrenset antall underkategorier.

 

 

Jeg har googlet mye etter dette, og finner pent lite som hjelper. Det jeg finner er for ASP.

 

Kan noen hjelpe meg?

Endret av dennis.se
Lenke til kommentar
Videoannonse
Annonse

Du bruker åpenbart TreeView kontrollen til dette.

Du må først spørre etter alle parent, derretter lager du en rekursiv funksjon som fyller inn under-elementer.

 

Eksempel:

 

public void GenerateTreeViewParents()
{
 // Hent alle noder som har parent id = 0
 var root = GetChildNodes(0).ToArray();
 // Tree er TreeView kontrollen din
 tree.Nodes.AddRange(root);  
}

private IEnumerable<TreeNode> GetChildNodes(int parent_id)
{
 // Bytt ut med eventuell SQL setning her
 var children = from item in data_source where item.parent_id = parent_id select item;

 foreach(var child in children)
 {

   var new_node = new TreeNode(child.name);
   foreach(var sub_child in GetChildNodes(child.child_id))
     new_node.Nodes.Add(sub_child);
   // Returner det nye elementet til den kallende funksjonen
   yield return new_node;
 }
}

Lenke til kommentar

Hmm, nå er jeg ganske grønn på VB.

 

hvordan bruker jeg GenerateTreeViewParents()? ogmed GetChildNodes(int parent_id), må jeg loope gjennom alle kategoriene i hele databasen da - for å finne ut om hver enkelt har noen underkategorier? er det ikke mulig å gjøre det i funksjonen som lager hovedkategoriene?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...