sablonok Gridview

Eddig példa DataGrid vezérlő adatok megjelenítéséhez használt kapcsolódik egy külön oszlop minden területen. Ha azt szeretnénk, hogy több értéket egyetlen cellában, vagy korlátlan testreszabás cella tartalmának, hozzátéve HTML-címkék és szerver ellenőrzések, akkor kell használni típusú oszlop TemplateField.

TemplateField megadhatja, hogy teljesen testre szabható sablon oszlop. Bent a sablont, akkor címkéket ellenőrzés, tetszőleges HTML elemek és az adatok kötelező kifejezéseket. Kapsz teljes szabadságot jelenít meg semmit.

Tegyük fel például, szeretnénk létrehozni egy oszlopot, amely egyesíti a területeken nevét a munkavállaló minta adatbázis Northwind. Végrehajtani ezt a trükköt, akkor van lehetőség, hogy valami ehhez hasonló TemplateField:

Ha most kötődnek GridView, akkor kivonat információk az adatforrás és áthaladnak a gyűjtemény terméket. Ő dolgozza ItemTemplate az egyes tételek, kiszámítja az adat kötelező erőt, és hozzáadja a generált HTML-jelölést az asztalra. Ez a minta nagyon egyszerű - csak definiálja két adat kötelező kifejezés. Kiszámítása után ezeket a kifejezéseket úgy szöveggé alakítja:

sablonok Gridview

Mint látható, az ezeket a kifejezéseket használja Eval () - Statikus módszer Osztály DataBinder. A jelenléte Eval () van szükség - automatikusan lekéri az adata, mely kötődik az aktuális sor, a megállapítás használja tükrözi a megfelelő mezőben (DataRow tárgy), vagy tulajdonságok (felhasználói adatok objektum), és lekéri az értéket. gondolkodási folyamatot hozzáad egy kis munka. Azonban nem valószínű, hogy ezek az általános költségeket növeli sok időt iránti kérelem feldolgozása során.

Ha megpróbál kötődni egy olyan területen, amely nem létezik az eredmény meg, ha kap egy futásidejű hiba. Ha eltávolítja a felesleges mezőt, amely nem köthető semmilyen mintát, nem probléma.

Ha a horgony SqlDataSource a DataSet módban adatok elem DataRowView. Kötődve SqlDataSource DataReader módban az adatok elem DbDataRecord.

Eval () metódus is hozzátesz egy nagyon hasznos funkció az adatok formázásához mezők „on the fly”. Az eszköz használatához, akkor újra kell indítani változata Eval () metódus, ami történik egy további paramétert - a formátum string.

Template oszlopok keverhető más típusú oszlop, amint azt az előző példában. Vagy lehet megszabadulni az összes többi oszlop, és tegye az információt a Alkalmazottak táblában egy formázott sablon:

Az eredmények az alábbiakban láthatók:

sablonok Gridview

A több sablonok

Az előző példában elválasztására alkalmazható sablon megjelenése konfigurációs adatokat elemet. Azonban ItemTemplate - nem az egyetlen minta, amely kínál GridView. GridView valóban lehetővé teszi, hogy konfigurálja a különböző aspektusait a megjelenésük során különböző sablonokat. Az egyes sablon oszlop, akkor használja a sablonokat ismertetett az alábbi táblázat tartalmazza:

És meghatározza a megjelenése az ellenőrzések használt behelyezésekor egy új bejegyzés

Az összes sablon, amelyek a táblázatban felsorolt, a EditItemTemplate az egyik leghasznosabb, mivel ez biztosítja a képességét, hogy ellenőrizzék a viselkedését a mező szerkesztésekor. Ha nem használ sablont oszlopot, majd csak egyszerű szöveges mezők nélkül érvényesítése. GridView is meghatározza két sablonokat lehet használni kívül az oszlopok. Ez PagerTemplate sablont. szabhatja a megjelenését az oldal vezérlők és EmptyDataTemplate. amely lehetővé teszi, hogy a tartalom jelenik meg, ha a GridView kötve van egy üres adat objektumot.

kötési eljárással

Az egyik előnye, sablonok, hogy lehetővé teszi, hogy az adatokat kötelező kifejezéseket, amelyek kiterjesztik a képességeit a méret és bemutatása linkelt adatokat. Az egyik legfontosabb módszer, ami gyakran előfordul a különböző forgatókönyvek - a módszer használatát feldolgozására oldal osztály mező értékét. Ez törli a korlátozások egyszerű adat kötelező, és lehetővé teszi, hogy tartalmazza a dinamikus információk, és feltételes logikát.

Tegyük fel például, szeretnénk létrehozni egy oszlopot, amelyben a ikon jelenik meg egymás mellett sorban. Azonban, ha nem akarja, hogy egy statikus ikon. Ehelyett, a kép alapján kell kiválasztani a adatsort. Az alábbi ábra egy példát, amelyben a jelölések mellett a termékeket, amelyek készleten:

