Generovani stromecku (Tree) abecedne serazeneho   otázka

VB.NET

Predstavte si, ze mam nesetridene vicedimenzionalni pole a potreboval bych ho dostat do tzv. stromecku Tree (Tree Node).

uloha je takova:

Z techto dat, ktera jsou ulozena v poli, vygenerovat stromecek, ktery bude abecedne serazen a bude mit dane podurovne.

index pole - zeme - lokalita - nazev hotelu

zminovane pole:0 Rakousko U jezera Hotel Pramen

1 Francie V udoli Hotel Viola

2 Slovensko V dire Penzion Branik

3 Rakousko U jezera Hotel Delo

4 Francie Pod udolim Penzion Nikoho

5 Slovensko U dire Hotel Noc

6 Slovensko Nad dirou Hotel Blbec

7 Rakousko U jezera Hotel Zajic

8 Rakousko Pod mostem Penzion Pes

9 Rakousko Nad mostem Hotel Slunce

10 Francie Nad udolim Hotel Modry

Dekuji Vam za odpoved, pripadne jeste vice za napsany navod (ci kod).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud jde o obecný postup, stačí procházet pole po řádcích a pokud ještě neexistuje daná TreeNode s konkrétním státem, tak ji vytvořit a zbytek řádku přidat pod ní. Kód by vypadal třeba takto:

        Dim pole(,) As String = {{"0", "Rakousko", "U jezera", "Hotel Pramen"}, _
            {"1", "Francie", "V udoli", "Hotel Viola"}, _
            {"2", "Slovensko", "V dire", "Penzion Branik"}, _
            {"3", "Rakousko", "U jezera", "Hotel Delo "}, _
            {"4", "Francie", "Pod udolim", "Penzion Nikoho "}, _
            {"5", "Slovensko", "U dire", "Hotel Noc "}, _
            {"6", "Slovensko", "Nad dirou", "Hotel Blbec "}, _
            {"7", "Rakousko", "U jezera", "Hotel Zajic "}, _
            {"8", "Rakousko", "Pod mostem", "Penzion Pes "}, _
            {"9", "Rakousko", "Nad mostem", "Hotel Slunce "}, _
            {"10", "Francie", "Nad udolim", "Hotel Modry"}}

        For i As Integer = 0 To pole.GetLength(0) - 1   'projít všechny řádky

            Dim n As TreeNode

            'zkusit najít stát a uložit ho do n
            Dim f() As TreeNode = TreeView1.Nodes.Find(pole(i, 1), False)
            If f.Length = 0 Then   'pokud ještě ve stromečku daný stát není, přidáme ho
                n = TreeView1.Nodes.Add(pole(i, 1), pole(i, 1))
            Else
                n = f(0)   'stát existuje, přiřadíme ho do n
            End If

            'zkusit najít lokalitu a uložit ji do n
            f = n.Nodes.Find(pole(i, 2), False)
            If f.Length = 0 Then    'pokud ještě lokalita ve stromečku není, přidáme ji
                n = n.Nodes.Add(pole(i, 2), pole(i, 2))
            Else
                n = f(0)   'lokalita existuje, přiřadíme ho do n
            End If

            'přidat hotel do lokality a poznamenat si k němu index
            n.Nodes.Add(pole(i, 0), pole(i, 3))
        Next

Všimněte si hlavně metody Nodes.Find, která najde položku s daným klíčem (druhý parametr říká, že se má procházet jen aktuální úroveň a ne celý podstrom) a metody Nodes.Add, která přidá položku s daným klíčem a textem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback