In de context van een ASP NET internet applicatie, ben ik (onder meer) bezig met het opzetten van beheer functionaliteit van een menu (daarbij gebruik maken van een drie lagen model).
Hiervoor heb ik een 3-tier lagen model gekozen met de volgende lagen:
- Presentation Layer
- Business Logic Layer
- Data Access Layer
In mijn Data Access Layer haal ik mijn menu items in een simpele query op. Deze orden ik (op basis van de parentid) in een ArrayList en retourneer ik naar de Business Logic Layer.
De spannende dingen gebeuren in de Business Logic Layer. Hier heb ik (voorlopig ter test) in de Constructor een algoritme geprogrammeerd die gebaseerd is op een algoritme van EfBe in:
[rml]EfBe in "[ VB.NET] Treeview + Subnodes (van Subnod..."[/rml]
en dus de menu items plaatst in een Hashtable onder een key die gevormd wordt door het ID van het menuitem. Wanneer een menu item zijn parent ook in de Hashtable kan vinden, dan voegt het item zichzelf toe aan de sub menu items van de parent (hetgeen ook toevallig een Hashtable is
).
Omdat ik de opgehaalde en reeds gekoppelde menu items uit deze Hashtable voor verschillende doeleinden wil gebruiken (te weten: een tree structuur van menu items en een horizontaal-uitklap-menu-structuur) heb ik meerdere methoden in deze Business Logic Layer beschikbaar gesteld die de gewenste structuur meegeven aan de Presentation Layer (deze methoden werken op basis van recursie).
Dit werkt allemaal perfect en is godsgruwelijk snel. Waarom, hoor ik je denken, post je dan in godsnaam je onzin in een topic. Welnu
... een Hashtable is een soortement van enorme zak, met daarin een verzameling objecten. Er is dus totaal geen sprake van structuur. De enige structuur die ik heb, is dat wanneer ik een menu item ophaal uit deze zak, ik weet welke menu items er onder hangen.
Wat ik feitelijk wil is een stukje structuur toe voegen, die de menu items in volgorde meegeeft aan de Presentation Layer. Met andere woorden, enerzijds wil ik de efficientie van een Hashtable gebruiken en anderzijds de ordelijkheid van een ArrayList.
Nu ben ik reeds bekend met een SortedList, dat zou ik eventueel kunnen gebruiken, maar ik zou graag de gedachten van mede-tweakers hierover willlen horen.
Hiervoor heb ik een 3-tier lagen model gekozen met de volgende lagen:
- Presentation Layer
- Business Logic Layer
- Data Access Layer
In mijn Data Access Layer haal ik mijn menu items in een simpele query op. Deze orden ik (op basis van de parentid) in een ArrayList en retourneer ik naar de Business Logic Layer.
De spannende dingen gebeuren in de Business Logic Layer. Hier heb ik (voorlopig ter test) in de Constructor een algoritme geprogrammeerd die gebaseerd is op een algoritme van EfBe in:
[rml]EfBe in "[ VB.NET] Treeview + Subnodes (van Subnod..."[/rml]
en dus de menu items plaatst in een Hashtable onder een key die gevormd wordt door het ID van het menuitem. Wanneer een menu item zijn parent ook in de Hashtable kan vinden, dan voegt het item zichzelf toe aan de sub menu items van de parent (hetgeen ook toevallig een Hashtable is
Omdat ik de opgehaalde en reeds gekoppelde menu items uit deze Hashtable voor verschillende doeleinden wil gebruiken (te weten: een tree structuur van menu items en een horizontaal-uitklap-menu-structuur) heb ik meerdere methoden in deze Business Logic Layer beschikbaar gesteld die de gewenste structuur meegeven aan de Presentation Layer (deze methoden werken op basis van recursie).
Dit werkt allemaal perfect en is godsgruwelijk snel. Waarom, hoor ik je denken, post je dan in godsnaam je onzin in een topic. Welnu
Wat ik feitelijk wil is een stukje structuur toe voegen, die de menu items in volgorde meegeeft aan de Presentation Layer. Met andere woorden, enerzijds wil ik de efficientie van een Hashtable gebruiken en anderzijds de ordelijkheid van een ArrayList.
Nu ben ik reeds bekend met een SortedList, dat zou ik eventueel kunnen gebruiken, maar ik zou graag de gedachten van mede-tweakers hierover willlen horen.