sablonok Gridview

Itt van, hogyan kell meghatározni az állapot oszlopot és az adatforrás:

Ezt a technikát használják számos forgatókönyvet. Például lehet használni az árkorrekció szerint a jelenlegi árfolyamok, vagy átalakítani a számkód egy értelmes darab szöveget. Ön is létrehozhat teljesen számított oszlopok - például alkalmazni EmployeeDateOfBirth mező (a születési dátum a munkavállaló) értékének kiszámításához az oszlop EmployeeAge (kor a munkavállaló).

Ezt a megközelítést alkalmazva, ebben a példában lehet telepíteni alt attribútum leíró . Ez lehetővé teszi, hogy meghatározza az alternatív szöveg, amely megadja egy értelmes leírást (például OK vagy Cancel), ami a helyzetét a megfelelő objektum.

Események kezelése a sablon

Bizonyos esetekben meg kell kezelni az eseményeket által kiváltott kezelőszerveket fel az oszlopra a mintát. Tegyük fel például, hogy az előző példában úgy módosítjuk, hogy ahelyett, hogy megjelenítsen egy statikus állapot ikon létrehoz egy linket formájában aktív kép keresztül ImageButton ellenőrzés. Ennek elérése nagyon egyszerű:

A probléma az, hogy ha egy vezérlő egy sablont, GridView teremt több példányban ez az ellenőrzés - egy minden adat elem. Amikor a ImageButton kattintott, szüksége van egy módja annak, hogy melyik konkrét esetben a kép már elkészült, akkor és úgy kapcsolódik egy sort.

Módja annak, hogy megoldja ezt a problémát az, hogy a GridView események helyett gomb eseményeket tartalmaz. Erre a célra a GridView.RowCommand esemény, mert akkor indul, ha rákattint bármelyik gombot az egyes sablon. Process, amikor az esemény ellenőrzés a sablont alakítjuk egy esemény, amelynek vezérlő, úgynevezett buborék proliferáció események.

Persze, még mindig szükség van egy módja annak, hogy át információkat RowCommand esemény azonosítására egy sort, amelyben a cselekmény történt. Secret - két húr tulajdonságait a gombok: parancs_neve és CommandArguments. A parancs_neve meg egy leíró nevet, hogy lehet használni, hogy megkülönböztessék a rákattint a ImageButton kattintva a többi nyomógomb ellenőrzések GridView. A CommandArguments jelzett fragmens specifikus adatok karakterlánc, hogy lehet használni, hogy azonosítsa a sort, amelyben a kattanás készül. Ha elküldöd ezt az információt adatainak felhasználásával erejű kifejezéseket.

A következő azt mutatja, sablon tartalmazó mező a módosított leíró ImageButton:

És itt van a kód szükséges, hogy válaszoljon egy kattintás a ImageButton:

A fenti példa csak megjeleníti a ProductID a Label1 címkét.

Ne feledje, hogy segítségével a beépített támogatást a GridView sorok választás lehet, hogy az élet könnyebb. Csak állítsa be a parancs_neve a Select és lekezeli az eseményt SelectIndexChanged, ahogyan az „kiválasztása sorban”. Bár ez a megközelítés egy egyszerű hozzáférést biztosít a bárban, ahol egy kattintás történik, ez nem segít, ha azt szeretné, hogy egy csomó gomb, különféle problémák megoldására.

Szerkesztés a sablon

Az egyik fő érvek mellett a sablonok használata, hogy a fejlett szerkesztési lehetőségek. Korábban kimutatták, mint GridView támogatja az automatikus szerkesztési lehetőségek. Minden, ami szükséges ehhez - a Vonalváltáshoz szerkesztés módba beállításával GridView.EditItemIndex tulajdon.

A legegyszerűbb módja annak, hogy ez lehetséges - hozzá CommandFieId oszlop ShowEditButton tulajdon. true (vagy GridView.AutoGenerateEditButton tulajdonság igaz). Mindenesetre, akkor jön a válogatott oszlopok megjelenítésére szerkesztési parancsok. Kezdetben ez oszlopban megjelenik egy link nevű Edit (Edit) mellett az összes bejegyzést. Amikor a felhasználó rákattint a linkre, az összes címke valamennyi oszlopban helyettesítjük sor szöveges mezők (amennyiben nem csak olvasásra).

Normál szerkesztésének támogatása vannak bizonyos korlátai:

Ez nem mindig tanácsos, módosítsa az értékeket a mezőkbe. Néhány adat típusok a legjobban kezelni más kontrollok (például legördülő listák), nagy területek igényelnek többsoros szöveges mezők, stb

