AspNet.sk     Diskusné fóra     Vitajte v QuickStarts     ASP.NET     Silverlight     Ako môžem...? (en)     Class prehliadač Príklady chcem v ...   
Menu
Skip Navigation Links.
Späť na ASP.NET príručku

ASP.NET QuickStart Príručka

Hierarchické dáta

Prvky dátového zdroja môžu vystaviť buď tabuľkové, alebo hierarchické údaje, alebo obidva typy. SqlDataSource a ObjectDataSource z predchádzajúcich sekcií sú príkladmi tabuľkových prvkov dátového zdroja. ASP.NET 2.0 prináša dva hierarchické prvky dátového zdroja: XmlDataSource pre pripájanie na súbory XML, a SiteMapDataSource pre pripájanie na údaje o stránkovej navigácii. Niektoré techniky použitia hierarchických ovládacích prvkov dátového zdroja sú prebrané v príkladoch, ktoré sa nachádzajú v tejto sekcii.

Pozrite články XmlDataSource a SiteMapDataSource v sekcii Ovládacie prvky pre viac príkladov použitia spomínaných techník.

TreeView a ovládacie prvky Menu

Podobne ako dátové zdroje, dátovo-viazané ovládacie prvky môžu byť tiež hierarchické. Kým tabuľkové dátovo-viazané prvky renderujú zoznam alebo mriežku dát, hierarchické dátovo-viazané prvky sú schopné vnárať sa do dátovej hierarchie za účelom zobrazenia vzťahov rodič-dieťa. Dva príklady hierarchických dátovo-viazaných ovládacích prvkov sú TreeView a Menu z ASP.NET 2.0. Techniky dátového viazania spomínaných ovládacích prvkov na hierarchické dátové zdroje sú ukázané na príkladoch, ktoré budú nasledovať.

Ak máte záujem o viac príkladov, pozrite články TreeView a Menu v referenčnej príručke ovládacích prvkov.

Viazanie na XML

XmlDataSource umožňuje prvkom viazať sa na XML údaje. XmlDataSource podporuje vlastnosť DataFile na určenie cesty ku XML súboru, ktorý sa použije ako vstup. Môžete tiež určiť hodnotu vlastnosti TransformFile pre aplikáciu XSLT transformácie na údaje, a vlastnosť XPath pre určenie podmnožiny uzlov, ktoré majú byť vystavené dátovým zdrojom.

Príklad nižšie demonštruje prvok TreeView viazaný na XML súbor prostredníctvom XmlDataSource. TreeView asociuje vlastnosti individuálnych objektov TreeNode na atribúty XML uzlov v hierarchii (atribúty sú povýšené na vlastnosti dátovej položky pre potreby dátového viazania). Zvyčajne, prvok TreeView jednoducho zobrazuje dátovú položku zavolaním metódy ToString() na objekt TreeNode. ToString zobrazí meno elementu XML uzla, aby ste mohli vidieť hierarchiu uzlov, ku ktorým sa TreeView viaže. Prístup nie je vhodný pre zobrazovanie, ale poskytuje dobrý štartovací bod pre ďalšie prispôsobenie ako budú XML údaje zobrazené.

VB Binding TreeView to an XML File
Run Sample View Source

Aby ste prvku TreeView poskytli zmysluplnejšie zobrazenie, môžete špecifikovať individuálne dátové viazania pre uzly v strome. Objekty TreeNodeBinding môžete pridať do kolekcie DataBindings prvku TreeView aby ste definovali, ako sa budú polia hierarchických dát mapovať na vlastnosti objektu TreeNode. Existujú dve kľúčové vlastnosti TreeNodeBinding, ktoré určujú množinu hierarchických dátových položiek, na ktoré sa viazanie uplatňuje. Vlastnosť DataMember určuje typ dátovej položky, alebo v prípade XML údajov, názov elementu, na ktorý sa aplikuje viazanie. Vlastnosť Depth určuje hĺbku v hierarchii, do ktorej sa má uplatňovať dátové viazanie. Môžete nastaviť buď DataMember alebo Depth, a aj obidve vlastnosti súčasne. Na príklad na definovanie dátového viazania pre všetky elementy Book v zvolenom XML súbore, nastavte DataMember na "Book". Aby ste definovali viazanie pre všetky uzly v hĺbke 1, nastavte vlastnosť Depth na 1. Aby ste definovali viazanie pre všetky uzly Book v hĺbke 1, nastavte v objekte TreeNodeBinding aj vlastnosť DataMember na "Book", aj vlastnosť Depth na 1.

