|
|
ASP.NET QuickStart Príručka
Dátové viazanie v šablónach
Šablónované (templated) dátovo-viazané ovládacie prvky poskytujú úplnú flexibilitu pri renderovaní dát na stránkach.
Môžete si spomenúť na niekoľko šablónovaných prvkov z ASP.NET v1.x, ako napríklad DataList, alebo Repeater.
Spomínané prvky zostávajú podporované v ASP.NET 2.0, avšak spôsob, ako sa viažu na dáta v šablónach
sa značne zjednodušil a vylepšil v novom vydaní. Sekcia opisuje rôzne spôsoby dátového viazania v dátovo-viazanej šablóne prvku.
Výrazy dátového viazania
ASP.NET 2.0 pridáva vylepšenia dátového viazania v šablónach, zjednodušením väzobnej syntaxe z úplnej
v1.x syntaxe DataBinder.Eval(Container.DataItem, fieldname) len na
Evalfieldname. Podobne, ako DataBinder.Eval, metóda Eval akceptuje voliteľný parameter
obsahujúci formátovací reťazec.
Skrátená Eval syntax je odlišná od DataBinder.Eval v tom, že Eval automaticky analyzuje pole oproti vlastnosti DataItem najbližšieho
kontajnerového objektu (DataListItem, v príkladoch vyššie), kde DataBinder.Eval preberá kontajner v argumente. Z tohto dôvodu sa Eval používa vo vnútri
šablóny ovládacieho prvku a nemôže byť použitý na úrovni stránky. Samozrejme, DataBinder.Eval zostava podporovaný v ASP.NET 2.0, takže ho
môžete používať v scenároch, kde zjednodušená Eval syntax nie je podporovaná.
<asp:DataList DataSourceID="ObjectDataSource1" runat="server">
<ItemTemplate>
<asp:Image ImageUrl='<%# Eval("FileName", "images/thumbs/{0}") %>' runat="server"/>
<asp:Label Text='<%# Eval("Caption") %>' runat="server"/>
</ItemTemplate>
</asp:DataList>
Príklad nižšie ukazuje novú zjednodušenú Eval syntax pre dátové viazanie prvkov Image, Label a HyperLing v ItemTemplate v rámci DataList.
VB DataBinding in a DataList Template
Dátové viazania môžu byť zahrnuté ako súčasť definície témy pre ovládací prvok, takže je možné dramaticky zmeniť
rozvrhnutie a look-and-feel šablónovaného ovládacieho prvku jednoducho zmenou aplikovanej témy (Theme).
Len Eval (alebo Bind, ako bude uvedené neskôr) môže byť použitý v šablóne témy.
Svojvoľné viazanie na používateľský kód je zakázané. Nasledujúci príklad ukazuje tému aplikovanú na predchádzajúci príklad na vytvorenie
úplne iného vzhľadu pre stránku. Viac informácii o témach sa dozviete v sekcii Aplikovanie štýlov, tém a skinov
návodu.
VB DataBinding in a DataList Template (Themed)
Ovládací prvok FormView
Prvok Datalist iteruje cez všetky dátové prvky poskytnuté dátovým zdrojom a používa ItemTeplate pre výstup
každého prvku. Prístup je výhodný pri renderovaní zoznamu prvkov, keď sa často nechcete dátovo-viazať oproti
jedinému dátovému prvku vo forme. Z tohto dôvodu, ASP.NET 2.0 uvádza prvok FormView, ktorý renderuje jedinú dátovú
položku v šablóne s voľným umiestnením.
Hlavný rozdiel medzi DetailsView a FormView je, že DetailsView má zabudované tabuľkové zobrazovanie, kým FormView vyžaduje používateľský-definovanú šablónu
na zobrazovanie. Napriek spomenutým rozdielom sú si FormView a DetailsView z pohľadu objektového module veľmi podobné.
Nasledujúci príklad ukazuje prvok FormView viazaný na ObjectDataSource. Vlastnosť ItemTemplate prvku FormView obsahuje dátovo-viazané prvky Image, Label a Hyperlink podobne ako v predchádzajúcom
príklade na DataList.
VB DataBinding in a FormView Template
Podobne ako DetailsView, FormView má prehľad o aktuálne zobrazenom prvku
a môže voliteľne podporovať stránkovanie cez dátové položky, keď dátový zdroj vráti zoznam.
Nasledujúci príklad ukazuje FormView s aktivovaným stránkovaním.
VB DataBinding in a FormView Template (Paged)
Two-way Databinding
FormView podporuje automatickú editáciu, vkladanie a vymazávanie prostredníctvom
asociovaného prvku dátového zdroja podobne ako DetailsView. Aby ste aktivovali používateľské
rozhranie pre editáciu alebo vkladanie, definujte EditItemTemplate alebo InsertItemTemplate dodatočne
spolu s ItemTemplate (ktorú musíte pripraviť vždy). V tejto šablóne sa viažu dátovo-viazané ovládacie prvky
ako TextBox, CheckBox alebo DropDownList na polia dátového zdroja. Dátové viazania v šablónach používajú
dvojsmernú (Two way) väzobnú syntax, aby sa dalo extrahovať hodnoty zo vstupných ovládacích prvkov zo šablóny, ktoré budú ďalej odovzdané dátovému zdroju.
Dátové viazania používajú novú syntax Bind(fieldname) namiesto Eval.
Dôležité: Ovládací prvok, ktorý je dátovo-viazaný prostredníctvom Bind syntaxe musí mať správne nastavenú hodnotu vlastnosti ID.
<asp:FormView DataSourceID="ObjectDataSource1" DataKeyNames="PhotoID" runat="server">
<EditItemTemplate>
<asp:TextBox ID="CaptionTextBox" Text='<%# Bind("Caption") %>' runat="server"/>
<asp:Button Text="Update" CommandName="Update" runat="server"/>
<asp:Button Text="Cancel" CommandName="Cancel" runat="server"/>
</EditItemTemplate>
<ItemTemplate>
<asp:Label Text='<%# Eval("Caption") %>' runat="server" />
<asp:Button Text="Edit" CommandName="Edit" runat="server"/>
</ItemTemplate>
</asp:FormView>
Keď editujete alebo vkladáte prostredníctvom GridView alebo DetailsView, kde sú BoundFields definované
pre stĺpce alebo polia v rámci prvku, zodpovedá GridView alebo DetailsView za vytváranie
vstupného rozhrania pre režim Edit alebo Insert, aby dokázal automaticky extrahovať vstupné hodnoty, ktoré sa
odovzdajú späť dátovému zdroju. Pretože šablóny obsahujú vlastné používateľsky-definované prvky,
dvojsmerná dátovo-väzobná syntax je potrebná na podporu šablónových ovládacích prvkov ako
FormView, aby bolo zrejmé, ktoré hodnoty majú byť extrahované zo šablóny pre operácie Update, Insert alebo Delete.
Stále môžete používať Eval syntax v EditItemTemplate pre dátové viazanie, kde hodnoty nemajú byť odovzdané späť dátovému zdroju.
Všimnite si tiež, že FormView podporuje vlastnosť DataKeyNames podobne ako DetailsView a GridView pre
udržovanie originálnych hodnôt polí primárneho kľúča, ktoré sa odovzdávajú počas operácií Update resp. Delete, aj keď
im zodpovedajúce polia nie sú zobrazené.
FormView podporuje vlastnosť DefaultMode pre špecifikáciu štandardnej zobrazovacej šablóny, ale
bežne FormView štartuje v režime ReadOnly a zobrazuje ItemTemplate. Aby ste zobrazili rozhranie pre
prechod z režimu ReadOnly do režimov Edit a Insert, môžete pridať prvok Button do šablóny a nastaviť
jeho vlastnosť CommandName na Update alebo New. Z vnútra
EditItemTemplate, môžete na prijatie alebo odvolanie operácie Update pridávať tlačidlá s vlastnosťou CommandName nastavenou na Update alebo Cancel.
Podobne môžete pridávať tlačidlá s CommandName nastaveným na Insert alebo Cancel na prijatie alebo odmietnutie
operácie Insert.
Nasledujúci príklad ukazuje FormView s definovanými šablónami ItemTemplate a EditItemTemplate.
Kým ItemTemplate obsahuje ovládacie prvky viazané s pomocou syntaxe Eval (jednosmernej syntaxe viazania),
EditItemTemplate obsahuje prvok TextBox viazaný dvojsmerne pomocou väzobného príkazu (bind statement).
Pole primárneho kľúča (PhotoID) sa používa pri všetkých pohľadoch s použitím vlastnosti DataKeyNames.
FormView obsahuje tlačidlá pre príkazy na prepínanie medzi šablónami.
VB Two-Way Databinding in a FormView Edit Template
GridView a DetailsView tiež podporujú šablónované rozhranie použitím objektu TemplateField
vloženého do kolekcie Columns alebo Fields. TemplateField podporuje ItemTemplate, EditItemTemplate
a InsertItemTemplate (len pri DetailsView) pre špecifikáciu používateľského rozhrania
v rôznych zobrazovacích režimoch ovládacích prvkov. Podobne ako v predchádzajúcom príklade, dvojsmerné
dátové viazania v EditItemTemplate alebo InsertItemTemplate umožnia GridView alebo DetailsView získať
hodnoty z ovládacích prvkov v šablónach. Bežné použitie pre TemplateField je, ak potrebujete pridať
validačné prvky (validátory) do EditItemTemplate pre deklaratívnu validáciu GridView alebo DetailsView.
Príklad nižšie ukazuje príklad spomínanej techniky. Viac informácií o validačných ovládacích prvkov v ASP.NET sa nachádza v sekcii
Validácia vstupných ovládacích prvkov návodu.
VB Validation in a GridView Edit Template
TemplateField sa používa aj na nastavenie vzhľadu vstupných ovládacích prvkov použitých na
vkladanie hodnôt údajov v GridView, alebo DetailsView. Môžete na príklad umiestniť prvok DropDownList do
šablóny EditItemTemplate objektu TemplateField aby ste umožnili výber zo zoznamu hodnôt.
Príklad nižšie ukazuje túto techniku. Všimnite si, že DropDownList v príklade je viazaný na vlastný prvok dátového zdroja
na dynamické získanie hodnôt zoznamu.
VB DropDownList in a GridView Edit Template
|
|