You are on page 1of 10

P

rogrameri se danas nalaze


na kljunoj prekretnici,
vanoj poput one kada su s
k a r a k t e r - b a z i r a n o g
korisnikog suelja (MS-
DOS) prelazili na grafiki
orijentirano suelje
(Windows). Velik izazov je
odabrati novi alat i prihvatiti novu pro-
gramersku paradigmu - Microsoftov .NET
Framework. Ova paradigma je temelj razvo-
ja, distribucije i koritenja XML web servisa
(XML Web Services), ali i ostalih tipova
aplikacija (desktop, mobilnih ili web ori-
jentiranih). Ideja vodilja prilikom razvoja
.NET framework modela bila je rijeiti fun-
damentalni problem prisutan od samih
poetaka raunalstva - integraciju.
U posljednjih nekoliko godina aplikacije
su evoluirale od pojedinanih sustava do
kompleksnih mrenih rjeenja koja se pro-
stiru na razliitim ureajima, servisima i
organizacijama. Povezivanje ovih solucija
je frustrirajui posao ako ste primorani na
koritenje tradicionalnih programerskih
alata i modela. XML web servisi su
Microsoftov odgovor na ovaj kompleksan
izazov.
Povijest
Davnih dana programeri su se morali
brinuti samo o tipu raunala za koje su
izraivali aplikacije. Nedugo zatim trebali
su obratiti panju i na razliite operativne
sustave koji su se mogli instalirati na isti
tip raunala. Ako danas elite biti pro-
gramer u trendu, morate pisati aplikacije
koje e se moi izvravati na bilo kojem
raunalu, na bilo kojem operativnom sus-
tavu, bilo gdje u svijetu. ASP.NET bi vam
mogao u tome pomoi.
Prije nego to zarijemo svoje zube u
ASP.NET, podsjetimo se onoga to mu je
prethodilo. U samom poetku Internet je
sluio za prijenos statinih HTML stranica
na osnovu HTTP zahtjeva internet pregled-
nika (browsera). Dotine web stranice
sadravale su hiperlinkove koji su koris-
nicima omoguavali jednostavno kretanje s
jedne stranice na drugu. Ali to je bilo sve
to se tie interaktivnosti.
Evolucijom Interneta, razvijali su se sve
sofisticiraniji naini koji su korisnicima
omoguavali veu kontrolu nad stranicama
koje su uitavali. HTML forme su omoguile
unos informacija koritenjem kontrola
slinih onima koje su koristili u Windows
operativnim sustavima (text box, list box,
check box). Podaci iz tih kontrola bili su
integrirani u HTTP upite koji su se slali na
web server nakon to bi korisnik pritisnuo
Submit tipku.
Web serverske tehnologije, poput CGI-ja
(Common Gateway Interface) razvijene su
da bi dodatno poveale interaktivnost. CGI
skripti koriteni su za presretanje
odreenih web zahtjeva i pokretanje pro-
grama koji su kreirali i vraali web stranice.
CGI se esto upotrebljavao i za pristup
bazama podataka.
Nakon nekoliko loih poetaka (ADC,
HTX), Microsoft se usredotoio na Active
Server Pages (ASP) tehnologiju da bi nam
olakao razvoj dinamikih HTML stranica i
interaktivnih web aplikacija.
ASP
Za podrku ASP stranicama, na server ste
uz Internet Information Server (IIS) tre-
bali instalirati ISAPI, koji je presretao sve
zahtjeve za stranicama s .asp ekstenzijom.
Zahtjevi i stranice na koje su oni upuivali
obraivani su unutar ASP run-time
okruenja. Dotino okruenje je
omoguavalo ubacivanje programskog
kda u HTML stranice. Skripti su se nalazili
unutar specijalnih blokova ogranienih s
<% i %> znakovima ili unutar <script> ele-
menata koji su imali runat=server atribut.
Na osnovu korisnikog zahtjeva, ovi skrip-
ti su procesirani, i kao rezultat su kreirane
HTML stranice koje su potom odailjane
korisniku.
Podsjetimo se kako je izgledao ASP kd:
<html>
<body>
<center>
<h3>Dobro doli!</h3>
<p><%Response.Write(Now())%></p>
</center>
</body>
P C C H I P I V E L J A A 2 0 0 3
S S A D R A J
104 POVIJEST
106 ASP.NET
107 IDE
110 TIPOVI KONTROLA
111 SQL
113 WEB KONTROLE
PC EXTRA
P I E : BORI S KRE T ONI K R E T O N I C @P C C H I P . H R
Bez obzira na
neosporan rast
vanosti web
aplikacija u
posljednjih
nekoliko godi-
na, mnogi
iskusni pro-
grameri svim
su silama nas-
tojali izbjei
sudjelovanje u
njihovom
razvoju. Zato?
Proces razvoja
web aplikacija
bio je neele-
gantan i ruan
ASP.NET
PRVI KORACI
104
Postavljajui novu strategiju razvoja aplikacija kao odgovor
novostvorenim potrebama modernog poslovanja, Microsoft je
za cilj postavio novi koncept: "Bilo kada, bilo gdje, na bilo
emu".
Na tom je konceptu razvijena .NET tehnologija. Ona
omoguava razvoj nove generacije web aplikacija. Ideja je da
se omogui pristup informacijama bilo kada, bilo gdje i preko
bilo kojeg ureaja. Za primjer moemo uzeti web servis za
generiranje izvjetaja, iji su finalni proizvod podaci u XML for-
matu. Kada se nalazite u uredu i koristite stolno raunalo,
pozivom dotinog web servisa dobivate bogat ispis i kompletnu
funkcionalnost. U sluaju da se nalazite izvan ureda, u jednom
od internet kafia, i pomou internet preglednika pristupate
web servisu, ponovno e vam biti poslani isti XML podaci, ali
e u ovom sluaju biti formatirani tako da se prilagode internet
pregledniku koji koristite i uz manje grafikih detalja zbog
utede vremena prijenosa. Istom web servisu moete pristupati
i preko mobilnih ureaja i GSM telefona. U svim e vam
sluajevima biti prikazani isti podaci, ali oni e biti formatirani
i prikazani u skladu s mogunostima ureaja koji koristite za
prikaz podataka.
"Bilo kada, bilo gdje, na bilo emu" je .NET vizija. Zadatak
Visual Studio .NET-a i ASP.NET-a, te .NET frameworka je
pojednostavljenje razvoja takvih svestranih aplikacija.
BILO KADA, BILO GDJE, NA BILO EMU! E
W E B P R O G R A M I R A N J E
V E L J A A 2 0 0 3 I P C C H I P
W E B P R O G R A M I R A N J E I P C E X T R A
</html>
Dodali smo jednu liniju izvrnog koda da
bismo demonstrirali nain na koji ASP
prikazuje dinamian sadraj. Korisnik nika-
da ne vidi kd izmeu <% i %> znakova.
Kada server primi zahtjev za ASP strani-
com, on e najprije izvriti ASP kd, a
rezultat e biti obina HTML datoteka koju
alje korisniku.
Funkcija Response.Write() ispisuje
podatke u izlazni HTML dokument, dok je
trenutano vrijeme i datum na serveru
rezultat funkcije Now().
<html>
<body>
<center>
<h3>Dobro doli!</h3>
<p>09.1.2003 14:45:47</p>
</center>
</body>
</html>
Budui da se ASP kd isprepletao s HTML
kodom, a za razvoj ASP aplikacija nije pos-
tojala adekvatna razvojna okolina, pro-
grameri su lako mogli napraviti pogreku.
Pogledajte ovaj jednostavan primjer
generiranja HTML tablice iz ASP koda:
<html>
<body>
<table>
<tr>
<th>Rb.</th>
<th>Naziv</th>
</tr>
<%
i = 1
Do Until i = 11
%>
<tr>
<td> <% = i %> </td>
<td> <% = Naziv ( & i
& ) %> </td>
</tr>
<%
i = i + 1
Loop
%>
</center>
<table>
</body>
</html>
I programiranje ovakvog, bezazlenog
primjera moglo je zavriti kobno po web
server. Ako ste zaboravili napisati liniju za
uveanje brojaa (i = i + 1) - blokirali ste
ga.
ASP - objektni model
ASP objektni model sastojao se od est
objekata: Request, Response, Session,
Application, ObjectContext i Server.
Request objekt se koristio za itanje
podataka koji su se nalazili unutar HTTP
zahtjeva za stranicom. Response objekt je
omoguavao ubacivanje podataka
(ukljuujui i HTML cookies) ili redirekciju
zaglavlja u povratnom nizu podataka koji
je upuen nazad na korisniki browser.
Prilikom prvog korisnikog zahtjeva za
ASP stranicom kreirao se session objekt.
On je ostajao aktivan sve do isteka pre-
definiranog razdoblja od posljednjeg zaht-
jeva istog korisnika. Session objekt se
koristio za pohranjivanje podatka i
objekata prilikom viestrukih zahtjeva za
ASP stranicama istog korisnika.
Application objekt je funkcijom slian ses-
sion objektu, s jednom razlikom. U njemu
su pohranjeni podaci i objekti svih koris-
nika od trenutka podizanja aplikacije do
njezinog zatvaranja. Pomou njega
moete pisati kd koji se automatski
izvrava prilikom startanja i zatvaranja
ASP aplikacije. ObjectContext je koriten
za potvrivanje ili prekidanje MTS
(Microsoft Transaction Server) i COM+
(Component Object Model) transakcija.
Server objekt je omoguavao kreiranje
COM objekata, enkodiranje HTML i URL
stringova, te za pronalaenje stvarnih
lokacija datoteka u odnosu na virtualne
putanje.
ASP - problemi
ASP model je bio uspjean i opeprih-
vaen, ali i kao takav je patio od mnogih
znaajnih nedostataka koji su doveli do
razvoja ASP.NET-a.
Svaki put kada je korisnik pristupao ASP
stranici, ASP kd se interpretirao liniju po
liniju. Ovo ste mogli zaobii kreiranjem
ActiveX DLL datoteka u Visual Basicu, ali
jednom pozvani DLL ostajao je u memori-
ji sve do sputanja web servera. Ako vam
web server fiziki nije bio dostupan, pos-
tupak registracije dotinih DLL-ova je bio
gotovo nemogu bez pomoi administra-
tora s druge strane Interneta. Stoga je
odravanje ASP aplikacija bilo prilino
zamreno.
Budui da je ASP programski kd bio
isprepleten s HTML kodom, web pro-
gramerima i dizajnerima bilo je gotovo
nemogue raditi svoj dio posla, a da se
pritom ne petljaju u tui dio.
Nimalo manji nedostatak predstavljala
je i injenica da nije postojala kvalitetna
integrirana razvojna okolina koja bi
olakala izradu i testiranje ASP aplikacija.
Microsoft InterDev, Macromedia Visual
UltraDev i ostali alati - olakali su razvoj,
ali se funkcionalnou nikada nisu prib-
liili razvojnim alatima za Windows
aplikacije. Kako su se za razvoj tipine