Keď ste nastavili DataMember alebo Depth, môžte definovať dodatočné vlastnosti TreeNodeBinding aby ste stanovili, ako sa vlastnosti dátovej položky (alebo atribúty XML uzla, v prípade XML údajov) mapujú na vlastnosti uzlov stromu (TreeNode) ktoré zobrazuje prvok TreeView. Na príklad vlastnosť TextField určuje meno vlastnosti/atribútu, ktorý sa má použiť pre Text v TreeNode. Podobne vlastnosť ValueField definuje vlastnosť/atribút dátovej položky, ktorý sa má použiť ako hodnota vlastnosti Value objektu TreeNode. Vlastnosť NavigateUrlField určuje pole/atribút, ktorý má byť použitý ako NavigateUrl pre prvok TreeNode. Môžete stanoviť statické hodnoty pre vlastnosti TreeNode so zvoleným dátovým viazaním. Na príklad, na stanovenie, že uzly pre elementy Book budú mať nastavený obrázok "Book.gif", nastavte vlastnosť ImageUrl prvku TreeNodeBinding , ktorého vlastnosť DataMember je nastavená na "Book".

Nasledujúci príklad ukazuje TreeView naviazaný na tie iste XML údaje ako predchádzajúci príklad, s dátovým viazaním definovaným pre jednotlivé elementy v XML hierarchii.

VB TreeView Data Bindings
Run Sample View Source

XmlDataSource podporuje vlastnosť XPath, ktorú môžete použiť na filtrovanie množín uzlov vystavených dátovým zdrojom. V príklade nižšie je vlastnosť XPath nastavená na Bookstore/genre[@name='Business']/book, aby ste prefiltrovali uzly dátového zdroja len na zobrazenie tých elementov book, ktoré sú žánru "Business". Buďte opatrní pri písaní správnej syntaxe pre vlastnosť XPath; v opačnom prípade nemusí dátový zdroj vystaviť žiadne uzly (a dátovo-viazaný ovládací prvok vôbec nemusí zobraziť údaje).

VB TreeView to an XPath Result
Run Sample View Source

Všimnite si, že hierarchia TreeView presne zodpovedá hierarchii zdrojového XML. Práve preto je bežné buď vytvoriť XML len pre viazanie na TreeView, alebo použiť XSL transformáciu a pretvarovať tak údaje do hierarchie vhodnej pre viazanie na TreeView.

VB TreeView to an XSLT Transformation
Run Sample View Source


Je tiež možné viazať tabuľkové dátovo-viazané ovládacie prvky na hierarchický dátový zdroj, aj keď prvok zobrazí len prvú úroveň hierarchie. V príklade nižšie, je šablónovaný prvok DataList viazaný na ten istý XML súbor knihovníctva ako v predchádzajúcom príklade. Pretože uzly na najvyššej úrovni vystavené dátovým zdrojom sú uzly <book/>, DataList sa môže viazať na vlastnosti týchto uzlov v ich šablóne ItemTemplate použitím výrazov dátového viazania Eval.

VB DataList Bound to XML File
Run Sample View Source

Hoci je renderovanie jednej úrovne hierarchie užitočné, bolo by lepšie, ak by sme dokázali vnoriť tabuľkové dátovo-viazané prvky, ktoré by dokázali vyčerpávajúco zobraziť hierarchiu. Našťastie, ASP.NET 2.0 vám to umožňuje zrealizovať. Ku väzobnej syntaxi Eval pridáva ASP.NET 2.0 tzv. syntax viazania založenú na XPath, ktorá je podporovaná ktorýmkoľvek dátovým prvkom, ktorý implementuje rozhranie IXPathNavigable. Sú dva podporované typy výrazov:
  • XPath(expression, [formatString]) - Vyhodnocuje XPath výraz oproti dátovej položke a vracia jedinú hodnotu.
  • XPathSelect(expression, [formatString]) - Vyhodnocuje XPath výraz oproti dátovej položke a vracia zoznam vybraných položiek.
Príklad nižšie stavia na predchádzajúcom príklade a používa dátovo-väzobné výrazy XPath namiesto výrazov Eval na viazanie atribútov uzlov kníh. Na prvý pohľad sa zdá, že sa výraz nezmenil, len je pridaný prefix '@' pred každý reťazec, ktorý identifikuje XPath syntax. Naozajstná flexibilita XPath spočíva v schopnosti odkazovať sa na ľubovoľné položky v rámci hierarchie (nie len atribúty).

Príklad pridáva ďalší DataList do ItemTemplate vonkajšieho DataList-u, a viaže vlastnosť DataSource vnútorného DataList-u na výraz XPathSelect reprezentujúci zoznam uzlov pre kapitoly aktuálneho uzla knihy. V ItemTemplate vnútorného DataList-u, sa výrazy XPath vyhodnocujú oproti kontextovým uzlom kapitol. Použitím tejto techniky, Vám ASP.NET 2.0 umožňuje jednoducho budovať bohaté hierarchické zobrazenie dát skladaním tabuľkových dátovo viazaných prvkov.

VB Nested DataList Bound to XML File
Run Sample View Source