Nincs érvényesítése. Nem lenne jó ötlet, hogy korlátozza szerkesztési képességek, így lehetetlen volt meg negatív valuta értékeket, stb Ez megtehető hozzáadásával hitelességének ellenőrzése ellenőrzések EditItemTemplate mintát.

ez nem vonzó gyakran. A sztring doboz tetején az asztal vezérlő igényel túl sok helyet, és ritkán néz profi.

A sablon oszlopok egyszerűen nem. Ehelyett határozza meg kifejezetten a szerkesztési eszközök és az elrendezés segítségével EditItemTemplate sablon. Ez a folyamat lehet elég időigényes.

Az alábbiakban egy szerkesztő sablon szerkesztését teszi lehetővé egy területen - egy olyan területen Notes (első módosított példa):

Kábelezés szerkeszthető értéket a kontroll, ahelyett, hogy a hagyományos módszer Eval () szempontjából a kötődési adatok kell használni Bind () módszer. Csak Bind () metódus létrehoz egy kétirányú kapcsolat, biztosítva, hogy frissített értékeket fog küldeni a szerverre.

Egy másik fontos tény, hogy meg kell szem előtt tartani - ha a GridView frissítés által javított, ez csupán a mellékelt, szerkeszthető paramétereket. Az előző példában ez azt jelenti, hogy a GridView küld vissza egyetlen paramétert @Notes a Megjegyzések mezőben. Ez azért fontos, mert ha írsz egy paraméterezett update parancsot (abban az esetben a SqlDataSource), akkor csak egy paraméter, mint itt látható:

Hasonlóképpen, ha használja a ObjectDataSource, meg kell győződnie arról, hogy a frissítés metódus csak egy paraméter neve Notes. Az ábrán egy sort a szerkesztési mód:

sablonok Gridview

Szerkesztése fejlett kezelőszervekkel

Az előnye, hogy a szerkesztés sablon alapú különösen szembetűnő, ha szükséges összekapcsolni bonyolultabb vezérlők például listákat. Például az előző példában lehet változtatni, így TitleOfCourtesy mező szerkeszthető egy legördülő listából. Itt van egy sablon, hogy szükség lesz erre:

A sablon segítségével a felhasználó kiválaszthatja a címet a udvariassága korlátozott számú megengedett. A lista létrehozásához szükséges, hogy vegye igénybe egy kis trükk - helyezze DropDownList.DataSource adatok kötelező kifejezés, amely azt jelzi, hogy az egyéni tulajdon. Ez a tulajdonság, majd visszatér a megfelelő adatforrás a lehetséges címeket. Az alábbiakban a meghatározása a tulajdonságok osztályba TitleOfCourtesy weboldalon:

Ebben a lépésben a tartalom legördülő listában, de nem oldja meg a problémát kapcsolatos kezdeti helyes megválasztása címét a listáról egy meglévő mező értéke. A legjobb megoldás az, hogy kötődik a felhasználó selectedIndex módszer elfogadja az aktuális cím és visszaadja az index értéke a listában. Ebben a példában, a feladat végez GetSelectedTitle () módszer. Elveszi a cím a bemeneti és visszatér az index a megfelelő érték által visszaadott tömb TitlesOfCourtesy:

Ez a kód keres egy tömbben a statikus módszerrel Array.IndexOf (). Ügyeljen arra, hogy annak szükségességét, hogy kifejezetten, hogy a cím, hogy egy string típusú. Ez annak a ténynek köszönhető, hogy a DataBinder.Eval () metódus visszaadja egy objektum helyett egy string, és ezt az értéket át GetSelectedTitle () metódust. Az alábbi ábra mutatja a legördülő listából az akcióban:

sablonok Gridview

Sajnos, ez a példa még nem fejeződött be. Most van egy lista doboz, tele a szerkesztési mód automatikusan választja ki a megfelelő elemet. Azonban, ha megváltoztatja a kiválasztás, az érték nem vissza kell küldeni az adatforrás. Ebben a példában, akkor próbálja megoldani a problémát Bind () metódus a tulajdonság, hogy a SelectedValue, mivel a szöveg a kontroll pontosan megfelel a kívánt szöveget hozzáadni a rekordot.

Előfordul azonban, hogy a dolgok nem olyan egyszerű, és ez szükséges lefordítani az értéket egy másik ábrázolása az adatbázist. Ebben a helyzetben az egyetlen lehetőség -, hogy kezelni egy esemény RowUpdating, megtalálja a lista ellenőrzés az aktuális sorban és bontsa ki a szöveget. Akkor, akkor dinamikusan hozzá további paramétereket, az alábbiak szerint:

UpdateCommand a SqlDataSource ki kell igazítani használni @TitleOfCourtesy paraméter:

Most sikeresen frissítve mindkét területen - Megjegyzések és TitleOfCourtesy. Mint látható, szerkeszthető sablonok jelentős lehetőségeket, de néha sokáig kell kódolni.

Kapcsolódó cikkek