Programeri se danas nalaze na kljunoj


prekretnici, vanoj poput one kada su s
karakter-baziranog korisnikog suelja
(MS-DOS) prelazili na grafiki orijentirano
suelje (Windows). Velik je izazov
odabrati novi alat i prihvatiti novu pro-
gramersku paradigmu - Microsoftov .NET
Framework

T E K S T U A L N A S V O J S T V A I P E T L J E E
105
/ Primjer ASP koda
) Svaka petlja u ASP kodu je predstavljala
potencijalnu opasnost. Jedan pogrean
korak i web server je bio blokiran
106
P C C H I P I V E L J A A 2 0 0 3
P C E X T R A I W E B P R O G R A M I R A N J E
ASP stranice kombinirale mnoge razliite
tehnologije (VBScript, JavaScript,
Cascading Style Sheets, Dynamic HTML,
ADO, XML, XSL), programeri su se veinom
oslanjali na jednostavan Notepad.
Uobiajeno je da se ASP stranice
ponovno uitavaju kako korisnik unosi i
selektira podatke. Da prilikom ponovnog
uitavanja korisnik ne bi izgubio ono to
je prethodno unio, bilo je potrebno
napisati programski kd koji prihvaa
podatke i prilikom ponovnog uitavanja
stranice alje ih korisniku. Kada se radilo
o kompleksnim stranicama s velikim bro-
jem objekata, pisanje ovog koda bilo je
iscrpljujue i vrlo sloeno.
Prilikom razvoja intranet rjeenja,
moglo se pretpostaviti da svi korisnici
imaju instaliranu posljednju inaicu
Internet Explorera. U sluaju internet
rjeenja - to nije dolazilo u obzir. Ne
elite li ograniiti svoje web stranice
iskljuivo na osnovne HTML mogunosti,
morali ste pisati kd koji detektira tip i
verziju korisnikog browsera i prilagoava
mu HTML kd. Ako ste morali podravati
vie razliitih browsera, imali ste posla
preko glave. Spomenimo samo da podrka
za mobilne ureaje (PDA, telefoni) nije
niti postojala.
ASP.NET - prednosti
Kao izravan odgovor problemima koji su
programeri imali s ASP-om, dizajniran je
potpuno nov programski jezik ASP.NET
koji se namee kao rjeenje za razvoj
modernih i skalabilnih web aplikacija.
ASP.NET kod se ne interpretira, ve se
koristi .NET Common Language Runtime
(CLR). Drugim rijeima, programerima su
na raspolaganju svi .NET programski jezi-
ci, a kd se kompilira koritenjem .NET
Just-In-Time (JIT) kompilera.
Objektna orijentiranost ASP.NET-a znai
da svaka ASP.NET web stranica koju
kreirate rezultira kreiranjem klase derivi-
rane iz generike System.Web.UI.Page
klase. Prilikom svakog poziva ASP.NET web
stranice kreira se instanca ove klase.
elite li zamijeniti komponentu svoje
ASP.NET aplikacije, ne morate sputati
server. tovie, moete je samo prekopi-
rati preko stare. Ne morate brinuti ni o
tome koristi li tko u to vrijeme staru kom-
ponentu. ASP.NET e opsluivati sve pos-
tojee zahtjeve za starom komponentom,
dok e koritenjem nove komponente pro-
cesirati sve nove zahtjeve. Ovo je mogue
jer CLR dozvoljava istovremeno postojan-
je vie verzija iste komponente, ak i u
unutar istog procesa.
U arhitekturi ASP.NET-a jasno su odvo-
jeni HTML i programski elementi web
stranice. Tako je omogueno spremanje
tih elemenata u odvojene datoteke, pri
emu se znatno olakava suradnja izmeu
web programera i dizajnera.
Visual Studio .NET predstavlja izuzetno
bogato razvojno okruenje. Web pro-
grameri su sada, u usporedbi s Windows
programerima, po prvi put u mogunosti
ravnopravno razvijati aplikacije. Microsoft
IntelliSense podrka nije ograniena samo
na programski jezik (Visual Basic, Visual
C#), ve pomae i prilikom upisivanja
HTML i XML koda.
Postavke ASP.NET aplikacija spremljene
su u XML datoteke koje se jednostavno
mogu itati i mijenjati. Vano je i da ih
zajedno s ostalim datotekama koje
sainjavaju vau aplikaciju jednostavno
moete kopirati sa servera na server.
ASP.NET automatski ukljuuje skrivenu
kontrolu u web stranice u koju saima i
sprema stanja svih kontrola na stranici.
Ove (viewstate) podatke koristi za
automatsko popunjavanje podataka koje
je korisnik unio.
Malokoji je programski jezik jo u Beta 1
inaici pobudio toliko zanimanje program-
era kao to je bio sluaj s ASP.NET-om.
Sada vam je jasno i zbog ega. ASP pro-
grameri su bili oduevljeni, jer ne dogaa
se svaki dan da bude odgovoreno na sve
njihove probleme i zahtjeve.
Instalacija
elite li Visual Studio .NET smjestiti na
svoje raunalo, morate imati Windows
2000 ili XP operativni sustav. Sam postu-
pak instalacije je krajnje jednostavan i u
pravilu se svodi samo na mijenjanje CD-a.
Skreemo vam panju na to da najprije
instalirate MS Internet Information Server
(IIS) i MS SQL Server, pa tek onda .NET
Framework i Visual Studio .NET.
Jezici
ASP.NET web stranice ete odmah pre-
poznati po .aspx ekstenziji, a prilikom
njihove izrade ne morate nuno koristiti
Visual Basic .NET jezik, ve moete
koristiti bilo koji .NET jezik. Microsoft je
omoguio svim proizvoaima program-
skih jezika da ih prilagode .NET frame-
worku i dao im kompletne specifikacije
potrebne za razvoj. Tako danas imamo
priblino dvadesetak razliitih .NET pro-
gramskih jezika. Bez obzira koji pro-
gramski jezik koristili, dostupne su vam
sve mogunosti ASP.NET-a.
Ipak, najpoznatija alternativa Visual
Basicu je C#. Programski jezik C# je bazi-
ran na C i C++ programskim jezicima, a
sintaksa mu je vrlo slina Javi. Dvoumite
li se koji jezik odabrati, formula za prav-
ilan izbor je jednostavna. Ako ste dosad
programirali u C-u, C++-u, Javi ili
JavaScriptu, va izbor bi trebao biti C#,
jer ete se na njega bre priviknuti.
Svima ostalima preporuujemo Visual
Basic .NET-a.
I I S I C S S U . N E T - U E
* Iako vam Visual Studio .NET automatski
rjeava mnogo problema, ne bi bilo loe da se
upoznate s osnovama konfiguriranja Microsoft
Ineternet Information Servera (IIS).

Korisnik nikad ne vidi kd izmeu <% i %> znakova. Kada server


primi zahtjev za ASP stranicom, on e najprije izvriti ASP kd, a
rezultat e biti obina HTML datoteka koju alje korisniku

106
) Komponente ASP.NET-a
) Dizajner za Web
forme u Visual Studio
.NET-u
) Smjetanje
ASP.NET kontrola na
web formu
V E L J A A 2 0 0 3 I P C C H I P
W E B P R O G R A M I R A N J E I P C E X T R A
Web aplikacija - korak po
korak
Zbog jednostavnosti i rairenosti Visual
Basic programskog jezika, u ovom tekstu
smo ga koristili za pisanje koda u primjeri-
ma.
Primjere koje ete nai u ovom tekstu
izradili smo koritenjem Visual Studio .NET
integrirane razvojne okoline i Visual Basic
.NET-a. Naravno, Visual Studio .NET nije
nuan za razvoj ASP.NET aplikacija. Dovolj-
ni su vam Notepad (ili bilo koji tekst edi-
tor) i alati koje pokreete iz komandne lin-
ije, a besplatni su i dolaze u sklopu .NET
frameworka. Ipak, jednom kada osjetite
Visual Studio, teko da ete ga ikada vie
napustiti.
IDE
Samo zagrieni avanturisti jo i danas iz
komandne linije kompiliraju i pokreu .NET
programe. Moda ete nas nazvati raz-
maenima, ali bez integrirane razvojne
okoline (Integrated Development Environ-
ment - IDE) ne IDEmo u ozbiljnije projekte.
Za vas koji tek planirate zaroniti u pro-
gramerske vode, IDE je razvojna kontrolna
ploa kroz koju upravljamo projektom, u
kojoj piemo programski kd, pokreemo
debugger i pristupamo dokumentaciji,
odnosno programima za pomo.
VS .NET ima, po naem miljenju, trenu-
tano najbolju i najefikasniju integriranu
razvojnu okolinu. Alati za kreiranje
grafikog suelja nalaze se skriveni na
lijevoj strani ekrana ispod Server Explorera.
Oba prozora se otvaraju tek dovoenjem
kursora iznad naslova. Ovaj IDE predstavlja
znaajan pomak u odnosu na prethodnike.
Prije njegovog pojavljivanja razmiljali smo
o oajnikim mjerama, poput kupnje dva
21 monitora, ali s VS .NET-om i rezolucija
1024x768 sasvim je dostatna za ugodan
rad.
Radni dio ekrana je vienamjenski te slui
za unos programskog koda, kreiranje
grafikog suelja, a moe posluiti i kao
web browser, i kao preglednik programa za
pomo. Kada se istovremeno otvara vie
dokumenata, njihovi se nazivi pojavljuju na
vrhu radne povrine, pa je na taj nain
olakano pristupanje dotinim dokumenti-
ma.
Radni dio IDE-a je naslijedio sve osobine
web browsera, izmeu ostalog, i navigaciju
naprijed i nazad, ime je olakano
snalaenje i programiranje u projektima
koji sadre po nekoliko desetina ili stotina
formi, modula i klasa.
Tekst editor ima mogunost pohranjivan-
ja tekst u vie meuspremnika, pa tako
moete nekoliko razliitih blokova kda
prebaciti u meuspremnik i kopirati ih
prema eljama i potrebama. Editor ima i
word wrap funkciju, pa je programski kd
laki za itanje. Osim IntelliSense (daje
opcije i sintaksu kljunih rijei, te ih
automatski nadopunjuje) podrke za pro-
gramske jezike, editor podrava kreiranje
HTML dokumenata, CSS-a (Cascading Style
Sheets) i XML-a (Extensible Markup Langu-
age). Greke u sintaksi su podvuene, pa
izgledaju kao gramatike pogreke u MS
Wordu.
Kada prvi put pokrenete Visual Studio
.NET, pojavit e vam se HTML poetna
stranica koja sadri sve znaajnije linkove.
Download link vas vodi na MSDN (Microsoft
Developers Network) stranice, gdje moete
pronai najnovije alate, primjere program-
skog koda i ostale korisne stvari spremne
za prebacivanje na vae raunalo. Web
Hosting link daje popis siteova na koje
moete smjestiti svoje ASP.NET aplikacije.
My Profile link omoguava prilagoavanje
poetne stranice i Visual Studio okoline
vaim potrebama.
Temelji prve aplikacije
Otvorite Visual Studio i odaberite
File/New/Project ili pritisnite Ctrl+Shift+N.
H T M L E D I T I R A N J E E
( HTML editor podrava IntelliSense
tehnologiju
( Pritisnite Show All Files dugme
za prikaz datoteka koje sadre pro-
gramski kod
* Visual Studio automatski
kreira zasebnu datoteku u kojoj
e biti pohranjen programski kod
107
Extensible Markup Language (XML) je specijalizirani jezik koji slui prenoenju formati-
ranih podataka. XML koncepcijski je slian HTML-u, moemo ga smatrati metajezikom
koji upotrebljavamo za kreiranje drugih, specijaliziranih jezika.
XML je jezik koji programerima omoguuje kreiranje specifinih jezika za uporabu na
webu. Microsoft, IBM i Oracle prihvatili su ga kao standard za podizanje performansi i
funkcionalnosti Interneta.
XML se upotrebljava prilikom razmjene informacija izmeu poslovnih aplikacija, pa se
pomou njega jednostavno i jeftino mogu obavljati on-line transakcije. Moe biti
koriten i za prijenos zvunog i videozapisa, i openito bilo kojeg oblika podataka
putem weba.
XML specifikacija sastoji se od tri dijela. Prvi je dio (primarni) dizajniran kao uvod u ono
to kreira XML shemu. Drugi dio opisuje temeljne strukture koje se mogu kreirati
koritenjem XML sheme, i definira pravila provjere dokumenata, to omoguava izradu
XML procesora. U treem dijelu su definirani jednostavni tipovi podataka zbog lakeg
rukovanja datumima, brojevima i ostalim posebnim tipovima informacija.
Uporabom XML sheme programeri mogu bolje definirati tipove stringova u dokumentu
(npr. moete definirati predstavlja li broj u dokumentu cjelobrojnu vrijednost ili datum).
Definiranje stringova vano je prilikom razmjene informacija s korisnicima koji moda
ne koriste isti XML jezik.
Kompletnu specifikaciju XML jezika moete pronai na http://www.w3.org/XML/.
X ML ( E X T E N S I B L E MA R K U P L A N G U A G E ) E

ASP model je bio uspjean i opeprihvaen, ali i kao takav je


patio od mnogih znaajnih nedostataka koji su doveli do razvoja
ASP.NET-a

P C C H I P I V E L J A A 2 0 0 3
P C E X T R A I W E B P R O G R A M I R A N J E
Dijaloki okvir za kreiranje novog projekta
pojavit e se na ekranu. Za tip projekta
odaberite Visual Basic Projects, a iz popisa
predloaka (templates) selektirajte ASP.NET
Web Application. U polje za unos lokacije
projekta upiite http://localhost/PCchip/
PrviProjekt. Visual Studio e iz nje
automatski izdvojiti PrviProjekt kao naziv
projekta, i smjestiti ga u virtualni root
direktorij http://localhost/PCchip. Pritis-
kom na tipku OK, automatski e se kreirati
i novi poddirektorij za vau aplikaciju
(http://localhost/Pcchip/PrviProjekt).
Pripazite samo na to da vam prilikom
otvaranja projekta Internet Explorer nije
podeen na Work Offline.
Automatski e se kreirati i nova ASP.NET
stranica, ili - drugim rjenikom reeno -
web forma, pod nazivom WebForm1.aspx.
Ako niste mijenjali standardne postavke, na
formi e se pojaviti tekst koji vas
obavjetava da radite u grid modu (Grid
Layout) s apsolutnim pozicioniranjem.
Ako to kod vas nije sluaj, preporuujemo
vam da odaberite Format/Snap to Grid opci-
ju jer e vam to omoguiti lake poravna-
vanje kontrola na formi. Kliknite na
Toolbox, ili, ako ga ne moete pronai,
odaberite View/Toolbox opciju (Ctrl+Alt+X).
Otvorite Web Forms kategoriju i prevucite
na formu TextBox, Button i Label kontrolu
(isto tako moete i dvostruko kliknuti na
dotine kontrole, te ih naknadno razmjesti-
ti po formi). Selektirajte sve tri kontrole
tako da drei Shift tipku kliknete na njih
(moete i kliknuti lijevim gumbom mia na
formu, te povlaenjem mia uokviriti sve tri
kontrole). U Format izborniku odaberite
Align/Lefts, Make Same Size/Width (sve
kontrole e biti postavljene na irinu zadnje
selektirane kontrole), i Vertical
Spacing/Make Equal. Nakon uinjenog, vaa
bi forma trebala izgledati kao na slici.
Kliknite na HTML karticu koja se nalazi na
dnu form dizajnera. Obratite panju da
HTML kd odgovara kontrolama koje ste
kreirali u form dizajneru. Ispod HTML taga
za poetak forme dodat emo kratke
instrukcije:
<h3>Molimo Vas da unesete Vae
ime i pritisnete tipku</h3>
Budui da je IntelliSense podrka
ukljuena i prilikom editiranja HTML koda,
prilikom unoenja teksta automatski je
dodan tag za zatvaranje (</h3>)
Prebacite se ponovo na Design karticu,
odaberite label kontrolu i koritenjem
Properties prozora izbriite njezin tekst
(Label1). Zatim selektirajte tipku i promi-
jenite mu Text svojstvo u Molim Vas, pri-
tisnite!. Moete se ponovno prebaciti na
HTML pogled i uvjeriti se da su ove prom-
jene odmah uinjene i na HTML kodu.
Na Design kartici dvostruko kliknite na
button kontrolu. Ovim postupkom otvorili
ste prozor za unoenje programskog koda
(Code Window). U Button1_Click proceduru
umetnite sljedeu liniju:
Me.Label1.Text = Dobro doli
& Me.TextBox1.Text & !
Code prozor vam prikazuje sadraj code-
behind datoteke (WebForm1.aspx.vb). Za
svaku ASP.NET stranicu koju kreirate posto-
ji pripadajua datoteka koja sadri pro-
gramski kd. Taj kd je u biti ASP.NET klasa,
koja se koristi za prikazivanje stranice. Ako
u Solution Exploreru elite vidjeti code-
behind datoteke, kliknite na Show All Files
gumb koji se nalazi pri vrhu Solution
Explorer prozora. Isto ete postii i
odabirom Project/Show All Files opcije.
Vrijeme je za prvo pokretanje nae prve
ASP.NET web stranice. U SolutionExploreru
desnim gumbom kliknite na WebForm.aspx
datoteku i odaberite Build and Browse opci-
ju. Utipkajte svoje ime i kliknite na gumb.
Eto, stvarno nije bilo teko!
Osim unutar Visual Studio integrirane
okoline, ovoj stranici moete pristupiti i iz
Internet Explorera. Dovoljno je da utipkate
adresu:
http://localhost/Pcchip/PrviProje
kt/WebForm1.aspx
Transformacija HTML koda
na serveru
Provjerimo kako izgleda HTML kd nae
web stranice u Internet Exploreru. U
browseru desnim gumbom kliknite na stran-
icu i odaberite View Source. Odmah biste
trebali zamijetiti da se HTML kd prilino
razlikuje od onoga koji ste vidjeli u Visual
Studio .NET okruenju.
U Visual Studiju je label kontrola bila
definirana sljedeim kodom:
<asp:Label id=Label1 style=Z-
INDEX: 103; LEFT: 132px; POSI-
TION: absolute; TOP: 152px
runat=server
Width=156px></asp:Label>
Dok je u browseru HTML kd:
<span id=Label1
style=width:156px;Z-INDEX: 103;
LEFT: 132px; POSITION: absolute;
TOP: 152px></span>
Label kontrola je primjer ASP.NET server
kontrole. Obratite panju da u Visual Studio
code prozoru HTML kd labele sadri
runat=server atribut. Ovaj atribut
oznaava da je dotini HTML element
serverska kontrola koju ASP.NET, ovisno o
browseru koji korisnik upotrebljava, pret-
vara u odgovarajui HTML kd. U naem
sluaju ona je postala HTML span s id atrib-
utom, koji odgovara imenu label kontrole, i
style atributima, koji definiraju njezinu
veliinu i poloaj.
N A P R E D N I C S S E
* Web stranica pokrenuta unutar Visual
Studio integrirane okoline
108
) Mijenjanjem targetSchema
postavke izravno utjeemo na
kreiranje HTML koda
+ Svojstva koja promijenite
u Properties prozoru su
automatski podebljana
/ Naprednija web forma nainjena ASP-om
P C C H I P I V E L J A A 2 0 0 3
P C E X T R A I W E B P R O G R A M I R A N J E
Na ovom mjestu moemo provjeriti
injenicu koju smo naveli kao prednost
ASP.NET-a u odnosu na klasini ASP.
Naime, ako korisnik nau stranicu otvori u
nekom od starijih browsera koji ne
podravaju apsolutno pozicioniranje ele-
menata HTML stranice, ASP.NET e to pre-
poznati i kreirati drugaiji HTML kd. Kao
to smo rekli, ovo moemo provjeriti, i to
bez potrebe za instalacijom starog
browsera.
Prebacite se na design prozor nae stran-
ice u Visual Studiju. Kliknite na prazan
prostor na toj stranici. Na ovaj ste nain
selektirali kompletnu stranicu. U Property
prozoru potraite Document postavke, i
postavite targetSchema postavku na
Internet Explorer 3.02/Navigator 3.0.
Snimite projekt (Ctrl+Shift+S), desnom
tipkom kliknite na stranicu u Solution
Exploreru i odaberite Build and Browse.
Kliknite ponovno desnim gumbom na
stranicu u browseru i odaberite
ViewSource. Stariji browseri (koji odgovara-
ju ovoj targetSchema) ne podravaju apso-
lutno pozicioniranje. Stoga umjesto
koritenja koordinata u style atributima,
ASP.NET pozicionira elemente kreiranjem
HTML tablica, pa HTML kd labela izgleda
ovako:
<TR vAlign=top>
<TD colSpan=2
height=20></TD>
<TD>
<span id=Label1
style=width:156px;></span></TD
>
</TR>
</TABLE>
Ovakav HTML kd bit e generiran i u
sluaju da korisnik koji pristupa naoj
stranici ima instaliran stari browser, bez
obzira na vrijednost koja se nalazi
targetSchema svojstvu.
Tipovi serverskih kontrola
ASP.NET serverske kontrole moemo
podijeliti u dvije osnovne kategorije:
HTML kontrole i Web Forms kontrole (esto
ih skraeno zovemo web kontrole). One se
pojavljuju i kao dvije odvojene sekcije na
traci za alate (toolbox).
HTML kontrole su vrlo sline standard-
nim kontrolama koje koristimo prilikom
pisanja HTML koda. Njihove postavke
(properties) odgovaraju HTML atributima
koje upotrebljavamo prilikom formatiranja
standardnog HTML koda. Samo, za razliku
od klasinog HTML koda, u ovisnosti o tipu
korisnikog browsera, ASP.NET ih pretvara
u browseru kompatibilne HTML tagove.
Web kontrole u HTML editoru moete
lako prepoznati po asp prefiksu. Slino
HTML kontrolama, i ove kontrole
korisnikom browseru moraju poslati stan-
dardni HTML kd, jer to je jedino to
browser moe prikazati. Ali web kontrola-
ma moemo podeavati svojstva (proper-
ties), koristiti njihove metode (methods) i
programirati dogaaje (events). Sve to
daleko nadilazi ono to nam pruaju stan-
dardne HTML kontrole, a ujedno nam daje
slobodu i nove mogunosti za kreiranje
web stranica. Naposljetku, ASP.NET e se
pobrinuti o zbrkanoj pretvorbi kontrola u
HTML.
ASP.NET nam dozvoljava i kreiranje
vlastitih kontrola. Ova mogunost prilino
slii nainu na koji smo u Visual Basicu 6
kreirali ActiveX kontrole.
U veini sluajeva HTML kontrole emo
koristiti samo prilikom migracije ve pos-
tojeih stranica. Ako ve imamo izbora,
teta bi bila ne iskoristiti posebne
mogunosti koje nam pruaju web kont-
role.
Pristup bazi podataka
Jedna od najzanimljivijih (i najtraeni-
jih) stvari koje moete raditi u ASP.NET-u
svakako je programiranje baza podataka.
Za primjer emo izraditi ASP.NET aplikaciju
koja e pristupati Northwind bazi podataka
(dolazi s MS SQL Serverom kao primjer
baze). Prvo emo to napraviti koritenjem
HTML kontrola, a zatim i uporabom web
kontrola.
HTML kontrole u akciji
Otvorite novi projekt i nazovite ga
UvodBaze. Web formu nazovite
ProizvodiHTML.aspx. HTML kd je prilino
jednostavan:
<%@ Page Language=vb
AutoEventWireup=false
Codebehind=ProizvodiHTML.aspx.v
b
Inherits=UvodBaze.ProizvodiHTML
%>
<!DOCTYPE HTML PUBLIC -
//W3C//DTD HTML 4.0
Transitional//EN>
<HTML>
<HEAD>
<title>Proizvodi - HTML kon-
trole (PC Chip 2003)</title>
<meta content=Microsoft
Visual Studio.NET 7.0
name=GENERATOR>
<meta content=Visual Basic
7.0 name=CODE_LANGUAGE>
<meta content=JavaScript
name=vs_defaultClientScript>
<meta
content=http://schemas.microsof
t.com/intellisense/ie5
name=vs_targetSchema>
</HEAD>
<body
MS_POSITIONING=GridLayout>
<form id=Form1
method=post runat=server>
Odaberite kategoriju:
L A K O D O A S P - A O
AutoPostBack svojstvo ini-
cira postback za svaki event
kontrole
Sam postu-
pak instalacije
je krajnje jed-
nostavan i se
svodi samo na
izmjenu CD-ova

ASP.NET se namee kao rjeenje za


razvoj modernih i skalabilnih web
aplikacija

110
Kako su se za razvoj tipine ASP stranice kombinirale
mnoge razliite tehnologije (VBScript, JavaScript, Cascading
Style Sheets, Dynamic HTML, ADO, XML, XSL), programeri-
ma je Notepad bio godinama najdrai tekst editor
V E L J A A 2 0 0 3 I P C C H I P
W E B P R O G R A M I R A N J E I P C E X T R A
<select id=Kategorija
name=Category runat=server>
</select>
<input id=Prikaz
type=submit value=Prikai
proizvode name=Prikaz
runat=server>
<table id=Proizvodi
runat=server>
</table>
</form>
</body>
</HTML>
Potpun pristup podacima iz baze, popun-
javanje list box kontrole i tablice obavlja se
preko programskog koda koji se nalazi u
ProizvodiHTML.aspx.vb datoteci. Referencu
na tu datoteku moete vidjeti na samom
vrhu HTML koda.
Kodiranje
Objekte HTML server kontrole programi-
rate u code-behind klasi koju HTML stranica
nasljeuje. Visual Studio obavlja sav
posao potreban za kreiranje datoteke s pro-
gramskim kodom, ukljuujui i kreiranje
klase za vau stranicu koja je derivirana iz
System.Web.UI.Page klase .NET
Frameworka. Osim toga, za svaku serversku
kontrolu koju stavite na formu, Visual
Studio automatski kreira varijablu.
Public Class ProizvodiHTML
Inherits System.Web.UI.Page
Protected WithEvents
Kategorija As
System.Web.UI.HtmlControls.HtmlS
elect
Protected WithEvents
Proizvodi As
System.Web.UI.HtmlControls.HtmlT
able
Protected WithEvents Prikaz
As
System.Web.UI.HtmlControls.HtmlI
nputButton
Kao to moete primijetiti, imena vari-
jabli se podudaraju s ID atributima kontro-
la koje se nalaze na formi.
Page_Load
Programski kd koji emo upisati u
Page_Load proceduru koristi te varijable za
popunjavanje padajueg list boxa i tablice
na formi. Visual Studio automatski dodaje
Page_Load event proceduru klasi. Ova pro-
cedura se izvrava prilikom Load eventa
Page (uitavanje stranice) klase iz koje je
naa klasa derivirana.
Private Sub Page_Load(ByVal
sender As System.Object, _
ByVal e As System.EventArgs)
Handles MyBase.Load
Ova procedura je izuzetno vana i potreb-
na jer se izvrava svaki put kada klijent
pristupa ASP.NET stranicama (ukljuujui i
postback). U naem sluaju, smjestit emo
kompletan kd u ovu proceduru.
Napominjemo da smo ovoj proceduri
mogli dodijeliti i neko drugo ime. Naime,
sve .NET event procedure ne moraju nuno
biti imenovane po pravilu Objekt_Event (u
naem sluaju Page_Load). Dodjeljivanje
naziva Page_Load samo je pridravanje
konvencije koja nam omoguava lako pre-
poznavanje svrhe funkcije, a ovaj nain
dodjeljivanja imena procedurama dobro je
poznat Visual Basic programerima. Iako je
pridravanje te konvencije bilo obavezno u
prethodnim inaicama Visual Basica, u
Visual Basic .NET-u samo je preporueno.
SQL
Primarni je zadatak Page_Load eventa da
preko ADO.NET objekata pokupi podatke iz
Northwind SQL server baze podataka, te da
pomou tih podataka popuni HTML server
kontrole na stranici. Na sam vrh Visual
Basic datoteke (ispred ProizvodiHTML
klase) smjestite tri Import naredbe za
ADO.NET namespace koje emo koristiti.
Imports System.Data
Imports System.Data.SqlClient
Imports
System.Web.UI.HtmlControls
Ove nam linije ne slue ni za to drugo
osim da utedimo vrijeme prilikom tipkan-
ja i uinimo kd itkijim. One nam
omoguuju da ADO.NET klasama pristu-
pamo izravno preko njihovog imena, bez
ukucavanja kompletnog prefiksa. Na prim-
jer, bez Import naredbe za
System.Data.SqlClient deklaracija cmd
objekta bi izgledala ovako:
Dim cmd As
System.Data.SqlClient.SqlCommand
B A Z E P O D A T A K A U A S P . N E T - U O
< Rad s bazama
podataka u
ASP.NET-u
omoguavaju
Data kontrole
Standardne
komponente
koje su nam na
raspolaganju u
ASP.NET-u
111
Simple Object Access Protocol (SOAP) na neki je nain zbliio softversku industriju.
Baziran na XML-u i ne predstavlja nita novo, nego jednostavno pretvara uspostavljena
pravila iz prakse u industrijski standard.
SOAP je mreni protokol koji omoguava razmjenu informacija meu softverskim
objektima koji su nastali uporabom razliitih programskih jezika. SOAP je Microsoftova
vizija brisanja barijera izmeu razvojnih strategija baziranih na Windowsima i rjeenja
baziranih na Java strategiji. Uvoenjem SOAP-a Microsoft odstupa od svog DCOM
modela za razmjenu informacija Internetom.
Njegovim prihvaanjem, IBM i Sun su odgovorili na potrebe povezivanja razliitih
raunalnih sustava i na taj nain pronali put zbliavanju.
Microsoftova vizija sastoji se u tome da kompanije nee biti prisiljene koristiti jedan
model, ve e ovisno o situaciji moi koristiti model koji im u datom trenutku odgovara,
a SOAP e posluiti za integraciju i bezbolnu razmjenu podataka. SOAP je u biti poziv
na suradnju.
S OAP ( S I MPL E OBJ E CT ACCE S S PROT OCOL ) O
Web kontrola-
ma moemo
podeavati svo-
jstva (properties),
koristiti njihove
metode (meth-
ods) i programi-
rati dogaaje
(events)
P C C H I P I V E L J A A 2 0 0 3
P C E X T R A I W E B P R O G R A M I R A N J E
Uz Import naredbu koju smo prethodno
upisali, moemo pojednostaviti:
Dim cmd As SqlCommand
Da bismo mogli koristiti ADO.NET, na
projekt mora imati referencu na
System.Data, koju moete pronai na
References kartici unutar Solution Explorer
prozora.
Deklaracije ADO.NET varijabli trebate
smjestiti na poetak Page_Load procedure.
Deklaracija SqlConnection objekta ukljuuje
i konstruktor u kojemu je definirana veza
na SQL bazu podataka.
Dim cnn As New SqlConnection( _
Data Source=(local);User
ID=sa;Password=; & _
Initial Catalog=Northwind;)
Dim cmd As SqlCommand
Dim rdr As SqlDataReader
Postback
Pravilo je da se unutar Page_Load proce-
dure provjerava uitava li korisnik prvi put
ovu stranicu, ili se radi o postback uita-
vanju stranice. Page klasa u ASP.NET-u
sadri Postback svojstvo pomou kojeg to
moemo utvrditi.
Padajuu listu (drop-down list) trebamo
popuniti samo jednom, prilikom prvog
uitavanja stranice. ASP.NET e prilikom
svakog postbacka automatski uvati vrijed-
nosti pohranjene u toj listi.
U sljedeim linijama provjeravamo post-
back svojstvo. Ako ono nije true, znamo da
se radi o svjeem uitavanju stranice. Tada
se izvrava kd koji kreira ADO.NET
SqlDataReader objekt i kupi listu kategori-
ja iz baze podataka:
If Not Page.IsPostBack Then
cmd = New SqlCommand( _
SELECT CategoryID,
CategoryName & _
FROM Categories ORDER BY
CategoryName;, _
cnn)
cnn.Open()
rdr = cmd.ExecuteReader( _
CommandBehavior.CloseConnection)
Popunjavanje HTML liste
HTMLSelect klasa ima DataSource svojst-
vo, pa je popunjavanje liste vrlo jednos-
tavno. Takoer emo koristiti DataTextField
i DataValueField svojstva za pohranjivanje
teksta koji e se pojavljivati u listi, i inter-
no pohranjivanje vrijednosti elementa liste
(nije vidljiva na ekranu). Nakon postavl-
janja tih svojstava moramo pozvati
DataBind metodu kojom popunjavamo
listu:
With Kategorija
.DataSource = rdr
.DataTextField =
CategoryName
.DataValueField = CategoryID
.DataBind()
End With
rdr.Close()
Skrivena kontrola
Provjerite li HTML kd ASP.NET aplikacije
u web browseru (desni klik - View Source),
vidjet ete skrivenu kontrolu __VIEWSTATE.
<form name=Form1 method=post
action=ProizvodiHTML.aspx
id=Form1>
<input type=hidden
name=__VIEWSTATE
value=dDwxOTM2MTMxODA4O3Q8O2w8a
TwxPjs+O2w8dDw7bDxpPDE+Oz47bDx0P
HQ8cDxsPERhdGFUZXh0RmllbGQ7RGF0Y
VZhbHVlRmllbGQ7PjtsPENhdGVnb3J5T
mFtZTtDYXRlZ29yeUlEOz4+O3Q8aTw4P
jtAPEJldmVyYWdlcztDb25kaW1lbnRzO
0NvbmZlY3Rpb25zO0RhaXJ5IFByb2R1Y
3RzO0dyYWlucy9DZXJlYWxzO01lYXQvU
G91bHRyeTtQcm9kdWNlO1NlYWZvb2Q7P
jtAPDE7MjszOzQ7NTs2Ozc7ODs+Pjs+O
zs+Oz4+Oz4+Oz4/sqBlI+taJfswXfgUG
AkSVZ/1eQ== />
Ova kontrola je dio forme, pa se njezina
vrijednost alje web serveru prilikom pri-
tiska na tipku Prikaz (postback). Kriptirani
sadraj ove kontrole nije nita drugo do
skup svih vrijednosti svojstava kontrola
koje se nalaze na stranici i ije je
EnableViewState svojstvo postavljeno na
vrijednost true.
Za vrijeme postbacka ASP.NET moe
upotrijebiti ViewState podatke da bi
rekonstruirao stanje na stranici koje je
bilo prilikom njezinog posljednjeg slanja
korisniku. Ovo ASP.NET-u omoguava
detekciju promjena na stranici i ponovno
kreiranje dijelova forme koji se ne trebaju
promijeniti. U naem primjeru, Page_Load
event popunjava padajuu listu
(Kategorija) samo jednom za svaki ses-
sion, odnosno samo kada je stranica prvi
put pozvana. Za vrijeme postbacka lista se
automatski kreira koritenjem ViewState
podataka.
HTML tablica
Tablicu emo u naem sluaju popunja-
vati samo prilikom postbacka.
Pretpostavimo da je korisnik odabrao kate-
goriju i pritisnuo tipku Prikai Proizvode.
Popunjavanje HTML Table kontrole ne svodi
se samo na postavljanje DataSource svojst-
va i povezivanja podataka. Na nama je da
u tablicu dodamo retke, u retke dodamo
elije, a elije popunimo podacima.
Krenimo redom i kreirajmo zaglavlje
tablice:
Else postback - prikai tablicu
Kreiranje zaglavlja tablice
Dim row As HtmlTableRow
Dim cell As HtmlTableCell
W E B K O N Z O L E I M Y S Q L O
Datotekama za pomo moete
pristupati unutar IDE-a, ili ih moete
pokrenuti kao zasebnu aplikaciju
Web kontrolama moemo
podeavati svojstva (properties),
koristiti njihove metode (methods) i
programirati dogaaje (events)
Vie ne morate naputati VS IDE,
MS SQL server vam je nadohvat ruke

ASP.NET automatski ukljuuje skrivenu kontrolu u web stranicu u


koju saima i sprema stanja svih kontrola na stranici

112
A Pregledan i jednostavan
rad s viestrukim Windows
meuspremnikom
V E L J A A 2 0 0 3 I P C C H I P
W E B P R O G R A M I R A N J E I P C E X T R A
row = New HtmlTableRow()
cell = New HtmlTableCell(th)
cell.InnerText = ifra
Proizvoda
row.Cells.Add(cell)
cell = New HtmlTableCell(th)
cell.InnerText = Naziv
Proizvoda
row.Cells.Add(cell)
cell = New HtmlTableCell(th)
cell.InnerText = Stanje na
Skladitu
row.Cells.Add(cell)
Proizvodi.Rows.Add(row)
I tek na kraju emo ponovno upotrijebiti
ADO.NET za kreiranje liste podataka na
osnovu selektirane kategorije. Za svaki
redak u bazi podataka dodat emo redak u
naoj tablici:
Upisivanje podataka u
tablicu
cmd = New SqlCommand( _
SELECT ProductID,
ProductName, UnitsInStock _
& FROM Products _
& WHERE CategoryID = &
Kategorija.Value, _
cnn)
cnn.Open()
rdr = cmd.ExecuteReader( _
CommandBehavior.CloseConnection)
Do While rdr.Read
row = New HtmlTableRow()
cell = New
HtmlTableCell()
cell.InnerText =
rdr(ProductID).ToString
row.Cells.Add(cell)
cell = New
HtmlTableCell()
cell.InnerText =
rdr(ProductName).ToString
row.Cells.Add(cell)
cell = New
HtmlTableCell()
cell.InnerText =
rdr(UnitsInStock).ToString
row.Cells.Add(cell)
Proizvodi.Rows.Add(row)
Loop
rdr.Close()
End If
End Sub
Ovaj kd e generirati standardnu HTML
tablicu (provjerite je pritiskom na
ViewSource u browseru).
Web kontrole
Vrijeme je da iskuamo i drugi okus
ASP.NET-a. Ovo je HTML kd
ProizvodiWeb.aspx stranice:
<%@ Page Language=vb
AutoEventWireup=false
Codebehind=ProizvodiWeb.aspx.vb

Inherits=UvodBaze.ProizvodiWeb
%>
<!DOCTYPE HTML PUBLIC -
//W3C//DTD HTML 4.0
Transitional//EN>
<HTML>
<HEAD>
<title>Proizvodi - Web kont-
role (PC Chip 2003)</title>
<meta name=GENERATOR con-
tent=Microsoft Visual
Studio.NET 7.0>
<meta name=CODE_LANGUAGE
content=Visual Basic 7.0>
<meta
name=vs_defaultClientScript
content=JavaScript>
<meta name=vs_targetSchema
content=http://schemas.microsof
t.com/intellisense/ie5>
</HEAD>
<body
MS_POSITIONING=GridLayout>
<form id=Form1
method=post runat=server>
<asp:Label id=Label1
runat=server>
Odaberite
kategoriju:</asp:Label>
<asp:DropDownList
id=cboKategorija runat=serv-
er></asp:DropDownList>
<asp:Button id=btnPrikaz
runat=server Text=Prikai
A S P . N E T N A W E B U O
Jedan od trenutno najboljih hrvatskih web sajtova je komplet-
no izraen u ASP.NET-u
http://www.gotdotnet.com je odlino mjesto za potraiti
dodatne informacije o ASP.NET-u
113
.NET framework je platforma za razvoj, instalaciju i pokretanje XML web
servisa i aplikacija.
.NET framework se sastoji od dva glavna dijela: CLR-a (Common Language
Runtime) i FCL-a (Framework Class Library). CLR upravlja memorijom,
izvrava kod, brine se o sigurnosti koda, prevodi kod u strojni jezik (compila-
tion), te upravlja ostalim sistemskim servisima. CLR je dizajniran za maksi-
malno iskoritavanje performansi raunala na kojem se izvodi programski
kd, tako da se CLR brine o mnogim standardnim servisima za vrijeme
izvravanja kda. Napominjemo da se kd nikada ne interpretira. CLR
koristi Just-In-Time (JIT) kompiler koji prevodi kompletan CLR pseudo-kd u
CPU instrukcije prije izvravanja.
FCL je hijerarhijski set unificiranih biblioteka klasa. U FCL-u se nalazi kom-
ponentirani ASP.NET, ADO.NET (podsustav za rad s bazama podataka) i
Windows Forms (okolina za razvoj Windows aplikacija).
FCL je objektno orijentiran i usko povezan s CLR-om.
. N E T F R A ME WO R K O
P C C H I P I V E L J A A 2 0 0 3
P C E X T R A I W E B P R O G R A M I R A N J E 114
proizvode></asp:Button>
<br>
<asp:DataGrid
id=grdProizvodi runat=server
Visible=False
GridLines=None>
<HeaderStyle Font-
Bold=True
HorizontalAlign=Center></Heade
rStyle>
</asp:DataGrid>
</form>
</body>
</HTML>
Kao to moete vidjeti, sve kontrole na
ovoj stranici imaju prefiks asp, to znai da
radimo s web kontrolama. Ove web kont-
role posjeduju svojstva (properties),
metode (methods) i dogaaje (events). Sve
to ini nam ih mnogo privlanijima od
HTML kontrola.
Najzanimljivija razlika izmeu ove stran-
ice i ProizvodiHTML.aspx stranice je upora-
ba DataGrid kontrole za prikaz podataka
umjesto HTML tablice.
DataGrid
DataGrid je izuzetno mona kontrola. U
naem primjeru samo emo zagrepsti
povrinu njezinih stvarnih mogunosti, ali
u nekom od sljedeih PC Chipova imat ete
mogunost nauiti vie.
Poput veine web kontrola, i DataGrid
kontrola sadri objektna svojstva koja
mogu biti ugnijeena u nekoliko slojeva.
Na primjer, elimo li podebljati font u
zaglavlju, naredba bi izgledala ovako:
grdProizvodi.HeaderStyle.Font.Bo
ld = True
U HTML-u bi to svojstvo bilo postavljeno
HeaderStyle tagom:
<HeaderStyle Font-Bold=True
U Properties prozoru postavite GridLines
na vrijednost None, podebljajte (bold) i
centrirajte (center) tekst u zaglavlju (head-
er), i postavite Visible svojstvo na False
(prikazuje se samo nakon to korisnik
odabere kategoriju i pritisne tipku) kako bi
nam stranica u Internet Exploreru izgledala
isto kao u prethodnom primjeru. Uoite da
su u Properties prozoru automatski podebl-
jane promijenjene vrijednosti.
Za razliku od HTML Table kontrole, pop-
unjavanje DataGrid web kontrole krajnje je
jednostavno. Ona automatski kreira kolone
koje odgovaraju kolonama u SQL podacima
i automatski kreira zaglavlja koja odgo-
varaju imenima polja podataka.
Da bismo iskoristili tu prednosti, u SQL
naredbi emo kolonama dodijeliti priklad-
nija imena. Prouite ovaj dio koda
Page_Load eventa koji prikazuje DataGrid i
puni ga podacima. Ovaj kd se izvrava
samo kada je vrijednost Postback svojstva
True:
grdProizvodi.Visible = True
cmd = New SqlCommand(SELECT
ProductID [ifra Proizvoda], _
& ProductName [Naziv
Proizvoda], _
& UnitsInStock [Stanje na
Skladitu] FROM Products _
& WHERE CategoryID = _
&
cboKategorija.SelectedItem.Value
, cnn)
cnn.Open()
rdr =
cmd.ExecuteReader(CommandBehavio
r.CloseConnection)
grdProizvodi.DataSource = rdr
grdProizvodi.DataBind()
rdr.Close()
Nekoliko desetaka linija koda potrebnih
za popunjavanje HTML Table kontrole zami-
jenili smo sa svega nekoliko linija. Nije
loe.
Events
Dosad je korisnik nakon odabira kate-
gorije morao pritisnuti tipku da bi dobio
popis proizvoda. Ali to ako elimo da se
popis proizvoda pojavi odmah nakon to
korisnik odabere kategoriju, da ga
nepotrebno ne prisiljavamo da pritisne
tipku?
Jedine su razlike u odnosu na prethodni
primjer u tome to smo izbrisali tipku s
nae stranice te promijenili jedno jedino
svojstvo padajue liste. Naime,
AutoPostBack svojstvo standardno postavl-
jeno na vrijednost False, postavili smo na
True.
AutoPostBack
U naem smo primjeru kd za popunja-
vanje DataGrid kontrole mogli premjestiti u
SelectedIndexChanged event proceduru
cboKategorija padajue liste. No, to ne bi
nita promijenilo jer se Page_Load event
izvrava prilikom svakog postbacka.
Eventi kontrola na serverskoj strani nikad
se ne izvravaju sami. Eventi nastali na
osnovu promjena podataka akumuliraju
se (osim ako AutoPostBack nije True), a pri-
likom prvog postbacka najprije e se
izvriti Page_Load, pa tek onda oni.
Zagrieni Visual Basic programeri imati e
potekoa dok se ne naviknu na to.
Pokrenite na drugi primjer i pogledajte
HTML kd u browseru.
<input type=hidden
name=__EVENTTARGET value= />
<input type=hidden
name=__EVENTARGUMENT value=
/>
<script language=javascript>
<!
function
__doPostBack(eventTarget,
eventArgument) {
var theform =
document.Form1;
theform.__EVENTTARGET.value =
eventTarget;
theform.__EVENTARGUMENT.value =
eventArgument;
theform.sub-
mit();
}
// >
</script>
<span id=Label1>
Odaberite kategoriju:</span>
<select name=cboKategorija
id=cboKategorija
onchange=__doPostBack(cboKateg
orija,)
language=javascript>
<option
value=1>Beverages</option>
<option
value=2>Condiments</option>
</select>
Kao to moete vidjeti, ASP.NET je
kreirao JavaScript kd da bi inicirao post-
back, skrivenu kontrolu u koju se pohranju-
je informacija o tome koja je kontrola ini-
cirala event, i skrivenu kontrolu koja
pohranjuje argumente za taj event.

Programer
i se danas
nalaze na
kljunoj
prekretnici,
vanoj poput
one kada su
s karakter-
baziranog
korisnikog
suelja (MS-
DOS) pre-
lazili na
grafiki ori-
jentirano
suelje

A U T O M A T I K A I D E B U G I R A N J E O
< Napokon i
Web aplikacije
imaju dostojan
debug pro-
gram
Mogue je automatski izraditi HTML stranice s dokumentaci-
jom programskog koda

You might also like