Hierarchický prvok dátového zdroja ako XmlDataSource priraďuje jedinečnú cestu každému uzlu v hierarchii aby mohol obsluhovať požiadavky dátovo-viazaných prvkov rozhrania na uzly vo zvolenom umiestení. Prístup umožňuje vlastnosti, ako PopulateOnDemand prvku TreeView, kde uzly z dátového zdroja môžu byť poslané klientovi až vtedy, keď sa uzol rozbaľuje, namiesto posielania všetkých uzlov naraz (vlastnosť je ďalej rozobraná v časti príkladov na prvok TreeView ). Zároveň vám dovoľuje použiť cestu priamo z kódu stránky na konfigurovanie dátového zdroja, aby ukazoval uzly priamo zo zvoleného umiestnenia. Syntax cesty je špecifická pre každý reprezentovaný dátový typ a nemôže byť konštruovaná z kódu. Avšak môžete k nej pristúpiť pre uzol viazaný na TreeView použitím vlastnosti DataPath objektu TreeNode. Pretože XmlDataSource používa výrazy XPath ako jeho natívnu syntax dátových ciest, spomínané cesty môžu byť priradené priamo vlastnosti XPath dátového zdroja XmlDataSource na filtrovanie zoznamu uzlov. Príklad nižšie ukazuje túto techniku na implementovanie scenára master-detail s použitím XmlDataSource. Existujú v ňom dva prvky XmlDataSource, jeden viazaný na TreeView (master), a druhý viazaný na DataList (detail). Keď kliknete na uzol v TreeView, hodnota vlastnosti DataPath sa z neho vyzdvihne a odovzdá dátovému zdroju viazanému na DataList, ktorý zobrazí dodatočné informácie o uzle, ktorý ste vybrali.

VB XML-based Event Log using TreeView (Master-Details)
Run Sample View Source

Sekcia TreeView prechádza cez všetky kroky budovania predchádzajúceho príkladu.

Viazanie na navigáciu v stránke

Údaje stránkovej navigácie sú druhou formou hierarchických údajov v ASP.NET aplikácii, ako je napísané v sekcii Tvorba hierarchie stránkovej navigácie. Ku podpore API stránkovej navigácie pre programátorský prístup ku údajom mapy stránok bol v ASP.NET 2.0 pridaný prvok SiteMapDataSource pre podporu deklaratívneho dátového viazania. Keď viažete TreeView (alebo Menu) na SiteMapDataSource, vlastnosti Text a Url mapy stránok môžu byť viazané na TreeNodes (alebo MenuItems). Hoci viazanie môžete realizovať prostredníctvom kolekcie DataBinding na vytvorenie spomínaných pripojení, nie je to úplne nutné. Prvky TreeView a Menu automaticky viažu vlastnosti Text a NavigateUrl objektov ktoré zobrazujú (TreeNodes/MenuItems) na im zodpovedajúce vlastnosti uzlov mapy stránky (je to možné prostredníctvom rozhrania INavigateUIData na uzle SiteMapNode). Ku pozitívnym vlastnostiam TreeView a Menu, keď sú naviazané na SiteMapDataSource môžeme pripočítať, že dátový zdroj automaticky nastavuje vlastnosť SelectedNode resp. SelectedItem na aktuálny uzol v mape stránok pripojeným navigačným ovládacím prvkom. (Navigačné ovládacie prvky vždy vedia, na ktorej stránke sa používateľ nachádza)

Príklad nižšie ukazuje TreeView naviazaný na prvok SiteMapDataSource. Hoci príklad ukazuje kolekciu DataBindings pre potreby demonštrácie, nie je jej použitie nutné, keď sa pripájate len na vlastnosti Text a Url uzla.

VB TreeView Bound to SiteMap Data
Run Sample View Source

Viazanie na relačné databázy

Relačná databáza môže byť tiež interpretovaná ako hierarchia, keď sú tabuľky prepojene cez relácie cudzieho kľúča. Ako príklad poslúži, databáza produktov, kde každý produkt je asociovaný s produktovou kategóriou a táto asociácia môže byť interpretovaná ako hierarchický vzťah (1 ku mnoho) medzi kategóriami a produktmi. Hoci aktuálna verzia ASP.NET nezahŕňa prvok dátového zdroja pre vonkajšiu reprezentáciu relačných údajov vo forme hierarchickej štruktúry, môžete spomínaný výsledok vlastným naplnením uzlov hierarchického dátovo-viazaného prvku (TreeView, Menu). Príklad nižšie zobrazuje prvok TreeView , ktorého hodnoty sú naplnené z relačnej databázy. Príklad využíva výhody vlastnosti PopulateOnDemand prvku TreeView na naplnenie uzlov nižšej úrovne na požiadanie (spätným volaním na server), keď je TreeNode rozbalený na klientovi. Pre viac informácii o tejto vlastnosti, pozrite sekciu TreeView návodu.

VB Populating TreeView from a Database
Run Sample View Source

Microsoft .NET Framework SDK QuickStart Tutorials Version 2.0
Copyright © 2005 Microsoft Corporation. All rights reserved.
Preklad do slovenského jazyka - Copyright © 2005 - 2007 www.aspnet.sk, www.qsh.sk
Pošlite komentár k tejto stránke
Copyright © 2002 - 2008 Chastia, spol. s r. o., Igor Stanek, Designed by Lacino
Portál je hostovaný na serveroch firmy Quantasoft - www.qsh.sk.