Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
által Scott Mitchell
Ez az oktatóanyag az ObjectDataSource vezérlőt vizsgálja. Ezzel a vezérlővel az előző oktatóanyagban létrehozott BLL-ből lekért adatokat anélkül kötheti össze, hogy kódsort kellene írnia!
Bevezetés
Az alkalmazásarchitektúra és a webhely lapelrendezésének elkészültével készen állunk arra, hogy felfedezzük, hogyan végezhetünk el számos gyakori adattal és jelentéssel kapcsolatos feladatot. Az előző oktatóanyagokban bemutattuk, hogyan lehet programozott módon összekapcsolni az adatokat a DAL-ból és a BLL-ből egy ASP.NET lapon lévő adat-webvezérlővel. Ez a szintaxis, amely az adatwebes vezérlő DataSource tulajdonságát rendeli hozzá a megjelenítendő adatokhoz, majd meghívja a vezérlő DataBind() metódusát, az ASP.NET 1.x alkalmazásokban használt minta volt, és továbbra is használható a 2.0-s alkalmazásokban. A ASP.NET 2.0 új adatforrás-vezérlői azonban deklaratív módon használhatók az adatokkal. Ezekkel a vezérlőkkel az előző oktatóanyagban létrehozott BLL-ből lekért adatokat kötheti össze anélkül, hogy kódsort kellene írnia!
ASP.NET 2.0 mellékel öt beépített adatforrás-vezérlőt SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource és SiteMapDataSource, illetve szükség esetén saját egyéni adatforrás-vezérlőket is létrehozhat. Mivel kifejlesztettünk egy architektúrát az oktatóanyag-alkalmazáshoz, az ObjectDataSource-t fogjuk használni a BLL-osztályokon.
1. ábra: ASP.NET 2.0 öt Built-In adatforrás-vezérlőt tartalmaz
Az ObjectDataSource proxyként szolgál más objektumokkal való munkához. Az ObjectDataSource konfigurálásához megadjuk ezt a mögöttes objektumot, és hogyan képezik le a metódusai az ObjectDataSource Select, Insert, Update, és Delete metódusait. Miután ezt a mögöttes objektumot megadta, és a metódusai az ObjectDataSource-hoz vannak leképezve, az ObjectDataSource-t egy adat-webvezérlőhöz köthetjük. ASP.NET számos webes adatvezérlőt kínál, beleértve a GridView, a DetailsView, a RadioButtonList és a DropDownList vezérlőket is. A lap életciklusa során előfordulhat, hogy az adat-webvezérlőnek hozzá kell férnie azokhoz az adatokhoz, amelyekhez az ObjectDataSource Select metódusának meghívásával fog hozzáférni. Ha az adat-webvezérlő támogatja a beszúrást, a frissítést vagy a törlést, hívásokat kezdeményezhet az ObjectDataSource metódusaihoz InsertUpdatevagy Delete metódusaihoz. Ezeket a hívásokat ezután az ObjectDataSource irányítja át a megfelelő mögöttes objektum metódusaihoz, ahogy az alábbi ábrán látható.
2. ábra: Az ObjectDataSource proxyként szolgál (ide kattintva megtekintheti a teljes méretű képet)
Bár az ObjectDataSource használható az adatok beszúrására, frissítésére vagy törlésére szolgáló metódusok meghívására, koncentráljunk az adatok visszaadására; A jövőbeli oktatóanyagok az ObjectDataSource és az adatokat módosító adat webes vezérlők használatát ismertetik.
1. lépés: Az ObjectDataSource vezérlő hozzáadása és konfigurálása
Először nyissa meg a SimpleDisplay.aspx lapot a BasicReporting mappában, váltson Tervező nézetre, majd húzzon egy ObjectDataSource-vezérlőt az Eszközkészletből a lap tervezőfelületére. Az ObjectDataSource szürke mezőként jelenik meg a tervezőfelületen, mert nem hoz létre korrektúrát; egyszerűen egy metódus meghívásával fér hozzá az adatokhoz egy adott objektumból. Az ObjectDataSource által visszaadott adatokat megjelenítheti egy adat-webvezérlő, például a GridView, a DetailsView, a FormView stb.
Megjegyzés:
Másik lehetőségként először hozzáadhatja az adatweb vezérlőelemet a laphoz, majd az intelligens címkéből válassza az <Új adatforrás> lehetőséget a legördülő listából.
Az ObjectDataSource mögöttes objektumának megadásához és az objektum metódusainak az ObjectDataSource-hoz való leképezéséhez kattintson az ObjectDataSource intelligens címkéjének Adatforrás konfigurálása hivatkozására.
3. ábra: Kattintson az Adatforrás konfigurálása hivatkozásra az intelligens címkéből (ide kattintva megtekintheti a teljes méretű képet)
Ekkor megjelenik az Adatforrás konfigurálása varázsló. Először meg kell adnunk azt az objektumot, amellyel az ObjectDataSource dolgozni fog. Ha a "Csak az adatösszetevők megjelenítése" jelölőnégyzet be van jelölve, a képernyő legördülő listája csak azokat az objektumokat listázza, amelyeket az DataObject attribútum díszített. Jelenleg a lista tartalmazza a TableAdapterst a Gépelt adatkészletben és az előző oktatóanyagban létrehozott BLL-osztályokat. Ha elfelejtette hozzáadni az attribútumot az DataObject üzleti logikai réteg osztályaihoz, nem fogja látni őket ebben a listában. Ebben az esetben törölje a jelet a "Csak adatösszetevők megjelenítése" jelölőnégyzetből az összes objektum megtekintéséhez, amelynek tartalmaznia kell a BLL-osztályokat (a DataTables, DataRows és így tovább, a Typed DataSet többi osztályával együtt).
Az első képernyőn válassza ki az osztályt ProductsBLL a legördülő listából, és kattintson a Tovább gombra.
4. ábra: Adja meg a használni kívánt objektumot az ObjectDataSource vezérlővel (ide kattintva megtekintheti a teljes méretű képet)
A varázsló következő képernyője arra kéri, hogy válassza ki az ObjectDataSource által meghívandó metódust. A legördülő lista felsorolja azokat a metódusokat, amelyek adatokat adnak vissza az előző képernyőről kiválasztott objektumban. Itt látható GetProductByProductID, GetProducts, GetProductsByCategoryIDés GetProductsBySupplierID. Válassza ki a GetProducts metódust a legördülő listában, és kattintson a Befejezés gombra (ha hozzáadta a DataObjectMethodAttribute metódusokat az ProductBLLelőző oktatóanyagban látható módon, ez a beállítás alapértelmezés szerint ki lesz választva).
5. ábra: Válassza ki a SELECT lapról az adatok visszaadásának módját (kattintson ide a teljes méretű kép megtekintéséhez)
Az ObjectDataSource manuális konfigurálása
Az ObjectDataSource Adatforrás konfigurálása varázslója gyors módot kínál a használt objektum megadására és az objektum meghívási módszereinek társítására. Az ObjectDataSource-t azonban a tulajdonságokon keresztül konfigurálhatja a Tulajdonságok ablakban vagy közvetlenül a deklaratív korrektúrában. Egyszerűen állítsa be a TypeName tulajdonságot a használni kívánt objektum típusára és az SelectMethod adatok beolvasása során meghívandó metódusra.
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetProducts" TypeName="ProductsBLL">
</asp:ObjectDataSource>
Az Adatforrás konfigurálása varázsló használata esetén is előfordulhat, hogy manuálisan kell konfigurálnia az ObjectDataSource-t, mivel a varázsló csak a fejlesztő által létrehozott osztályokat sorolja fel. Ha az ObjectDataSource-t a .NET-keretrendszer egy osztályához, például a Tagság osztályhoz szeretné kötni, hogy hozzáférjen a felhasználói fiók adataihoz, vagy a címtárosztály a fájlrendszer adatainak használatához manuálisan kell beállítania az ObjectDataSource tulajdonságait.
2. lépés: Adat webes vezérlő hozzáadása és kötése az ObjectDataSource-hoz
Miután hozzáadtuk az ObjectDataSource-t a laphoz, és konfiguráltuk, készen állunk arra, hogy adat-webvezérlőket adjunk a laphoz, hogy megjelenítsük az ObjectDataSource Select metódusa által visszaadott adatokat. Bármely adat-webvezérlő egy ObjectDataSource-hoz köthető; Nézzük meg, hogy az ObjectDataSource adatai megjelennek-e a GridView, a DetailsView és a FormView nézetben.
GridView kötése az ObjectDataSource-hoz
Vegyen fel egy GridView-vezérlőt az eszközkészletből a tervezőfelületre SimpleDisplay.aspx. A GridView intelligens címkéjében válassza ki az 1. lépésben hozzáadott ObjectDataSource-vezérlőt. Ez automatikusan létrehoz egy BoundFieldet a GridView-ban az ObjectDataSource Select metódusából visszaadott összes tulajdonsághoz (azaz a Products DataTable által meghatározott tulajdonságokhoz).
6. ábra: Rácsnézet lett hozzáadva a laphoz, és az ObjectDataSource-hoz van kötve (ide kattintva megtekintheti a teljes méretű képet)
Ezután testre szabhatja, átrendezheti vagy eltávolíthatja a GridView BoundFields mezőit az intelligens címke Oszlop szerkesztése lehetőségére kattintva.
7. ábra: A GridView boundFields mezőinek kezelése az Oszlopok szerkesztése párbeszédpanelen keresztül (kattintson ide a teljes méretű kép megtekintéséhez)
Szánjon egy kis időt a GridView BoundFields értékének módosítására, és távolítsa el a ProductID, SupplierID, CategoryID, , QuantityPerUnit, UnitsInStockUnitsOnOrder, és ReorderLevel BoundFields mezőket. Egyszerűen válassza ki a BoundFieldet a bal alsó listában, és a törlés gombra (a piros X) kattintva távolítsa el őket. Ezután rendezze át a BoundFieldseket úgy, hogy a CategoryName és SupplierName BoundFields megelőzze a UnitPrice BoundFieldet. Válassza ki ezeket a BoundFieldseket, majd kattintson a felfelé mutató nyílra. Állítsa be a HeaderText tulajdonságait a többi BoundFields számára Products, Category, Supplier és Price értékekre. Ezután formázza a Price BoundFieldet pénznemként, ha a BoundField HtmlEncode tulajdonságát False (Hamis) értékre állítja, és a DataFormatString tulajdonságát {0:c} értékre. Végül vízszintesen igazítsa a Price jobb oldali és a Discontinued középen lévő jelölőnégyzetet a ItemStyle/HorizontalAlign tulajdonságon keresztül.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ProductID" DataSourceID="ObjectDataSource1"
EnableViewState="False">
<Columns>
<asp:BoundField DataField="ProductName"
HeaderText="Product" SortExpression="ProductName" />
<asp:BoundField DataField="CategoryName"
HeaderText="Category" ReadOnly="True"
SortExpression="CategoryName" />
<asp:BoundField DataField="SupplierName"
HeaderText="Supplier" ReadOnly="True"
SortExpression="SupplierName" />
<asp:BoundField DataField="UnitPrice"
DataFormatString="{0:c}" HeaderText="Price"
HtmlEncode="False" SortExpression="UnitPrice">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:CheckBoxField DataField="Discontinued"
HeaderText="Discontinued" SortExpression="Discontinued">
<ItemStyle HorizontalAlign="Center" />
</asp:CheckBoxField>
</Columns>
</asp:GridView>
8. ábra: A GridView BoundFields már testre szabott (kattintson a teljes méretű kép megtekintéséhez)
Témák használata konzisztens megjelenéshez
Ezek az oktatóanyagok arra törekszenek, hogy eltávolítsák a vezérlőszintű stílusbeállításokat, ehelyett egy külső fájlban definiált kaszkádolt stíluslapokat használnak, amikor csak lehetséges. A Styles.css fájl olyan , DataWebControlStyle, HeaderStyleés RowStyle CSS-osztályokat tartalmazAlternatingRowStyle, amelyeket az oktatóanyagokban használt adat-webvezérlők megjelenésének diktálásához kell használni. Ennek érdekében beállíthatjuk a GridView CssClass tulajdonságát DataWebControlStyle értékre, valamint a HeaderStyle, RowStyle és AlternatingRowStyle tulajdonságainak CssClass értékeit ennek megfelelően.
Ha ezeket CssClass a tulajdonságokat a webes vezérlőben állítjuk be, nem szabad elfelejtenünk, hogy ezeket a tulajdonságértékeket kifejezetten be kell állítani az oktatóanyagainkhoz hozzáadott minden adat-web vezérlőelemhez. Kezelhetőbb módszer a GridView, a DetailsView és a FormView vezérlők alapértelmezett CSS-hez kapcsolódó tulajdonságainak meghatározása téma használatával. A téma olyan vezérlőszintű tulajdonságbeállítások, képek és CSS-osztályok gyűjteménye, amelyek a webhelyek lapjaira alkalmazhatók a közös megjelenés és megjelenés kényszerítése érdekében.
A témánk nem fog tartalmazni képeket vagy CSS-fájlokat (a webalkalmazás gyökérmappájában meghatározott stíluslap Styles.css as-is-t hagyjuk meg), de két kinézetet tartalmazni fog. A Skin egy olyan fájl, amely meghatározza egy webvezérlő alapértelmezett tulajdonságait. A GridView és a DetailsView vezérlőkhöz egy Skin-fájl tartozik, amely az alapértelmezett CssClasskapcsolódó tulajdonságokat jelzi.
Először adjon hozzá egy új bőrfájlt a projekthez, GridView.skin amelyet a jobb gombbal a projekt nevére kattintva a Megoldáskezelőben, majd az Add New Item (Új elem hozzáadása) gombra kattintva adhat hozzá a projekthez.
9. ábra: Névvel ellátott GridView.skin bőrfájl hozzáadása (kattintson ide a teljes méretű kép megtekintéséhez)
A bőrfájlokat egy témába kell helyezni, amely a App_Themes mappában található. Mivel még nem rendelkezünk ilyen mappával, a Visual Studio felajánlja, hogy létrehoz egyet számunkra az első Skin hozzáadásakor. Kattintson az Igen gombra a App_Theme mappa létrehozásához és az új GridView.skin fájl elhelyezéséhez.
10. ábra: A Visual Studio hozza létre a App_Theme mappát (kattintson ide a teljes méretű kép megtekintéséhez)
Ezzel létrehoz egy új témát a App_Themes GridView nevű mappában a Skin fájllal GridView.skin.
11. ábra: A GridView téma hozzá lett adva a App_Theme mappához
Nevezze át a GridView témát DataWebControls-nak (kattintson a jobb gombbal a App_Theme mappában található GridView mappára, és válassza ki az Átnevezés opciót). Ezután írja be a következő korrektúrát a GridView.skin fájlba:
<asp:GridView runat="server" CssClass="DataWebControlStyle">
<AlternatingRowStyle CssClass="AlternatingRowStyle" />
<RowStyle CssClass="RowStyle" />
<HeaderStyle CssClass="HeaderStyle" />
</asp:GridView>
Ez meghatározza az alapértelmezett tulajdonságokat minden olyan oldal bármely GridView-ra vonatkozó tulajdonságaihoz, amelyik a DataWebControls témát használja. Adjunk hozzá egy újabb Skint a DetailsView-hoz, egy adat-webes vezérlőhöz, amelyet hamarosan használunk. Adjon hozzá egy új skint a DataWebControls-témához, DetailsView.skin és adja hozzá a következő korrektúrát:
<asp:DetailsView runat="server" CssClass="DataWebControlStyle">
<AlternatingRowStyle CssClass="AlternatingRowStyle" />
<RowStyle CssClass="RowStyle" />
<FieldHeaderStyle CssClass="HeaderStyle" />
</asp:DetailsView>
A téma definiálása után az utolsó lépés a téma alkalmazása a ASP.NET lapra. A témák oldalról oldalra vagy a webhely összes oldalára alkalmazhatók. Használjuk ezt a témát a webhely összes oldalához. Ehhez adja hozzá a következő jelölést Web.config szakaszának <system.web> részéhez.
<pages styleSheetTheme="DataWebControls" />
Csak ennyi van benne! A styleSheetTheme beállítás azt jelzi, hogy a témában megadott tulajdonságok nem bírálhatják felül a vezérlőszinten megadott tulajdonságokat. Annak meghatározásához, hogy a témabeállítások elsőbbséget élvezzenek a vezérlőbeállításokkal szemben, használja az theme attribútumot a styleSheetTheme helyett; sajnos a témabeállítások nem jelennek meg a Visual Studio tervnézetben. A témákkal és bőrökkel kapcsolatos további információkért tekintse meg ASP.NET Témák és bőrök áttekintését és Server-Side Stílusok használata témák használatával című témakört; Lásd : ASP.NET témák alkalmazása a lapok témahasználatra való konfigurálásával kapcsolatos további információkért.
12. ábra: A GridView megjeleníti a termék nevét, kategóriáját, szállítóját, árát és megszűnt adatait (kattintson ide a teljes méretű kép megtekintéséhez)
Egyszerre egy rekord megjelenítése a DetailsView-ban
A GridView egy sort jelenít meg az adatforrás-vezérlő által visszaadott minden rekordhoz, amelyhez a rekordot köti. Vannak azonban olyan esetek, amikor egyetlen rekordot vagy egyszerre csak egy rekordot szeretnénk megjeleníteni. A DetailsView vezérlő ezt a funkciót kínálja, amely HTML-formátumban <table> jelenik meg, két oszlopmal és egy sortal a vezérlőelemhez kötött minden egyes oszlophoz vagy tulajdonsághoz. A DetailsView-ra úgy is gondolhat, mint egy GridView-ra, amelynek egyetlen rekordja 90 fokkal elforgatva van.
Első lépésként adjon hozzá egy DetailsView vezérlőt a GridView SimpleDisplay.aspx. Ezután kösse hozzá ugyanazt az ObjectDataSource-vezérlőt, mint a GridView. A GridView-hoz hasonlóan egy BoundField is hozzáadódik a DetailsView elemhez az ObjectDataSource metódus által visszaadott objektum minden tulajdonságához Select . Az egyetlen különbség az, hogy a DetailsView BoundFields elrendezése vízszintesen, nem függőlegesen történik.
13. ábra: Adjon hozzá egy DetailsView-t a laphoz, és kösse az ObjectDataSource-hoz (kattintson ide a teljes méretű kép megtekintéséhez)
A GridView-hoz hasonlóan a DetailsView BoundFields is módosítható, hogy az ObjectDataSource által visszaadott adatok testreszabottabb megjelenítését biztosítsa. A 14. ábrán a DetailsView látható, miután a BoundFields és CssClass a tulajdonságok konfigurálva lettek, hogy a GridView-példához hasonlóan jelenjenek meg.
14. ábra: A DetailsView egyetlen rekordot jelenít meg (kattintással megtekintheti a teljes méretű képet)
Vegye figyelembe, hogy a DetailsView csak az adatforrás által visszaadott első rekordot jeleníti meg. Ahhoz, hogy a felhasználó egyenként végiglépkedhessen az összes rekordon, engedélyeznie kell a lapozást a DetailsView-hoz. Ehhez térjen vissza a Visual Studióba, és jelölje be a Lapozás engedélyezése jelölőnégyzetet a DetailsView intelligens címkéjén.
15. ábra: Lapozás engedélyezése a DetailsView vezérlőben (ide kattintva megtekintheti a teljes méretű képet)
16. ábra: Ha a lapozás engedélyezve van, a DetailsView lehetővé teszi a felhasználó számára a termékek bármelyikének megtekintését (kattintson ide a teljes méretű kép megtekintéséhez)
A későbbi oktatóanyagokban részletesebben is szó lesz a lapozásról.
Rugalmasabb elrendezés egy rekord egyidejű megjelenítéséhez
A DetailsView meglehetősen merev abban, hogyan jeleníti meg az ObjectDataSource-ból visszaadott összes rekordot. Előfordulhat, hogy rugalmasabb nézetet szeretnénk az adatokról. Például ahelyett, hogy külön sorban jelenítenénk meg a termék nevét, kategóriáját, szállítóját, árát és megszűnt adatait, érdemes lehet a termék nevét és árát egy <h4> címsorban megjeleníteni, a kategória és a szállító adatai pedig kisebb betűméretben jelennek meg a név és az ár alatt. Előfordulhat, hogy nem szeretnénk az értékek mellett megjeleníteni a tulajdonságneveket (Termék, Kategória stb.).
A FormView vezérlő biztosítja ezt a testreszabási szintet. A mezők (mint a GridView és a DetailsView esetében) használata helyett a FormView sablonokat használ, amelyek lehetővé teszik a webvezérlők, a statikus HTML és az adatkötési szintaxis kombinációját. Ha ismeri az 1.x ASP.NET Repeater vezérlőt, akkor a FormView-ra úgy gondolhat, mint egy rekord megjelenítésére.
Adjon hozzá egy FormView-vezérlőt a SimpleDisplay.aspx lap tervezőfelületéhez. Kezdetben a FormView szürke blokkként jelenik meg, és tájékoztat minket arról, hogy legalább a vezérlő ItemTemplate-ját meg kell adni.
17. ábra: A FormView-nak tartalmaznia kell egy ItemTemplate (kattintson ide a teljes méretű kép megtekintéséhez)
FormView közvetlenül köthető egy adatforrás-vezérlőhöz FormView intelligens címkéje segítségével, amely automatikusan létrehoz egy alapértelmezettet ItemTemplate, valamint egy EditItemTemplate és InsertItemTemplate, ha az ObjectDataSource vezérlő InsertMethod és UpdateMethod tulajdonságai be vannak állítva. Ebben a példában azonban kössük az adatokat a FormView-hoz, és határozzuk meg ItemTemplate manuálisan. Először állítsa be a FormView DataSourceID tulajdonságát az ObjectDataSource vezérlőelem ID tulajdonságához, ObjectDataSource1. Ezután hozza létre a ItemTemplate terméket úgy, hogy a termék nevét és árát megjelenítse egy <h4> elemben, valamint az alatta lévő kategória- és feladóneveket kisebb betűméretben.
<asp:FormView ID="FormView1" runat="server"
DataSourceID="ObjectDataSource1" EnableViewState="False">
<ItemTemplate>
<h4><%# Eval("ProductName") %>
(<%# Eval("UnitPrice", "{0:c}") %>)</h4>
Category: <%# Eval("CategoryName") %>;
Supplier: <%# Eval("SupplierName") %>
</ItemTemplate>
</asp:FormView>
18. ábra: Az első termék (Chai) egyéni formátumban jelenik meg (kattintson ide a teljes méretű kép megtekintéséhez)
Az <%# Eval(propertyName) %> adatkötés szintaxisa. A Eval metódus a FormView vezérlőelemhez kötött aktuális objektum megadott tulajdonságának értékét adja vissza. Alex Homer egyszerűsített és bővített adatkötési szintaxisa a ASP.NET 2.0-s verziójában című cikkben talál további információt az adatkötések be- és kikapcsolásáról.
A DetailsView-hez hasonlóan a FormView csak az ObjectDataSource-ból visszaadott első rekordot jeleníti meg. Engedélyezheti a lapozást a FormView-ban, hogy a látogatók egyenként végiglépkedhessenek a termékeken.
Összefoglalás
Az üzleti logikai réteg adatainak elérése és megjelenítése kódsor írása nélkül is elvégezhető ASP.NET 2.0 ObjectDataSource-vezérlőjének köszönhetően. Az ObjectDataSource meghív egy osztály megadott metódusát, és visszaadja az eredményeket. Ezek az eredmények megjeleníthetők az ObjectDataSource-hoz kötött adat webes vezérlőben. Ebben az oktatóanyagban a GridView, a DetailsView és a FormView vezérlők ObjectDataSource-hoz való kötését vizsgáltuk.
Eddig csak azt láttuk, hogyan hívhat meg paraméter nélküli metódust az ObjectDataSource használatával, de mi a teendő, ha olyan metódust szeretnénk meghívni, amely bemeneti paramétereket vár, például az ProductBLL osztályt GetProductsByCategoryID(categoryID)? Ahhoz, hogy meghívjunk egy metódust, amely egy vagy több paramétert vár, konfigurálnunk kell az ObjectDataSource-t a paraméterek értékeinek megadásához. Ezt a következő oktatóanyagban fogjuk látni.
Boldog programozást!
További olvasás
Az oktatóanyagban tárgyalt témakörökről az alábbi forrásokban talál további információt:
- Saját adatforrás-vezérlők létrehozása
- GridView-példák a ASP.NET 2.0-s verzióhoz
- Témák a ASP.NET 2.0-ban
- Server-Side stílusok témák használatával
- Útmutató: ASP.NET témák programozott alkalmazása
Tudnivalók a szerzőről
Scott Mitchell, hét ASP/ASP.NET-könyv szerzője és a 4GuysFromRolla.com alapítója, 1998 óta dolgozik a Microsoft webtechnológiáival. Scott független tanácsadóként, edzőként és íróként dolgozik. Legújabb könyve Sams Tanuld meg saját magad ASP.NET 2.0 24 óra alatt. Itt érhető el mitchell@4GuysFromRolla.com.
Külön köszönet
Ezt az oktatóanyag-sorozatot sok hasznos véleményező áttekintette. Az oktatóanyag vezető véleményezője Hilton Giesenow volt. Szeretné áttekinteni a közelgő MSDN-cikkeimet? Ha igen, írj egy sort a mitchell@4GuysFromRolla.com-ra.