|
|
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
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
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
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
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
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
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)
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
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
|
|