
Mellékelt példa megnyitása előtt szükséges egy TipsTricksApp nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mellékelt mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
Apró, de praktikus fogások lehetnek a most bemutatandó kódsorok, melyeket alkalmazásunkba építve nagyobb feladatok elvégzésére is felhasználhatunk.
Webes dialógusablak
Az első feladatban egy kis párbeszédablakot jelenítünk meg a Web-alkalmazás főlapjának töltődése közben, melyen csak egy TextBox kontrol és egy gomb található azért, hogy a kért információt begyűjtsék és eljuttassák a szerverhez. Annak érdekében, hogy kihasználhassuk a szerver-oldali kontrolok előnyeit, a kis ablakunk egy egyszerű .aspx lap lesz, melyet egy JavaScript kód tölt be. A kis dialógusablakban tetszőleges információ bekérhető a felhasználótól, melyet aztán később felhasználhatunk. Felhasználhatjuk például e-mail cím bekérésére is, mellyel egy hírlevélre jelentkezhet az adott látogató. Mindezt úgy, hogy a hasznos felületet a legkevésbé foglalja.
A betöltést végző kódot egy OpenPopup nevű JavaScript függvényben helyeztük el, mely a HTML BODY tag onload eseményének kezelőfüggvénye lesz. A kis ablakocskát azonban csak a lap első töltődésekor szeretnénk megjeleníteni, ezért a függvényt csak ekkor hívjuk meg. Ennek érdekében egy kis ASP-kóddal befolyásoljuk a BODY tag megjelenését. Első betöltődéskor megadjuk az OpenPopup függvényt kezelőként:
<% if (!IsPostBack)
{
Response.Write("<body MS_POSITIONING=\"GridLayout\" onload=\"OpenPopup()\">");
}
PostBack esetén pedig nem:
else
{
Response.Write("<body MS_POSITIONING=\"GridLayout\" >");
}
%>
A BODY tag tehát kétféle felépítésben kerül kiírásra a HTML adatfolyamba.
Az ablak megjelenítő függvénye window objektum open metódusát használja a betöltéshez, mely paraméterként megkapja a betöltendő weblap URL-jét, valamint a megjelenítés jellemzőit egy karakterláncban. A beöltendő weblap a Popup.aspx oldal, az alkalmazás virtuális mappájában. Ez tartalmazza a megjelenő ablak méretét, és koordinátáit:
<script language="jscript">
function OpenPopup()
{
window.open("Popup.aspx","","left=200,top=100, width=180, height=60,");
return;
}
</script>
A kis ablakban bekérjük a felhasználó nevét, amelyet a Session objektumban helyezünk el a Session SessionID azonosítójával azonosítva. A későbbiekben innen olvassuk ki azt, amikor a gombra kattintunk a webForm1.aspx lapon.
Többsoros ToolTip
Második feladatként egy többsoros ToolTip-et jelenítünk meg a képernyőn akkor, amikor a WebForm1.aspx lapon a ’Megadott név’ feliratú gomb fölé toljuk az egérmutatót.
A HTML kontrolok esetén lehetőség van egy TITLE attribútum megadására, mely tartalmazza a megjelenő szöveget. Annak érdekében, hogy a szöveg tagolt legyen, csak escape szekvenciákat kell beszúrnunk a megfelelő helyekre a karakterláncba, a következő módon:

<INPUT title="A 'MEGADOTT NÉV' feliratú gombra kattintva
megjelenik mellette egy cimkén a
a felbukkanó ablakban megadott név!" ...>
Látható, hogy kocsi-vissza és line feed nem-nyomtatható karaktereket a ’
’ karaktersorral adjuk meg.
XML attribútumok
Harmadik érdekesség adattáblákkal és XML állományokkal kapcsolatos munkánkban jöhet jól. A példaprogramban a betöltődés után megjelenő DataGrid kontrol tartalmát egy ’products.xml’ nevű XML állományba írjuk ki a DataSet objektum WriteXml metódusával, paraméterként megadva a létrehozandó állomány nevét.
xmlSet.WriteXml(MapPath("products.xml"));
A DataSet objektum táblája – mely adatforrása a DataGrid kontrollnak – rendelkezik egy speciális oszloppal. Létrehozásakor megadtuk, hogy az oszlop értéke hogyan kerüljön felhasználásra akkor, mikor az XML állomány generálódik a WriteXml metódussal.
Vizsgáljuk meg az adott oszlop létrehozásakor felhasznált konstruktort:

DataColumn
Osztály: DataColumn
public DataColumn(
string columnName,
Type dataType,
string expr,
MappingType type
);
A konstruktorok azon változata, mellyel speciális felhasználásúként jelölhetünk meg egy oszlopot.
Paraméterek
string columnName
A létrehozandó oszlop neve.
Type dataType
Az oszlop típusa.
string expr
Kalkulált mezők esetén a létrehozás egyenlete karakterláncban megadva. Például "UnitPrice * Quantity", vagy dátumok esetén "Birthdate < #1/31/82#".
MappingType type
Egy felsorolt típus egy eleme, mellyel megadjuk, hogy az oszlop hogyan viselkedjen megjelenését tekintve, valamint XML állomány felépítésekor. Elemei lehetnek:
| Elem neve |
Magyarázat |
| Attribute |
Az oszlop értéke XML attribútumként fog szerepelni az állományban XML állomány felépítésekor. Például az IMAGE_INDEX oszlopunk a minden rekordot bevezető tagba kerül a következőként: <Products IMAGE_INDEX=”0”>. |
| Element |
Az oszlop értéke egy XML elem lesz. |
| Hidden |
Az oszlop rejtett lesz. |
| SimpleContent |
Az oszlop egy XmlText csomópont lesz. |
Példánkban a negyedik oszlopot tehát a következőképpen hoztuk létre:
DataColumn dc4 = new DataColumn("IMAGE_INDEX", Type.GetType("System.String"),"",MappingType.Attribute);
Negyedik paraméterként MappingType.Attribute elemet választottunk.
Az XML állományban minden rekordhoz három adat-oszlop lévén a táblázatban három elem fog tartozni, a negyedik oszlop értéke pedig egy attribútum értéke lesz a Products tagban:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Products IMAGE_INDEX="0">
<ID>1</ID>
<PRODUCT_NAME>Item1</PRODUCT_NAME>
<UNIT_PRICE>83982</UNIT_PRICE>
</Products>
...
</NewDataSet>