Professional Documents
Culture Documents
MC LC
BI S 1: M U V ASP.NET....................................................................... 6
1.1. Gii thiu tng quan cng ngh .NET ........................................................................ 6
1.1.1 S ra i ca .NET............................................................................................................6 1.1.2 .NET Framework l g ......................................................................................................7 1.1.3 Mt s u im chnh ca .NET framework.....................................................................9
1.4. Gii thiu mi trng tch hp (IDE) ca ASP.NET................................................ 11 1.5. To/lu/m/chy ng dng ASP.NET...................................................................... 13
1.5.1 To mi ...........................................................................................................................13 1.5.2 Lu ng dng Web..........................................................................................................14 1.5.3 M (Chy) ng dng .......................................................................................................14
3.4 Webform trong ASP.NET ......................................................................................... 39 3.5 Tm hiu cu trc trang ASP.NET............................................................................. 39 3.6 Code behind v vit code pha Server........................................................................ 42 3.7 HTML Server Controls v Web controls ................................................................... 43
3.7.1 Gii thiu.........................................................................................................................43 3.7.2 Cch thc to phn t HTML Server Control v ASP.NET control...............................43
7.4 Truy cp thuc tnh, phng thc ca cc phn t con trong UCC............................71 7.5 Minh ha to mt s iu khin .................................................................................73
9.4 Session Object ...........................................................................................................87 9.4.1. Bin Sesstion .........................................................................................................87 9.4.2. i tng Session .................................................................................................88 9.5 Application Object.....................................................................................................88
9.5.1 i tng Application dng lm g ? .........................................................................88 9.5.2. Khi nim bin ton ng dng .......................................................................................88 9.5.3. i tng Application....................................................................................................88
Mt s bi tp tng hp: ...................................................................................... 89 BI 10: THC HNH ......................................................................................... 94 BI 11. Truyn d liu gia cc webpage,......................................................... 94 MasterPage v g ri (Debug) chng trnh...................................................... 94
11.1 Truyn (Post) d liu gia cc trang bng m lnh C# ............................................94 11.2 Truy xut n cc phn t bng phng thc FindControl ......................................94 11.3 Truy xut n trang gi thng qua thuc tnh PreviousPage. ...................................94 11.4 MasterPage ..............................................................................................................94 11.5 G ri.......................................................................................................................97
11.5.1 Gii thiu.......................................................................................................................97 11.5.2 Chy ng dng ch g ri .....................................................................................97 11.5.3 Khi nim im dng ....................................................................................................97
11.2 S dng Custom Error page..................................................................................... 97 11.3 Ghi cc vt gy li (Trace errors) ............................................................................ 97 11.4 S dng cng c g ri/ Menu Debug .................................................................... 97 11.5 Tracing li mc trang/ Mc ton ng dng .......................................................... 97
BI 14: THC HNH ....................................................................................... 111 BI 15: Tm hiu v ng dng c ch Data Binding....................................... 118
15.1 Gii thiu DataBinding.......................................................................................... 118 15.2 Data Binding ......................................................................................................... 118
15.2.1 Dng gn kt d liu n (Single DataBinding) .........................................................118 15.2.2 Dng gn kt d liu c s lp li (Repeated Data Binding) ......................................119
BI 16: THC HNH ....................................................................................... 129 BI 17: Lm vic vi GridView ........................................................................ 133
17.1 Gii thiu tng quan .............................................................................................. 133 17.2 Tm hiu lp GridView ......................................................................................... 133
17.2.1 Cc thuc tnh v ct thuc tnh..................................................................................133 17.2.2 Cc style p dng cho GridView.................................................................................134 17.2.3 Cc s kin ..................................................................................................................135 17.2.4 Cc phng thc .........................................................................................................136
BI 18: THC HNH ....................................................................................... 148 BI 19: S dng Templates ............................................................................... 155
19.1 Gii thiu tng quan ..............................................................................................155 19.2 Cc iu khin h tr Templates............................................................................155
19.2.1 Mt s iu khin h tr Template thng dng ........................................................155 19.2.2 Cc loi Template........................................................................................................155
HNG YN 7/2008
V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 5
BI S 1: M U V ASP.NET
Mc tiu: Kt thc bi hc, sinh vin c th
Nu c cc c im chnh ca cng ngh .NET M t c cc thnh phn c bn bn trong .NET Framework Ci t v cu hnh h thng chy cc trang ASP/ ASP.NET S dng h thng IDE ca VS 2008 to, lu v chy ng dng web Nu c cc u im ca web ng - DHTML nh dng trang web s dng CSS Truy xut cc thuc tnh ca phn t web thng qua CSS v Javascript
Ni dung
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu y ca cc ngn ng lp trnh. Vic s dng .NET khng ch gip pht trin cc ng dng n l m cn c th pht trin cc ng dng phn tn qui m rt ln; .NET lm gim thiu thi gian pht trin ng dng, nng cao r rt cht lng sn phm phn mm. Phin bn .NET u tin (v 1.0) c Microsoft a ra th trng vo nm 2001. 1.1.2 .NET Framework l g . Thng thng, mi ngn ng lp trnh u c mt tp cc th vin ring, chng hn: VC++ th c th vin chnh l msvcrt.dll; Visual Basic th c msvbvm60.dll Cc th vin ny cha cc hm, th tc c bn ca mi ngn ng (v d hm, th tc x l xu, x l ton hc,). Tt c nhng th ny c ngha logic ging nhau nhng v cch s dng hay c php th hu nh l khc nhau. iu ny khin cho mt lp trnh vin C++ khng th p dng nhng kin thc h bit sang VB hoc ngc li. Hn na, vic pht trin b th vin ring cho mi ngn ng nh vy l qu d tha. tng ca Microsoft l KHNG xy dng mt tp th vin ring bit cho tng ngn ng lp trnh m s xy dng mt b th vin dng CHUNG. Tp th vin dng chung ny hnh thnh nn mt b khung (Framework) cc lp trnh vin vit ng dng trn b khung sn c . B Khung ny thc cht l mt tp cc th vin c xy dng sn, p ng mi nhu cu pht trin cc ng dng Desktop, Network, Mobile, web
M hnh xy dng phn mm bng ngn ng truyn thng Cc thnh phn v chc nng chnh trong .NET Framework Common Language Runtime (Trnh thc thi ngn ng chung): Sau khi ng dng c bin dch ra file Exe (exe ny khc vi file exe thng thng. Ni dung ca file exe ny tun theo mt chun/ngn ng chung, d l vit bng C# hay VB.NET. Ngn ng ny gi l ngn ng chung), tip theo file exe trung gian ny c th chy c trn my hin hnh th cn phi c bin dch ra m my tng ng. Vic bin dch v chy c l nh Chng trnh thc thi ngn ng chung CLR (Common Language Runtime). Base Class Library: L tp cc th vin cha cc lp c bn s dng trong tt c cc ngn ng .NET. V d cc lp x l xu, x l ton hc ADO.NET: L tp cc th vin chuyn dnh cho thao tc vi C s d liu. ASP.NET: Cc th vin dnh cho pht trin cc ng dng Web (webform). V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 7
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Windows Forms: Cc th vin dnh cho pht trin cc ng dng Windows (winform). Common Language Specification: Phn ny c nhim v c t ngn ng chung cc chng trnh vit trn cc ngn ng lp trnh khc nhau phi tun theo. Ni cch khc, bin dch cc chng trnh vit trn cc ngn ng lp trnh khc nhau v mt ngn ng thng nht chung (Common Language). Nh iu ny m Cc ngn ng lp trnh.
M hnh bin dch v thc thi chng trnh ca ng dng .NET (1)
M hnh bin dch v thc thi chng trnh ca ng dng .NET (2)
Mt ci nhn khc v m hnh bin dch v thc thi ng dng 1.1.3 Mt s u im chnh ca .NET framework Tt c cc ngn ng u tha hng mt th vin thng nht. Khi sa cha hay nng cp th vin ny th ch phi thc hin mt ln. Phong cch pht trin ng dng nht qun v tng t nhau gia cc ngn ng lp trnh. C th chuyn i sang ngn ng lp trnh .NET khc nhau mt cch d dng. Vit cc ng dng webform khng khc nhiu so vi ng dng winform. Cung cp mt tp th vin truy xut CSDL thng nht (ADO.NET) cho mi ngn ng .NET. V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 9
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu H tr c ch Write one Run everywhere (Vit mt ln chy mi ni). Mt ng dng vit bng .NET c th chy trn bt c h iu hnh no m khng cn phi sa li code, min l my c ci .NET framework. Cung cp h thng kiu chung (Common Type), do vy m bo tnh thng nht v kiu d liu gia cc ngn ng lp trnh. Cho php s dng nhiu ngn ng lp trnh trong cng mt d n. Kt tha v s dng cho gia cc ngn ng lp trnh d dng nh trn cng mt ngn ng (C th vit mt class trn C#, sau k tha trong VB.NET v ngc li). Vic trin khai (Deploy) cc ng dng d dng. Ch cn Copy-and-run (copy l chy). Khng cn ci t v trnh c a ngc DLL nh trc y.
10
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Vic ci t v cng d dng, ch vic chy file Setup sau chn cc mc nh khi c hi. Tuy nhin, tit kim khng gian a th ch nn chn cc sn phm cn thit ci t.
Ca s giao din chnh ca mi trng pht trin tch hp. Trong : - Tab Design hin th trang web ch Design, tc l cho php sa cha ni dung trang web trc quan.
M trang ch Design
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu - Tab Source: M trang ch m ngun HTML. Ti y ngi dng c th son tho trc tip cc th HTML.
M trang ch Source - Tab Split: Cho php xem trang web ng thi c hai ch .
M ca s son Code (C#, VB.NET *** Ngoi thao tc trc tip thng qua h thng menu, nt lnh, ngi dng cn c th s dng t hp cc phm tt. (M menu bar v xem t hp phm tt bn cnh). V d: Shift+F7 xem ch Design, F7 xem ch Code, F4 Focus ti Properties.
12
1.5.2 Lu ng dng Web - Nhn Ctrl-S lu trang hin ti - Nhn Ctrl-Shift-S lu ton b cc trang. 1.5.3 M (Chy) ng dng a) M ng dng web. Nhn t hp phm Alt-Shift-O Vo Menhu File, chn : Open Web Site C th m ng dng web theo mt trong cc cch nh sau:
M ng dng web t nhiu ngun. b) Chy ng dng web i vi ASP.NET, ton b ng dng web c th c bin dch thnh file nh phn chy nhanh hn. Tuy nhin ASP.NET cng cho php ngi dng chy tng trang ring bit. Nhn F5 (Hoc biu tng Debug trn trnh duyt. trn thanh cng c) chy ng dng v cho php
Nhn Ctrl-F5 chy ng dng nhng khng cho Debug trn trnh duyt. Trong trng hp mun chy chng trnh v g ri mc dng lnh/ th tc th c th nhn F8, Shift-F8.
14
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Ngi dng c th chy (Browse) trang web bt k bng cch chn, sau click chut phi v chn mc View In Browser (Hoc nhn t hp phm CtrlShift-W). Trong trng hp c nhiu trnh duyt trong my th c th chn trnh duyt mc nh khi View In Browser bng cch click chut phi ln trang v chn Browse With nh hnh bn.
- p dng: < P id = Chuong> y l mu , c ch 20pt v m </P> < H1 id = Chuong> y cng l mu , c ch 20pt v m </H1> <H1 id=xyz> y th khng phi mu , v c thuc tnh ID Chuong</H1>. 1.7.3 nh dng bi b chn th (tag) Khi mun cho mt lot cc phn t cng loi c nh dng ging nhau m khng cn ID ging nhau th ngi nh ngha CSS kiu b chn: C php: <style Type = text/css> Tn_Loi_Th { Tn_Thuc_tnh: Gi_Tr; Tn_Thuc_tnh: Gi_Tr; Tn_Thuc_tnh: Gi_Tr; } </style> V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 16
V d y v B chn ID
V d v nh ngha b chn th 1.7.4 nh dng bi lp (Class) Cn mt cch nh ngha khc hay dng nht v linh hot nht l cch nh ngha lp, tng ch o l: Ta nh ngha sn mt lp cha cc nh dng v khi mun p dng nh dng cho phn t no n th ch vic gn lp ny cho phn t. V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 17
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu C php nh ngha lp nh sau:
<style type="text/css"> .<Tn_Lp> { Tn_Thuc_Tnh: Gi_tr; Tn_Thuc_Tnh: Gi_tr; Tn_Thuc_Tnh: Gi_tr; } </style>
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu 1.7.5 Vn t chc lu tr. Cc nh ngha v CSS c th c t ngay trong tp ngun nhng cng c th c t ring ra mt tp khc. Tp ny thng c ui m rng l style. Ni dung ca tp ch cha cc nh ngha CSS (Gm nh ngha b chn ID, b chn th v lp). V d v mt tp CSS v cch tham chiu (s dng) tp .
S dng
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu - ly tt c cc phn t c cng gi tr name = chkMatHang, ta vit: document.getElementsByName("chkMatHang"), lnh ny s tr v mt mng cc phn t c gi tr l chkMatHang. - ly tt c cc th l input, ta vit: document.getElementsByTagName("input"), lnh ny cng tr v cho ta mt mng cc phn t. ** Ch : Khi kt qu tr v l mt mng th c th duyt bng vng lp, v d:
<html> <body> <input type=text value = ASP.NET> <form id=form1 action= method=post> <script language="javascript" type="text/javascript"> var KetQua = document.getElementsByTagName("input"); var i; for (int i=0; i<KetQua.length; i++) { alert("Gi tr ca text box " + i + " l : " + KetQua[i].value); } </script> </form> </body> </html>
1.8.2 Truy xut cc thuc tnh CSS Trong qu trnh hot ng ca website, c th c nhng lc ta cn phi sa i gi tr thuc tnh CSS no ca mt phn t, khi ta cn phi truy cp n thuc tnh ny. C php truy cp nh sau: window.<ga tr ID>.style.<thuc_Tnh> hoc <gi tr ca th>.style.<thuc_Tnh> hoc window.<Gi tr Name>.style.<thuc_Tnh> hoc <Gi tr Name ca th>.style.<thuc_Tnh> V d, c th c t CSS nh sau:
<html> <body> <input type="text" id="txtThongBao" name="txtTB" Style = "color:white; background-color:Blue" value = "y l mt thng bo c ch trng v nn ...." /> <input type="button" value="Click here" onclick="ChangeColor()" /> <script language="javascript" type="text/javascript"> function ChangeColor() {
20
*** Ch : Trong cc ng dng web ngy nay, thuc tnh name t c dng v thuc tnh id c s dng ph bin hn. V vy, nh danh cho cc phn t trong trang web, chng ta nn s dng thuc tnh id thay v name (tr nhng ngoi l).
BI S 2: THC HNH
Mc tiu: Kt thc bi thc ny, ngi hc c th
To v nh dng cc th HTML bng CSS Truy xut cc i tng trnh duyt v cc phn t HTML bng JavaScript. To trang web ng k c x l tnh hp l ca d liu nhp vo. Ni dung:
nh dng cc phn t bng CSS v s dng JavaScript kim tra d liu Yu cu:
To mt trang web trong VS 2008 phc v vic nhp thng tin v cn b. Trang web ny c to trn IIS Cc b. S dng cc style nh ngha cho cc phn t. S dng JavaScript kim tra tnh hp l ca d liu. c t giao din, chc nng v cc rng buc: 1. Giao din (Trang bn) 2. c t x l - Khi ngi dng nhn vo nt th thc hin gi ton b ni dung ang nhp ca trang hin hnh sang trang CapNhatCanBo.aspx. - Khi ngi dng nhn vo nt reset tr v gi tr mc nh (nh trong hnh). 3. th ni dung trong cc nhp c
c t rng buc H v tn khng c rng v phi <= 40 k t. Ngy, thng nm phi hp l. Cc trng nh du * l bt buc phi c. Cc trng s (nh ngy sinh, h s lng,) phi l cc s, khng c l k t. Cc hp Textarea khng c qu 1000 k t. cc hp text, khi ngi dng click chut (focus) th gi tr mc nh s b xa cho ngi dng g gi tr mi. Nu ngi dng di chuyn sang phn t khc m khng nhp gi tr no th t li gi tr mc nh nh ban u. Khi trng no nhp sai th s t focus vo ng trng sai .
4. Mt s kin thc cn thit v gi : nh ngha style cho cc mc ging nhau t thuc tnh Action cho form chuyn thng tin cho trang bt k Dng hm isNaN (n) kim tra xem n c phi l s hay khng. Dng phng thc focus ca phn t t tiu im. To cc phn t kiu submit v kiu reset cho nt Cp nhp v nhp mi. Vit mt hm kim tra cho s kin Onclick ca nt Cp nht. Nu khng mun cho mt s kin no (v d onclick) kch hot th vit trong s kin l return false hoc return KQ; vi KQ l mt biu thc, hm c gi tr false
22
Hng dn:
1. nh ngha style: Khi thit k giao din cho trang web, trc ht cn xc nh xem c nhng phn t no cng mt nh dng (style). Khi ta nn nh ra mt class cha cc nh dng mong mun p dng cho cc phn t cng loi ny.
Lession02.css
.HeadTitle { font-size: xx-large; font-weight: bold; text-align: center; color:Purple; margin-bottom:30px; } .CellSpace { border-spacing:1px; } .Tiu__Chnh { color:White; background-color:Purple; font-size:12pt; font-weight:bold; margin:5px 0px 5px 0px; height:25px; } .Ct1 { color:Gray; font-style:italic; text-align:right; width:30%; } .Ct2 { width:70%; text-align:left; } .TextboxDi { width:99%; text-align:left; }
24
<body > <form id="form1" action="CapNhatCanBo.aspx" method="post" > <div style="text-align:center"> <p style="border-bottom:solid; border-width:thin; font-size:20pt; margin:0; padding:0X; border-spacing:0px"> CHNG TRNH QUN L CN B VERSION 1.0 </p><br /> <br /> <p class="HeadTitle">NHP H S CN B</p> <table class="Table"> <tr class="CellSpace"> <td colspan="2" class="Tiu__Chnh">THNG TIN C NHN</td> </tr> <tr> <td class="Ct1">*H v tn</td> <td class="Ct2"><input type="text" id="HoVaTen" class="TextboxDi" /> </td> </tr> <tr> <td class="Ct1">*Ngy sinh (ngy/thng/nm)</td> <td class="Ct2"> <select id="NgaySinh"> <option value="">1</option> <option value="2">2</option> </select> / <select id="cboThangSinh" > <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> / <select id="NamSinh"> <option value="1950">1950</option> <option value="1951">1951</option> <option value="1952">1952</option> </select> Gii tnh: <input type="radio" id="optNam" checked="checked" /> Nam
26
28
<tr> <td class="Ct1">Ghi r Tn trng, ngnh hc, thi gian, loi hnh,vn bng, chng ch</td> <td><textarea class="TextboxDi" cols="100" rows="5"></textarea> </td> </tr> <tr> <td colspan="2" style="color:Blue"> ** Loi hnh: Chnh qui, ti chc, chuyn tu, bi dng; vn bng: Tin s, thc s, c nhn, k s. </td> </tr> <tr class="Tiu__Chnh"> <td colspan="2">TM TT QU TRNH CNG TC</td> </tr> <tr> <td class="Ct1">Ghi r thi gian bt u v kt thc; chc danh, chc v, n v cng tc tng ng)</td> <td><textarea class="TextboxDi" cols="100" rows="5"></textarea></td> </tr> <tr class="Tiu__Chnh"> <td colspan="2">c im lch s bn thn</td> </tr> <tr> <td class="Ct1">c im lch s bn thn</td> <td class="Ct2"> <textarea class="TextboxDi" cols="100" rows="5"></textarea> </td> </tr> <tr> <td class="Ct1">Quan h vi ngi nc ngoi</td> <td class="Ct2"> <textarea class="TextboxDi" cols="100" rows="5"></textarea> </td> </tr> <tr> <td class="Ct1">Quan h gia nh (B, m, anh ch em rut)</td> <td class="Ct2"> <textarea class="TextboxDi" cols="100" rows="5"></textarea> </td> </tr> <tr> <td class="Ct1">Hon cnh kinh t gia nh</td> <td class="Ct2"> <textarea class="TextboxDi" cols="100" rows="5"></textarea>
30
32
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu M hnh lp trnh pha my ch
Cu hi: Khi no th mt trang s c x l bn Server trc ?. hay ni cch khc l khi no th c gi l x l theo m hnh pha server? Tr li: Cc trang (file) c ui m rng m server c th x l, v d: asp, php, jsp, aspx Cu hi: C th ly mt v d v mt trang s c x l pha server v trang s khng c x l pha server ? Trang Trang1.htm <html> <body> Hello world </body> </html> Trang2.aspx
<%@ Page Language="C#" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div>
<% Response.Write (DateTime.Today.Date.ToString()); %>
Cu hi: Chng trnh Client v server c nht thit phi nm trn hai my tnh ring bit khng ? v Client l cc trnh duyt ri (IE, FireFox), cn server l chng trnh no ? Tr li: Hai chng trnh ny hon ton c th nm trn cng mt my tnh. Chng trnh server thc cht l mt chng trnh c tn l IIS (Internet Information Service).
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Cu hi: Phi vit nh th no server hiu l cn phi x l bn pha server trc khi gi v cho pha Client ? Tr li: Trc tin phi t phn m rng cho file (v d .aspx), sau trong trnh duyt cn phi t nhng ni dung mun x l bn pha server trong cp th c bit, v d:
runat="server"
ID="Lch"> </asp:Calendar>
</form> *** Chnh cc k hiu <% %> v Runat = Server mch bo Server l : Hy x l ni dung bn pha server i!. Nu khng c nhng k hiu ny th mc nhin server lm mi vic l gi tr li cho trnh duyt x l. Cu hi: Sao khng gi ngay cho trnh duyt x l nh trc y m c phi server x l !. Client x l s gim ti cho server, iu ny chng tt hn sao ? Tr li: V trnh duyt ch c th hiu v x l c cc th HTML v Javascript thi, cn n khng th x l c cc ni dung phc tp. V d n khng hiu asp:Calendar l g ?
34
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Bc 0: Ngi lp trnh phi to cc trang ASPX (gi s tn trang l abc.aspx) v t n vo trong th mc web ca web server (c tn l www.server.com). Trn thanh a ch ca trnh duyt, ngi dng nhp trang www.server.com/abc.aspx. Bc 2: Trnh duyt gi yu cu ti server vi ni dung: Lm n gi cho ti trang abc.aspx th tt !. Bc 3: web server s bin dch code ca trang aspx (bao gm c cc m code vb.net/ c# - gi l code behind hay code file) thnh class. Bc 4: Lp sau khi c bin dch s thc thi. Bc 5: tr kt qu v cho trnh duyt
Ring vi ASP.NET th vic bin dch s c thc hin thng minh hn, nh sau:
36
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu 3.3.2 Yu cu x l bn pha server thng qua cp th <% %>
Ngoi 2 cch trn, cn 2 cch yu cu x l trang web trc tip trn server, l: t cc cu lnh ngay trong cp th Script, nhng c thuc tnh Runat = Server:
... <script language="C#" type="text/C#" runat="server"> /// <summary> /// Cc cu lnh/ khai bo bin/ khai bo hm/ nh ngha lp v.v... /// cn x l bn pha server th t vo y ! V d: /// </summary> string HoVaTen = "Aptech Center"; public int Tong (int a, int b) { return a + b; } // Hoc nh ngha lp public class Example { public int Tich (int a, int b) { return a * b; } } </script> ..
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu 3.3.3 Yu cu x l bn server thng qua Script
38
Cch lu tr ny c minh ha qua mt ng dng c th di y. Trong , trang web th nht Default2.aspx cha c code (C#) v giao din (HTML) cn trang web th hai t code v giao din ra 2 file ring bit. default.aspx v default.cs. *** Ch : C th kt hp va t code trong file aspx va t code trong file cs. V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 39
Mt webform bao gm 2 thnh phn: Thnh phn giao din (trang thisfile.aspx) Thnh phn x l (lp trnh) thisfile.cs
40
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Phn tch mt trang ASP.NET thc t (Trang ny lu code v giao din trn 2 file):
File Default.aspx
<%@ Page Language="C#" CodeFile="~/Lession 03/Default.aspx.cs" Inherits ="Lession03_default"%> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Server side - example 3</title> </head> <body> <form id="form1" runat="server"> <asp:TextBox id="txtA" runat="server" width="50px" /> <asp:TextBox id="txtB" runat="server" width="50px"/> <asp:Button id="cmdTinhTong" Text="Tnh" runat="server" OnClick="Tong" /> <asp:TextBox id="txtKetQua" runat="server" width="50px"/> </form> </body> </html>
public partial class Lession03_default : System.Web.UI.Page { protected void Tong (object sender, EventArgs e) { txtKetQua.Text = (int.Parse (txtA.Text) + int.Parse (txtB.Text)).ToString (); } }
- <head runat="server">
<title>Server side - example 3</title>
<script language="C#" type="text/C#" runat="server"> public int Hieu (int a, int b) { return a - b; } </script>
on script ny c thuc tnh runat=Server, v vy n s c x l pha server. Thuc tnh language = C# cho bit ngn ng s dng vit l C Sharp.
42
3.7.2 Cch thc to phn t HTML Server Control v ASP.NET control a) HTML Server control C php to phn t HTML Server control: o <Tn_Loi_Th runat=server thuc_Tnh = gi tr .> o Trong : Tn loi th l input, select, p, h1, . V d: <input type = text id=txtHoTen runat = server> b) ASP.NET server control C php to phn t ASP.NET server control
o <asp: Loi_PT thuc_tnh = gi tr . runat = server> o Trong asp: l bt buc, Loi_PT c th l button, textbox, calendar, select,
treeview, adRotator, listview, gridview, image,. V d:
o o o
<asp:TextBox ID="txtHVT" runat="server"></asp:TextBox> <asp:Calendar ID="cal" runat="server" BorderColor="Blue"></asp:Calendar> <asp:Table> <asp:TableRow> <asp:TableCell>cell</asp:TableCell></asp:TableRow> </asp:Table>
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu **** Ch **** c th truy xut ti cc phn t ny trong Code file (hay server script pha server) th mi phn t cn phi t cho n mt id duy nht. Trong tt c cc ng dung, nu c th c th nn dng cc ASP.NET server control m bo tnh tng thch vi trnh duyt. Cc iu khin ASP.NET server control hon ton c th do ngi dng to ra. (phn ny s c cp trong phn Lp trnh ASP.NET nng cao)
44
BI 4: THC HNH
Mc tiu: Kt thc bi thc hnh ny, ngi hc c th
To cc phn t web server control S dng cc cu lnh pha server truy cp cc phn t trang web. To mt trang web cho php nhp thng tin v h s cn b.
2. Hng dn:
a) Cc kin thc c bn: To textbox:
<asp:TextBox runat="server" id="HoVaTen" class="TextboxDi" />
Ch : Mun to danh sch dng ListBox, ch cn thm thuc tnh Rows vi gi tr > 1 - To nt Radio option (Nhng Radio c GroupName ging nhau s cng mt nhm)
<asp:RadioButton runat="server" type="radio" id="optNam" GroupName="GT" checked="true"/>
truy xut ti cc phn t server Control bng m lnh C#, c th thc hin nh lp trnh winform (console) thng thng. truy xut ti cc phn t trong mt danh sch v d ComboBox s dng thuc tnh Items. V d: cboNgaySinh.Items[1], b) Minh ha mu
NhapHSCB.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NhapHSCB.aspx.cs" Inherits="Lession_04" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
46
</td> </tr> <tr> <td colspan="2" class="Tiu__Chnh">TRNH HC VN</td> </tr> <tr> <td class="Ct1"> Dn tc : </td> <td class="Ct2"> <asp:TextBox runat="server" ID="txtDanToc" Text="Kinh"/> Tn gio: <asp:TextBox runat="server" ID="txtTonGiao" Text="Khng" /> </td> </tr> <tr> <td class="Ct1">Thnh phn gia nh:</td> <td class="Ct2"> <asp:TextBox runat="server" ID="txtThanhPhan" cssclass="TextboxDi"/></td> </tr> <tr> <td class="Ct1">Ngh trc khi tuyn dng</td> <td class="Ct2">
<asp:TextBox runat="server" ID="txtNgheTruocKhiTuyen" CssClass="TextboxDi" />
</td> </tr> <tr> <td class="Ct1">Tham gia cch mng: </td> <td class="Ct2"> Ngy <asp:TextBox runat="server" ID="txtNgayThamGiaCM" Text="..../.../...."
style="width:15%; text-align:center" onfocus="XuLyFocus(this);" onblur="XuLyLostFocus(this);" />
T chc <asp:TextBox runat="server" ID="txtToChuc" style="width:20%" /> Cng tc <asp:TextBox runat="server" ID="txtCongTac" style="width:20%" /> </td> </tr> <tr> <td class="Ct1">Ngy vo ng: </td> <td class="Ct2">
<asp:TextBox runat="server" ID="txtNgayVaoDang" Text=".../.../..." CssClass="NgayThang"
48
</td> </tr> <tr> <td class="Ct1">Khen thng (hun,huy chng cao nht)</td>
<td class="Ct2"><asp:TextBox runat="server" ID="txtKhenThuong" CssClass="TextboxDi" />
</td> </tr> <tr> <td class="Ct1">K lut (ng, chnh quyn, nm, l do, hnh thc)</td> <td class="Ct2"> <asp:TextBox runat="server" ID="txtKyLuat" TextMode="MultiLine" CssClass="TextboxDi" Rows="5" Columns="80"></asp:TextBox> </td> </tr> <tr class="Tiu__Chnh"> <td colspan="2"> O TO, BI DNG CHUYN MN, NGHIP V, L LUN, NGOI NG </td> </tr> <tr> <td class="Ct1"> Ghi r Tn trng, ngnh hc, thi gian, loi hnh,vn bng, chng ch </td> <td><asp:TextBox runat="server" ID="txtQuaTrinhDaoTao"
CssClass="TextboxDi" TextMode="MultiLine" Columns="100" rows="5"></asp:TextBox>
</td>
50
<br /> <table class="Table" style="border:0"> <tr> <td style="text-align:right"> <asp:Button runat="server" id="cmdSubmit" Text=" </td> <td style="text-align:left"> <input type="reset" value=" Nhp mi " /> </td> </tr> </table> </div> </form> <script language="javascript" type="text/javascript"> var Gi_Tr_C; /// Hm x l khi phn t nhn c focus function XuLyFocus(txt) { Gi_Tr_C=txt.value; txt.value=""; } /// Hm x l khi phn t mt focus function XuLyLostFocus(txt) { if (txt.value=="") txt.value=Gi_Tr_C; } </script> </body> </html>
NhapHSCB.aspx.cs
using using using using using using using using using using System; System.Collections; System.Configuration; System.Data; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.HtmlControls; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts;
52
Trong : 2 thuc tnh thng bt buc phi c l ID v runat. Thuc tnh ID l tn duy nht c dng tham chiu khi vit code pha server. Thuc tnh runat="Server" ch ra rng phn t ny cn phi c x l pha server trc khi gi v cho Client. C th t gi tr cho cc thuc tnh ngay bn trong cc th ny, thm ch c th a cc m JavaScript ! V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 53
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu 5.2.2 C ch x l cc phn t web server control C ch x l cc phn t ny nh sau: Pha my ch s c nhng th no c thuc tnh runat = "Server" v em x l, kt qu sau khi x l s c gi tr v cho pha trnh duyt. Ta xt mt v d c th di y hiu r c ch x l cc phn t webserver control bn pha my ch: V d 1: X l th form c thuc tnh runat="Server"
<form runat="server"> </form> Server s c th form ny v x l (v c thuc tnh runat = "server"), v cho kt qu l: <form name="ctl01" method="post" action="Default.aspx" id="ctl01"> <div> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMRYrsdybepETo3ZpHQh9iJeRBA==" /> </div> </form> Nh vy, r rng l server "ch bin" thm mt cht trc khi tr v cho trnh duyt, l b thuc tnh runat="Server" nhng thm thuc tnh name="ct01", method, action, id ngoi ra cn thm cc th <div>, <input>. Ni cch khc l server bin ci ban u m trnh duyt khng th hiu c (phn c runat="server" trn) thnh ci m trnh duyt c th x l c (phn kt qu di).
V d 2: X l phn t TextBox:
<asp:TextBox ID="HVT" runat="server" Text="Hello" BackColor="blue"></asp:TextBox>
v d ny, sau khi x l server b thuc tnh runat, asp:TextBox, BackColor v to ra th tng ng m trnh duyt c th hiu l input, type="text", background-color, name V d 3: X l phn t Calendar Vi cc phn t phc tp hn th Server s phi mt nhiu cng ch bin hn. V d i vi th Calendar nh sau (ch c 1 dng):
54
</asp:Calendar>
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Th server s to ra on code HTML rt "khng" !!!:
<table id="Table1" cellspacing="0" cellpadding="2" title="Calendar" border="0" style="border-width:1px;border-style:solid;border-collapse:collapse;"> <tr> <td colspan="7" style="background-color:Silver;"> <table cellspacing="0" border="0" style="width:100%;"> <tr> <td style="width:15%;"> <a href="javascript:__doPostBack('cal','V3074')" style="color:Black" title="the previous month">< </a> </td> <td align="center" style="width:70%;">July 2008</td> <td align="right" style="width:15%;"> <a href="javascript:__doPostBack('cal','V3135')" style="color:Black" title="Go to the next month">> </a> </td> </tr> </table> </td> </tr> <tr> <th align="center" abbr="Sunday" scope="col">Sun</th> <th align="center" abbr="Monday" scope="col">Mon</th> <th align="center" abbr="Tuesday" scope="col">Tue</th> <th align="center" abbr="Wednesday" scope="col">Wed</th> <th align="center" abbr="Thursday" scope="col">Thu</th> <th align="center" abbr="Friday" scope="col">Fri</th> <th align="center" abbr="Saturday" scope="col">Sat</th> </tr> <tr> <td align="center" style="width:14%;"> <a href="javascript:__doPostBack('cal','3102')" style="color:Black" title="June 29">29</a> </td> <td align="center" style="width:14%;"> <a href="javascript:__doPostBack('cal','3104')" style="color:Black" title="July 01">1</a> </td> <td align="center" style="width:14%;"> <a href="javascript:__doPostBack('cal','3105')" style="color:Black" title="July 02">2</a> </td> <td align="center" style="width:14%;"> <a href="javascript:__doPostBack('cal','3106')" style="color:Black" title="July 03">3</a> </td> <td align="center" style="width:14%;"> <a href="javascript:__doPostBack('cal','3107')"
56
V trang HTML truyn thng khng c mt phn t no c th hin th y mt lch biu (Calendar) nn ASP.NET phi to ra phn t bng cch kt hp t rt nhiu th HTML n gin (table, th, tr, td, a, ) nh trn. V d ny l mt minh chng cho thy ASP.NET lm n gin ha qu trnh pht trin ng dng. Gim thiu vic phi vit code v bo tr chng trnh d dng hn rt nhiu.
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu V d 4: X l phn t web server control nhng c thm thuc tnh pha client l mt on script (Lu : Thuc tnh onClick khng c trong danh sch thuc tnh ca asp:label):
<asp:Label runat="server" ID="lblHello" Text="Hello world" onClick="alert('Hello world');"> </asp:Label>
Ta bit rng phn t asp:Label khng c thuc tnh onClick (bng chng l khi g khng thy xut hin trong danh sch). Nhng khi chy trang web khng thy c bo li. Vy c ch x l ca ASP.NET l nh th no i vi nhng phn t nh th ny ? Cch thc nh sau: Khi cc th c runat="server" th s c web server c v x l tt c cc ni dung nm bn trong th . Tuy nhin, nu gp th no m c th n cha hiu (v d ch client hiu c) th n tr nguyn phn cho pha client. Chnh v vy m ta thy kt qu tr v cho pha client vn cha nguyn phn
onClick="alert('Hello world');". y cng l cch m ngi ta hay s dng an xen cc on code va c x l pha server, va x l pha client.
58
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu 5.2.2 Thc thi cc cu lnh ti pha server Trong rt nhiu trng hp chng ta mun thc thi mt s cu lnh ngay ti pha server khi ngi dng thc hin mt thao tc no v d click chut th c th vit sn cc th tc s kin thc thi ng vi cc s kin ny. gi mt th tc (phng thc) pha server khi mt s kin xy ra i vi phn t web server control, th vit nh sau: <asp:Tn_Phn_T runat = "Server" onClick = "Tn_Phng_Thc" .> V d: Gi phng thc KiemTra khi ngi dng nhn vo nt "cmdKiemTra":
<asp:Button ID="cmdKiemTra" runat="server" OnClick="KiemTra" /> Lu : Tn ca phng thc trong phn OnClick khng cha tham s v du ngoc. Nhng khi nh ngha phng thc ny th thng phi c 2 tham s nh v d sau: using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; public partial class _default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void KiemTra (object sender, EventArgs e) { /// t cu lnh y ! } }
5.2.3 M hnh x l s kin trong ASP.NET 1. Ln u tin khi trang web c chy. ASP.NET to trang v cc i tng v thc hin khi to, sau trang s c chuyn i (rendered) thnh trang HTML tr v cho pha client. Cc i tng ca trang sau cng c gii phng khi b nh ca server. 2. Ti mt thi im no , nu ngi dng thc hin mt s cng vic (v d click chut ln button c runat = "Server") khi h thng s t ng thc hin hnh ng gi l "Postback" (Dch l gi/gi tr li Server) v lc ton b d liu trong phn t form s c gi v Server. 3. ASP.NET to li cc i tng ca trang v tr v client trng thi cui cng khi chng c gi i. 4. Tip theo, ASP.NET s kim tra xem thao tc no gy ra s kin postback v kch hot (gi) s kin tng ng (v d Button.Click). Thng thng, trong phn
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu x l s kin ny chng ta thng thc hin mt s x l nh cp nht CSDL, kim tra,. 5. Trang ny sau c bin i (chuyn i) thnh trang HTML v gi v cho client (trnh duyt). Tip theo cc i tng ca trang (nh asp:Button; asp:ListBox,) s c gii phng khi b nh. Nu c s kin Postback khc xut hin th ASP.NET s lp li x l bc 2 cho n bc 4. Ch : Khi to mt s phn t nh Button th mc nh h thng s t ng Postback mi khi ngi dng click chut. i vi mt s phn t khc nh TextBox th mc nh l khng Postback. Nu mun Postback th t thuc tnh AutoPostback = "true", v d: <asp:DropDownList runat="server" ID="ds" AutoPostBack="true"></asp:DropDownList> Hay : <asp:TextBox runat="server" ID="txtHVT" AutoPostBack="true"></asp:TextBox> Khi t AutoPostBack = "true" th mi khi ngi dng chn mt mc khc (i vi DropDownList) v thay i ni dung (i vi TextBox) th h thng s PostBack trang web v bn Server. V s kin SelectedIndexChanged v TextChanged tng ng s c gi: using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; public partial class _default : System.Web.UI.Page { protected void ds_SelectedIndexChanged (object sender, EventArgs e) { } protected void txtHVT_TextChanged (object sender, EventArgs e) { } }
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Sau khi ci t file ASPAJAXExtSetup.msi, h thng s c mt file l AjaxControlToolkit.dll, chng ta s vo menu website Project Reference 5.3.2 Hng dn s dng mt s Ajax Control c bn Cc bc s dng: Bc 1: Thm tham chiu Ajax control toolkit vo Project Bc 2: Chn mt ScriptManager vo trang v To cc phn t theo c php
<ajaxToolkit:Tn_Phn_T ID="Gi_Tr_ID" runat="server" TargetControlID="ID ca phn t m ta mun p dng cho" />
Mt s phn t Ajax V d: Cho php ngi dng chn ngy thng v nm khi ngi dng focus vo textbox:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
M hnh x l ca Ajax
62
BI 6: THC HNH
Mc tiu: Sau khi kt thc bi thc hnh, ngi hc c th: S dng ngn ng lp trnh C# lp trnh x l pha server. S dng c mt s iu khin Ajax trnh by giao din v kim tra d liu nhp. Ni dung: 1. Vit lnh pha server Yu cu: Kim tra d liu nhp bi trc (Nhp h s cn b), m bo cc yu cu sau: H tn khng c rng, ch cha ch ci v du cch. di <= 30; Ngy thng nm sinh phi hp l. V d thng 2 ca nm nhun c 29 ngy, cc nm khc l 28 ngy. Ngy sau phi "ln hn" ngy trc. V d ngy xut ng phi trc ngy nhp ng. Cc trng s ch cha gi tr l s dng, khng cha k t thng thng. Cc textbox nhiu dng, cha ti a l 1000 k t. Chng no d liu cn nhp sai th cn phi focus n yu cu ngi dng sa li. Nu mi d liu nhp u hp l th gi n cc iu khin v ch mt dng thng bo l : "H s c cp nht" ra gia mn hnh !. Hng dn: c gi tr value ca mc ang c chn trong DropDownList th vit: DDL_Name.Text . Trong : DDL_Name l id ca dropdownlist. truy xut ti mt phn t c ch s i trong Dropdownlist, vit: DDL_Name.Items[i]; xa cc mc: DDL_Name.Clear(); m s mc : DDL_Name.Count; thm mt mc vo DDL (Dropdownlist)
o o o
Hm chuyn ngy thng dng xu sang kiu Date: DateTime d; o DateTime D = DateTime.Parse (s);
int D.Day; D.Month; D.Year tr v ngy, thng nm ca D. focus ti mt phn t: Vit <Gi tr ID>.Focus(); VD: DS.Focus(); Php ton ly phn nguyn, phn d: o Ly nguyn: 20/ 6 3 o Ly phn d: 20 % 6 2 2. S dng mt s iu khin Ajax Control Toolkit Cch ng k v a Ajax Control Toolkit vo d n:
Cn c 3 file sau:
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Bc 1, vo menu website Add Reference Chn Tab Browse. Sau chn 2 tp (1) v (2) trn. Click OK. Bc 2: Click chut phi ln hp toolbox v chn "Choose Items". Khi hp thoi m ra, Browse ti file (3) trn. Click OK. 2.1 S dng Calendar Yu cu: Vit mt trang cho php ngi dng nhp vo ngy sinh ca h. Ngy sinh ny c nhp bng cch chn trc tip trn lch (Canlendar).
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
Lu : - Trong th <ajaxToolkit:CalendarExtender ID="cal" TargetControlID="txtNS" runat="server" >. Thuc tnh TargetControlID cho bit l s hin th Calendar khi ngi dng focus iu khin c id l txtNS. o Trong trang cn phi c th <asp:ScriptManager v t trong th Form. V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 64
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu 2.2 Nhp ngy thng theo nh dng (s dng iu khin MaskedEdit extender)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MaskedEdit.aspx.cs" Inherits="MaskedEdit" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Maskedit</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="SM1" runat="server" EnablePartialRendering="True" /> Nhp ngy thng theo dng: MM/dd/yyyy (culture sensitive)<br /> <asp:TextBox ID="TextBox1" runat="server" Width="130px" ValidationGroup="Demo1" MaxLength="1" style="text-align:justify" /> <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender1" runat="server" TargetControlID="TextBox1" Mask="99/99/9999" MessageValidatorTip="true" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left" /> <ajaxToolkit:MaskedEditValidator ID="MaskedEditValidator1" runat="server" ControlExtender="MaskedEditExtender1" ControlToValidate="TextBox1" IsValidEmpty="False" EmptyValueMessage="Phi nhp ngy thng" InvalidValueMessage="Ngy thng nhp sai" ValidationGroup="Demo1" Display="Dynamic" TooltipMessage="Nhp vo mt ngy" /> </form> </body> </html>
%@ Page Language="C#" AutoEventWireup="true" CodeFile="PopupDialog.aspx.cs" Inherits="PopupDialog" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Modal Dialog</title> </head> <body>
<form id="form1" runat="server"> <asp:Button ID="cmdOpenPopup" runat="server" Text="Ca s Login" /> <asp:ScriptManager ID="sm1" runat="server"></asp:ScriptManager> <asp:Panel ID="NoiDung" runat="server" style="background-color:White; margin:10px 10px 10px 10px; border: solid 2px"> <asp:Panel ID="TieuDe" runat="server" > <div style="background-color:Yellow">Thng bo </div> </asp:Panel>
User name: <asp:TextBox ID="txtUserID" runat="server"></asp:TextBox> <br /> Password : <asp:TextBox ID="txtPassword" runat="server"></asp:TextBox><br />
<asp:Button ID="cmdCancel" runat="server" Text="Hy b" /> <asp:Button ID="cmdLogin" runat="server" Text="ng nhp" /> </asp:Panel> <ajaxToolkit:ModalPopupExtender ID="Popup01" runat="server" TargetControlID="cmdOpenPopup" PopupControlID="NoiDung" OkControlID="cmdLogin" DropShadow="true" PopupDragHandleControlID="TieuDe"> </ajaxToolkit:ModalPopupExtender> </form> </body> </html>
66
Kt qu sau khi a UCC vo trang web. y ta cn to 2 trang, trang Footer.ascx cha ni dung ca UCC v trang Default.aspx, s dng UCC Footer.ascx.
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Ni dung trang Footer.ascx v Default.aspx nh sau: Footer.ascx <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Footer.ascx.cs" Inherits="Footer" %>
<table border="0px" width="100%"> <tr> <td align="center" style="font-style:italic" runat="server" id="NoiDung"> <hr /> Phn mm qun l cn b - phin bn 2.0 <br /> ©Bn quyn h thng thuc v Trung tm o to Hng Yn - Aptech 2008 <br /> Tel: 0321-713.179; E-Mail: aptech@utehy.edu.vn; website: <asp:LinkButton runat="server" ID="AptechLink" PostBackUrl="http://aptech.utehy.vn" Text="www.aptech.utehy.vn"> </asp:LinkButton> </td> </tr> </table>
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
68
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu *** Mt s im cn lu khi to UCC: Trang UCC cng c trang Code C# tng ng l : .ascx.cs u trang ascx, thay v vit ch dn <%@ Page ta thay bng:<%@ Control Trong UCC khng c cp th HTML, BODY, FORM. Khi "chn" UCC vo trang aspx, cn phi thm th <%@ Register ngay sau th <%@ Page Tuy nhin c th dng phng php ko-th bng cch click
vo trang ascx v "ko-th" vo form .aspx ( ch Design view). Mt UCC c th xut hin nhiu ln trong mt trang. Mun thay i UCC trn cc trang th phi tr v trang ascx ban u chnh sa.
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Ch : - NoiDung l ID ca phn t <TD> trong trang Footer.ascx. Do vy vit NoiDung.BgColor = mau_nen; trong on chng trnh trn l t mu nn cho phn t <td>. - T kha value trn l gi tr c gn cho thuc tnh. V d nu ta vit NoiDung.Mau_Nen="blue" th value khi ny c gi tr l "blue". - Mi khi ta gn gi tr cho thuc tnh th phn bn trong set { } s c gi v khi ta c gi tr ca thuc tnh th phn get { } s c gi. Trong mi phn set v get ny hon ton c th t cc cu lnh x l. Sau khi thm thuc tnh, bn c th c/ghi gi tr ny thng qua cu lnh hoc gn gi tr trc tip trong ch code v design. V d t li mu nn:
.
<Aptech:Footer ID="Footer1" runat="server" Mau_Nen="purple"/>
t trc tip trong ca s Properties 7.3.2 Thm phng thc vo UCC Tng t nh cc Class, chng ta c th thm cc phng thc vo cho lp nh khi xy dng cc lp thng thng. V d: Thm mt phng thc lm n/ hin UCC trn. Footer.aspx.cs using System; using System.Web.UI; public partial class Footer : UserControl { private string mau_nen; public string Mau_Nen { set { mau_nen=value; NoiDung.BgColor = mau_nen; } V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 70
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu get { return mau_nen; } } /// Value= true ==> Hin. /// Value=False ==> n public void ShowHideUCC (Boolean Value) { if (Value == true) this.Visible = true; else this.Visible = false; } protected void Page_Load (object sender, EventArgs e) { } } Vic gi cc phng thc ny cng ging nh nhng phng thc thng thng trc y. 7.3.3 Thm s kin vo UC Phn ny s c gii thiu trong cc chuyn cao hn.
7.4 Truy cp thuc tnh, phng thc ca cc phn t con trong UCC.
V mt UCC c th cha nhiu iu khin bn trong, v vy c nhng lc ta cn truy cp n mt s thuc tnh, phng thc ca iu khin con ny. Tuy nhin iu ny l khng c php, gii php cho vn ny l: To thm phng thc dng Public hoc Protected ca UCC c th truy cp n cc phn t con bn trong. V d: Thm mt phng thc SetAptechLinkText cho php thay i li nhn lin kt n trang Aptech. Code ca trang s nh sau: Footer.ascx.cs
using System; using System.Web.UI; public partial class Footer : UserControl { private string mau_nen; public string Mau_Nen { set { mau_nen=value; NoiDung.BgColor = mau_nen; } get
/// Value= true ==> Hin. /// Value=False ==> n public void ShowHideUCC (Boolean Value) { if (Value == true) this.Visible = true; else this.Visible = false; }
/// Phng thc cho php thay i nhn ca lin kt n trang Aptech
Nu iu khin con bn trong c rt nhiu thuc tnh (v d Table) th r rng truy cp ti cc thuc tnh ca n (rt nhiu) ta s phi to v s thuc tnh cho UCC. Trong trng hp nh vy, trnh phi khai bo qu nhiu thuc tnh, ta to mt thuc tnh v tr v l i tng cn truy xut, v d bn ngoi c th truy xut n ton b cc thuc tnh v phng thc ca Textbox1 nm trong UCC th ta to mt thuc tnh kiu nh sau cho UCC: .. public TextBox txtUserName { get { return TextBox1; } } V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 72
Kt qu File Menu.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MainMenu.ascx.cs" Inherits="MainMenu" %> <style type="text/css"> .HLink { font-family:Tahoma; font-weight:bold; font-size:10pt; text-decoration:none; border-bottom-style:dotted; border-bottom-width:1px; border-bottom-color:Silver; margin:5px 2px 2px 5px; width:100%; } </style> <table border="0px" style="border-collapse:collapse; border:solid 1px purple;width:150px"> <tr> <td align="center" style="background-color:Purple; color:White;font-weight:bold"> Main Menu </td> </tr> <tr>
V d 2: To mt textbox nhp ngy thng (c tch hp Calendar) dng chung trong ton ng dng.
File MyCalendar.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyCalendar.ascx.cs" Inherits="MyCalendar" %> <%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %> <table> <tr> <td> <asp:TextBox runat="server" ID="txtNT" style="width:100px"></asp:TextBox> </td> </tr> </table> <cc1:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtNT"> </cc1:CalendarExtender>
Fiel MyCalendar.ascx.cs
using System; using System.Web.UI; public partial class MyCalendar : System.Web.UI.UserControl { private string gt; public string GiaTri { set { gt = value; txtNT.Text = gt; } get { return gt; } } protected void Page_Load(object sender, EventArgs e) { } }
BI 8: THC HNH
Mc tiu: Kt thc bi thc hnh ny hc vin c th: To mt s iu khin UCC phc v cho h thng Qun l cn b Thm v s dng c cc thuc tnh, phng thc cho iu khin UCC Ni dung: Bi 1: To mt iu khin Login,c giao din nh sau:
Chng trnh minh ha: Trang Login.ascx <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Login.ascx.cs" Inherits="Login" %>
<table runat="server" id="NoiDungLogin" style="border:solid 1px purple;border-collapse:collapse">
<tr> <td colspan="2" style="text-align:center; background-color:purple;color:White"> ng nhp </td> </tr> <tr> <td style="text-align:center;width:40%">User name:</td> <td> <asp:TextBox runat="server" ID="txtUserID" Width="99%"></asp:TextBox> </td> </tr> <tr> <td style="text-align:center; width:40%">Password:</td> <td>
<asp:TextBox runat="server" ID="txtPassword" Width="99%" TextMode="Password">
</asp:TextBox> </td> </tr> <tr> <td></td> <td> <asp:Button runat="server" ID="cmdCancel" Text="Cancel" /> <asp:Button runat="server" ID="cmdLogin" Text="Login" /> </td> </tr> </table>
76
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Bi 2: To iu khin Login1 c giao din nh bi 1 nhng thm thuc tnh cho php t rng ca iu khin. Hng dn: Phn giao din code nh trn, cn phn code C# s thm thuc tnh nh sau: Trang Login.ascx.cs
using System; using System.Web.UI; public partial class Login : System.Web.UI.UserControl { private string dorong; public string DoRong { set { dorong = value; NoiDungLogin.Width = dorong; } get { return dorong; } } protected void Page_Load (object sender, EventArgs e) { } }
Ti trang aspx, khi mun thay i rng, ch vic thm thuc tnh DoRong trong th. Bi 3: Yu cu nh bi 2 nhng c thm 3 phng thc. Phng thc CheckAccout() kim tra, nu User name="asp.net" v password = "123456" th tr v true, tri li tr v false; Phng thc GetUserName tr v gi tr trong User name; phng thc GetPassword tr v gi tr trong Password. Ngoi ra, khi ngi dng bm vo nt "Login" th s in ra thng bo (trn mt nhn pha di) : "Bn ng nhp vi User name l : Password l: .." Hng dn: V bn ngoi khng th truy xut c vo cc thuc tnh ca i tng con thuc UCC, do vy nu thc s mun truy cp th ta cn phi xy dng cc phng thc Public cung cp cc chc nng truy cp (c/ ghi) ny. Vit li trang Login.ascx.cs nh sau (Phn giao din khng i)
using System; public partial class Login : System.Web.UI.UserControl { private string dorong; public string DoRong { set { dorong = value; NoiDungLogin.Width = dorong;
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LoginDemo.aspx.cs" Inherits="LoginDemo" %> <%@ Register src="Login.ascx" tagname="Login" tagprefix="uc1" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Login testing</title> </head> <body> <form id="form1" runat="server"> <div> <uc1:Login ID="Login1" runat="server" DoRong="200px" /> <br /> <asp:Label runat="server" ID="lblThongBao"></asp:Label> </div> </form> </body> </html>
78
using System; using System.Web; public partial class LoginDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (this.IsPostBack==true) ///Nu khng phi ln u np trang { lblThongBao.Text = "Bn nhp User name=" + Login11.GetUserName() +" Mt khu : " + Login11.GetPassword(); } } }
Ni dung trang C# ca trang ASPX Bi 4: To phn Header v Footer c th chn vo cc trang. Giao din nh sau:
Bi 5: To Menu cho h thng phn mm qun l cn b. (Lm li bi trong ti liu dng cho l thuyt). Nhng thm mt s hyperlink khc.. Bi 6: Lp ghp header, footer v Menu c trang nh sau:
80
82
9.1.2 Cc thnh phn (thuc tnh v phng thc) chnh Phng thc: Request.QueryString.Get("Tn_Phn t cn c"): c gi tr ca mt phn t c gi theo phng thc Get (Method = "Get") Phng thc Request.Form.Get("Tn_Phn t cn c"): c gi tr ca mt phn t c gi theo phng thc Post (Method = "Post"). Ch : C th dng Request.Form.GetValues v Request.Form.GetValues c. 9.1.3 V d s dng Xy dng 2 trang web : trang Default.aspx, trong c 2 textbox cha tn v mt khu. Khi ngi dng click vo nt submit th gi tn v mt khu sang trang Webform1.aspx hin th. V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 83
84
Default.aspx
Webform1.aspx
86
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Trang code s nh sau:
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Ni cch khc, bin session l mt bin m mi trang trong mt phin (Session) u c th truy xut.
88
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Application.Contents[So_Nguoi_Truy_Cap] = Application.Contents[So_Nguoi_Truy_Cap] + 1 Response.write(Bn l v khch th: & Application.Contents[So_Nguoi_Truy_Cap]) Ngoi ra, i tng Application cn c 2 phng thc thng dng l Application.Lock(): kha khng cho ngi khc sa i cc bin ton cc v Application.UnLock() m kha . i tng Application cng c 2 s kin l Application_OnStart v Application_OnEND. S kin OnStart ch c kch hot duy nht mt ln khi yu cu u tin pht sinh. S kin OnEND c kch hot khi dch v web dng (unload). i tng Application c 2 phng thc l Lock v Unlock. Khi gi phng thc Lock (kha) th tt c cc ng dng khng c php thay i cc gi tr Application. cc ng dng khc c php thay i cc bin Application th gi phng thc Unlock. M lnh vit cho 2 s kin ny cng c t trong file Global.asa.
Mt s bi tp tng hp:
Bi 1: To mt trang Login, nu ngi dng nhp user name v mt khu tng ng l asp.net v 123456 th c php truy cp cc trang Index.aspx, tri li mi ln ngi dng truy cp n trang Index.aspx th u c chuyn ti trang Login.aspx. Minh ha: Cn to 3 trang l Home.aspx/cs, Login.aspx/cs v Global.asax nh sau:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Home.aspx.cs" Inherits="Home" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Thanh ton - Trang cn phi Login trc khi xem</title> </head> <body> <form id="form1" runat="server"> <div> <h1 style="text-align:center"> y l ni dung rt quan trng, bn ch c th thy dng ny sau khi Login ! </h1> </div> </form> </body> </html>
using System; using System.Web; public partial class Home : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Session.Contents ["TrangThai"].ToString () == "chuadangnhap") { Response.Redirect ("Login.aspx"); } } }
Trang Home.aspx.cs
<%@ Application Language="C#" %> <script runat="server"> void Application_Start(object sender, EventArgs e) { // Code that runs on application startup } void Application_End(object sender, EventArgs e) { // Code that runs on application shutdown } void Application_Error(object sender, EventArgs e) { // Code that runs when an unhandled error occurs } void Session_Start(object sender, EventArgs e) { // Code that runs when a new session is started Session.Add ("TrangThai", "chuadangnhap"); } void Session_End(object sender, EventArgs e) { } </script>
Trang Global.asax
90
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>System Login</title> </head> <body> <form id="form1" runat="server"> <table> <tr> <td>User name (asp.net): </td> <td> <asp:TextBox runat="server" ID="txtUserID" TextMode="Password"> </asp:TextBox> </td> </tr> <tr> <td>Password (123456): </td> <td><asp:TextBox runat="server" ID="txtPassword"></asp:TextBox> </td> </tr> <tr> <td> </td> <td> <asp:Button runat="server" Text="Login" ID="cmdLogin" onclick="cmdLogin_Click"/> </td> </tr> </table> </form> </body> </html>
Trang Login.aspx
using System; public partial class Login : System.Web.UI.Page { protected void cmdLogin_Click (object sender, EventArgs e) { if (txtUserID.Text == "asp.net" && txtPassword.Text == "123456") { Session.Contents ["TrangThai"] = "DaDangNhap"; Response.Redirect ("Home.aspx"); } } }
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Bi 2: To mt trang m s lng ngi truy cp. Dng bin tp text lu. Hng dn: To 2 trang l Index.aspx/cs v Global.asax vi ni dung sau: Trang Index.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx.cs" Inherits="Index" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Home Page - Hit counter</title> </head> <body> <form id="form1" runat="server"> <h1>Cho mng bn n website ca chng ti</h1> <asp:Label runat="server" ID="lblSLKhach"></asp:Label> </form> </body> </html>
Trang Index.aspx.cs
using System; public partial class Index : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblSLKhach.Text="Bn l v khch th: " + Application.Contents["SLTruyCap"].ToString(); } }
Trang Global.asax
<%@ Application Language="C#" %> <script runat="server"> void Application_Start(object sender, EventArgs e) { Application.Lock (); System.IO.StreamReader sr; sr = new System.IO.StreamReader (Server.MapPath ("SL.txt")); string S = sr.ReadLine (); sr.Close (); Application.UnLock (); //To mt bin Applciation l SLTruyCap v khi to gi tr S Application.Add ("SLTruyCap", S); }
92
Sau khi to, chy file Index.aspx kim chng s thy rng s lng ngi truy cp lun lun tng ln bt k l server c tt hay my tnh b trc trc. y l cch c dng chnh thc m s lng lt ngi truy cp. Bn hon ton c th ci tin hin th s lng ngi truy cp bng hnh nh cho sinh ng hn.
BI 10: THC HNH BI 11. Truyn d liu gia cc webpage, MasterPage v g ri (Debug) chng trnh.
11.1 Truyn (Post) d liu gia cc trang bng m lnh C#
Nh bi trc cp, truyn (Post) d liu t mt trang X n trang Y no ta thng to mt Button trong c thuc tnh PostBackURL = Y. Vi cch ny th mi khi chng ta click chut ln Button th n s chuyn thng n trang Y m khng ph thuc vo m lnh x l bn trong. iu ny s bt li nu nh nh vic chuyn ti trang Y cn ty thuc vo kt qu x l hin ti. V d: To mt trang c mt textbox v mt nt nhn. Khi ngi dng click nt nhn (submit) th kim tra nu rng th thng bo sai, tri li th Post ti trang XuLy.aspx.
11.4 MasterPage
Master Page l mt trang c bit cho php cc trang khc hin th bn trong n. MasterPage thng dng to ra mt mu sn (V d cha Header, MainMenu v Footer), cn cc trang ni dung khng phi km thm cc phn Header, footer ny. Cch to: Chn trang web dng MasterPage Cch cho trang khc hin th bn trong n: Khi to form, chn loi web content. T ln sau, ch cn tick vo phn: Select MasterPage. V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 94
V d: To mt trang Master cha 3 ni dung l Header, MainMenu v Footer. V 2 trang khc Home.aspx v GioiThieu.aspx (Main menu c ZZ2 lin kt cc trang ny).
Header Trang ch Gii thiu Sn phm Vng ny dng hin th cc trang khi click hyperlink menu cnh
Footer
96
11.5 G ri
C 2 loi li: - Li bin dch (Compile error): L loi li c pht hin ngay khi dch chng trnh - Li lp trnh (logic) hay cn gi l li Run-time: Li xy ra khi chy chng trnh. Vic tm ra cc li run-time gi l qu trnh g ri (hay Debug). 11.5.1 Gii thiu 11.5.2 Chy ng dng ch g ri 11.5.3 Khi nim im dng 11.5.4 Chy tng dng lnh vi ch Step Into (F8) 11.5.5 Chy tng dng lnh vi ch Step Over (Shift-F8) 11.5.6 Chy tng dng lnh vi ch Step Out (Ctrl-Shift-F8)
11.2 S dng Custom Error page 11.3 Ghi cc vt gy li (Trace errors) 11.4 S dng cng c g ri/ Menu Debug 11.5 Tracing li mc trang/ Mc ton ng dng
98
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu T kin trc ta thy rng: ADO.NET l mt thnh phn ni ti (Instrict) ca .NET framework, do vy n c th c s dng trong tt c cc ngn ng h tr .NET nh C#, VB.NET m khng c s khc bit no (Tc l cc chc nng cng nh cch s dng hon ton ging nhau).
~ Recordset
Mt s phng thc: + Open: Dng m kt ni: Cnn. (): M kt ni n CSDL do ta ch nh trong ConnectionString Lu : sau khi gi phng thc Open, c th xem kt ni thanh cng hay khng thng qua thuc tnh State ca Connection: if (Cnn.State == 1) Kt ni thnh cng ! + Close(): Dng ng kt ni: Cnn.Close(); Thng th nn vit nh sau trnh li : if (Cnn.State == 1) Cnn.Close(); + GetSchema: Ly thng tin v CSDL (V d tn cc bng, cc trng trong bng) Mt s thuc tnh: + State: Cho bit trng thi kt ni. (ConnectionState.Open
+ ConnectionString: Cha cc thng tin kt ni. V d v mt trang thc hin kt ni n CSDL C:\Nwind.mdb kt ni c m)
Open
using System; using System.Data; using System.Data.OleDb; public partial class Lession_12_Default : System.Web.UI.Page { /// <summary> /// Hm kt ni n C s d liu /// </summary> /// <param name="DBFileName">ng dn ti file MDB</param> /// <returns>Tr v i tng OledbConnection hoc null</returns> public static OleDbConnection OpenDB (string DBName) { try { OleDbConnection Conn = new OleDbConnection ();
Conn.ConnectionString="Provider=Microsoft.jet.oledb.4.0;data source="+DBName;
Conn.Open (); return Conn; } V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 100
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu catch (Exception ex) { return null; } } // Kt ni n c s d liu v thng bo kt qu kt ni trn mt Label. protected void Page_Load (object sender, EventArgs e) { OleDbConnection Conn; Conn = OpenDB (@"c: \Nwind.mdb"); if (Conn != null) { if (Conn.State = = ConnectionState.Open) lblThongBao.Text = " kt ni thnh cng ! " ; } else { lblThongBao.Text = "Khng th kt ni c !"; } } } Ch : Thng thng tp c s d liu c lu trong th mc App_Data. Khi c th kt ni n CSDL ny m khng cn bit th mc hin c t trong C:\ hay D:\ th cn vit ng dn ca tp nh sau:
Conn = OpenDB (Server.MapPath("../App_Data/nwind.mdb"));
V tr ca tp CSDL nwind.mdb
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu - Nu a cha tp CSDL c nh dng l NTFS v c t quyn truy cp th cn phi m bo rng th mc cha tp CSDL c quyn read/write cho ngi dng l IUSR_. (C th thay i quyn hoc ngi dng truy cp n th mc bng cch Right click ln th mc , chn Properties, tip theo chn th Security v Add thm ngi dng/ quyn..) 13.3.2 Lp Command Chc nng: Thc hin cc thao tc i vi CSDL, nh Insert, Update, delete, Select. Tuy nhin, thc hin c cc lnh ny th cn phi thng qua mt Connection no ang c m. Cch to (chnh tc): OleDbCommand Cmd; Cmd = new OleDbCommand (); Cmd.CommandText = "Cu lnh SQL"; Cmd.Connection= OleDbConnection_Obj; Hoc vit gn hn: OleDbCommand Cmd=new OleDbCommand("Lnh SQL",OleDbConnection_Obj);
Cu lnh SQL: l mt xu cha cu lnh SQL bt k. Mt s phng thc dng thc thi cu lnh SQL: int ExecuteNonQuery(): S dng khi CommandText trn thuc dng Insert, Delete, Update. Hm ny tr v s bn ghi b tc ng (affected). Object ExecuteScalar(): S dng khi CommandText trn l cu lnh SQL ch tr v mt kt qu n, v d cu lnh m tng s bn ghi : Select Count(*) Hm ny tr v hng v ct u tin ca kt qu thc thi truy vn. Cc hng v ct khc b b qua. OleDbDataReader ExecuteReader(): Dng khi CommandText l mt cu lnh chn (Select). Hm tr v l mt i tng OleDbDataReader cha kt qu thc thi cu lnh (thng l cu lnh Select). XMLReader ExecuteXMLReader(): Dng c d liu l mt tp XML. Phng thc ny ch p dng cho mt s Provider (v d SqlClient) Mt s thuc tnh CommandText: Cha cu lnh SQL cn thc thi, v d: "Select * from Employees", "Insert into Employees (.) values (.)", "Delete from Employees where " Connection: cho bit l i tng Command s dng kt ni no. CommandType: Cho bit CommandText cha StoreProcedure, tn bng hay l cu lnh SQL. Mc nh thuc tnh ny c gi tr l Text.
V d: Xy dng mt trang web hin th tng s bn ghi ca bng Products trong c s d liu nwind.mdb.
102
Default.aspx.cs
using System; using System.Data; using System.Data.OleDb; public partial class Lession_12_Default : System.Web.UI.Page { // Kt ni n c s d liu v thng bo kt qu trn mt Label. protected void Page_Load (object sender, EventArgs e) { // To i tng Connection v m kt ni n CSDL OleDbConnection Conn; Conn=new OleDbConnection(); Conn.ConnectionString="Provider=Microsoft.jet.oledb.4.0; data source=" ; Conn.ConnectionString += Server.MapPath("../App_Data/nwind.mdb"); Conn.Open(); // To i tng Command v thc thi cu lnh m s bng ghi OleDbCommand Cmd; Cmd = new OleDbCommand (); Cmd.CommandText = "Select Count(*) from Products"; Cmd.Connection = Conn; // Hin th kt qu trn Label int SL = (int) Cmd.ExecuteScalar(); lblThongBao.Text = "S bn ghi trong bng Products: " + SL.ToString (); // Gii phng kt ni. Cmd.Dispose (); Conn.Close (); } }
13.3.3 Lp DataReader Chc nng: Dng n nhn kt qu tr v t phng thc ExecuteReader ca i tng Command. N tng t nh mt Recordset ca ADO, tuy nhin d liu nhn v l Readonly v ch c theo chiu tin. Mt s phng thc: Bool Read(): Thc hin vic c mt bn ghi (mt hng) trong kt qu, sau chuyn ti bn ghi tip theo. Hm ny tr v true nu vn cn d liu, false nu c ht. DataTable: GetTableSchema() Tr v mt dataTable m t thng tin v DataReader nh tn cc ct. V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 104
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu String: GetName(int i) Tr v tn ca ct i GetInt(int i), GetString(int i),, GetXXX(int i) Tr v gi tr ca ct i v chuyn v dng Int, String, Mt s thuc tnh: Boolean: HasRows cho bit l DataReader c cha d liu hay khng ? int FieldCount Cho bit s trng (Ct) ca DataReader. Bin DataReader v d Dr cho php c d liu ca tng (ct/ trng) ca hng hin hnh nh sau: Dr["Tn trng"/ hoc ch s]. V d : Np Tn ca tt c sn phm trong bng Products v a vo mt ListBox. Trang giao din:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataReader.aspx.cs" Inherits="Lession_12_DataReader" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>OleDbDataReader demo</title> </head> <body> <form id="form1" runat="server"> <h2> Danh mc sn phm</h2> <asp:ListBox runat="server" ID="lstDSSP" Rows="20"> </asp:ListBox> </form> </body> </html>
khng c new
//Duyt v a vo lstDSSP while (Dr.Read() == true) { lstDSSP.Items.Add (Dr ["ProductName"].ToString()); } Cmd.Dispose (); Conn.Close (); } }
Cu hi: Vit lstDSSP.Items.Add (Dr [0].ToString()) c c khng ?. 13.3.7 Lp DataColumn Chc nng: L mt thnh phn to nn DataTable. Khai bo: DataColumn Dc; Dc = new DataColumn (Tn_Ct); Hoc, to ct v ch nh kiu d liu cho ct: DataColumn Dc; Dc = new DataColumn ("Hello", System.Type.GetType(Tn_Kiu)); Trong Tn_Kiu c th l String, Int32, . Mt s phng thc: Mt s thuc tnh: Caption: Tiu ca ct ColumnName: Tn ca ct. V d : To mt ct c tn l H tn, kiu String, Tui kiu Int:
DataColumn Dc_HVT; Dc_HVT = new DataColumn ("HoVaTen", System.Type.GetType ("String")); Dc_HVT.Caption = "H v tn"; DataColumn Dc_Tuoi; Dc_HVT = new DataColumn ("Tuoi", System.Type.GetType ("Int32")); Dc_HVT.Caption = "Tui";
13.3.8 Lp DataTable Chc nng: Qun l d liu dng bng 2 chiu (Cc hng v cc ct). Khai bo:
DataTable Dt ;
106
Mt s phng thc: DataRow NewRow() : Tr v mt i tng DataRow; Clear(): Xa tt c cc d liu trong DataTable Mt s thuc tnh: Columns: L mt tp hp, qun l ton b cc ct (Thm, xa, sa) ca DataTable. Columns li c cc phng thc thm/xa ct. Rows: L mt tp hp, qun l ton b cc hng trong DataTable. Rows cng c cc phng thc thm/xa hng. Truy xut n [i,j] ca bng: Tn_Bng.Rows[i][j]. C th dng vng lp kiu nh for (i=0; i < Dt.Rows.Count; i++) for (j=0; j < Dt.Columns.Count; j++) { Dt.Rows[i][j] } duyt ton b cc trong Table. V d : To mt bng c 2 ct l H tn (Kiu String) v Tui (Kiu Int32) .
DataColumn Dc_HVT; Dc_HVT = new DataColumn ("HoVaTen", Type.GetType ("String")); Dc_HVT.Caption = "H v tn"; DataColumn Dc_Tuoi; Dc_HVT = new DataColumn ("Tuoi", Type.GetType ("Int32")); Dc_HVT.Caption = "Tui"; DataTable Dt ; Dt=new DataTable(); Dt.Columns.Add (Dc_HVT); Dt.Columns.Add(Dc_Tuoi);
Hoc c th thm ngn gn hn: Dt.Columns.Add("HoVaTen",Type.GetType("String")); 13.3.9 Lp DataRow Chc nng: L mt i tng qun l mt hng ca mt DataTable. Khai bo: DataRow Dr; Lu : V Dr ph thuc vo bng (DataTable) nn n ch c
to ra bi mt DataTable c sn, khng th to DataRow theo kiu: DataRow Dr=new DataRow() !!!
Truy xut cc ct () trong mt DataRow nh sau: Dr[Ch s] hoc Dr[Tn_Ct]. Trong Dr: l mt bin kiu DataRow V d : To mt bng c hai ct H tn v Tui, sau chn vo bng ny 2 bn ghi c gi tr tng ng l {"Nguyn Vn An", 30} v {"Nguyn Vn Bnh", 20}.
.. DataTable Dt ; Dt=new DataTable();
13.3.10 Lp DataSet Chc nng: L mt i tng cha cc DataTable. N l ni lu tr d liu tm thi cho ng dng trong qu trnh x l. Lp DataSet ny nm trong System.Data. 0 1 2
DataSet Object Khai bo: DataSet Ds; DataSet Ds = new DataSet(); Mt s phng thc: Mt s thuc tnh: Tables: Cha tt c cc bng cha trong Dataset. Tables[i] hoc Tables[Tn_Bng] : Tham chiu n mt bng c th trong Dataset. V d : Xem v d mc 13.3.11 13.3.11 Lp DataAdapter Chc nng: ng vai tr cu ni / Chuyn i d liu gia Ngun d liu (DataSource) v cc i tng thao tc d liu (nh DataSet chng hn). Mt s phng thc: Fill (DataSet, Tn_Cho_DataSet): in d liu ly c vo DataSet.
108
Mt s thuc tnh: SelectCommand, UpdateCommand, DeleteCommand, InsertCommand: tr v hoc cho php thit lp cc cu lnh SQL Chn (Select), Cp nht (Update), Delete, Insert vo C s d liu. V d: Hin th ton b bng Suppliers ra mn hnh Trang giao din
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataSet.aspx.cs" Inherits="Lession_12_DataSet" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>DataSet demo</title> </head> <body> <form id="form1" runat="server"> <h2>Danh sch nh cung cp</h2> <asp:DataGrid runat="server" ID="dgrNCC"> </asp:DataGrid> </form> </body> </html>
Trang Code
using System; using System.Data; using System.Data.OleDb; public partial class Lession_12_DataSet : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // To i tng Connection v m kt ni n CSDL OleDbConnection Conn; Conn = new OleDbConnection (); Conn.ConnectionString = "Provider=Microsoft.jet.oledb.4.0; data source="; Conn.ConnectionString += Server.MapPath ("../App_Data/nwind.mdb"); Conn.Open (); // To i tng Command v select ton b bng Suppliers OleDbCommand Cmd; Cmd = new OleDbCommand (); Cmd.CommandText = "Select * from Suppliers"; Cmd.Connection = Conn; OleDbDataAdapter Da; Da=new OleDbDataAdapter();
110
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Bng ngi dng
Mi quan h gia cc bng (Ch chn Cascading Update/ Delete khi to)
2. Nhp d liu cho bng. y ch hng dn cch nhp mu cho bng tblUser, v bng ny cha c d liu dng Xu, s, bool, datetime. Hc vin to cc bng khc mt cch tng t. 2.1 Thit k trang giao din (Ch : Cc trang cn phi c gn vo trong h thng giao din c xy dng bi trc, v d: a vo MasterPage) Trang giao din NhapNguoiDung.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NhapNguoiDung.aspx.cs" Inherits="Lession_13_NhapNguoiDung" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Nhp thng tin ngi dng</title> <style type="text/css"> .CanPhai {text-align:right; font-style:italic} </style> </head> <body> <form id="form1" runat="server"> <div> <table style="border:solid 1px purple; border-collapse:collapse;">
112
114
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu 3. Hin th d liu trong bng ln trnh duyt 3.1 Trang giao din HienThiNguoiDung.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HienThiNguoiDung.aspx.cs" Inherits="Lession_13_HienThi" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Danh sch ngi dng</title> </head> <body> <form id="form1" runat="server"> <div> <h2> Danh sch ngi dng</h2> <asp:DataGrid runat="server" id="dgrDSNS"></asp:DataGrid> </div> </form> </body> </html>
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu 4. Cp nht d liu bng DataSet v DataAdapter cp nht d liu vo trong CSDL, ta c th dng cu lnh SQL dng nh "UPDATE WHERE ." v thc thi bng phng thc ExecuteNonQuery ca i tng Command. Tuy nhin cn c mt cch khc cp nht na, l dng phng thc Update ca i tng DataSet v DataAdapter. M hnh dng nh sau:
Cc bc cn phi thc hin khi Update bng DataAdapter: 1. To kt ni n CSDL 2. To i tng Command v t cu lnh Select cho thuc tnh CommandText. Vic t cu lnh Select y l v sau DataAdapter bit c cc trng ca bng gm nhng trng no ? 3. in (Fill) d liu vo mt DataSet. 4. Chnh sa d liu trong cc bng ca DataSet 5. To mt th hin ca CommandBuilder (OleDBCommandBuilder/ SqlCommandBuilder) 6. Gi phng thc Update ca DataAdapter cp nht thc s vo Database. V d: Sa i trng thi ng nhp (Trng TrangThai) ca tt c ngi dng trong bng tblUser thuc c s d liu QLCB.mdb thnh 1. Trang giao din UpdatewithDataAdapter.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpdatewithDataAdapter.aspx.cs" Inherits="Lession_13_UpdatewithDataAdapter" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Cp nht d liu thng qua Data Adapter</title> </head> <body> <form id="form1" runat="server"> <h2>Sa trng thi ng nhp thnh 1</h2> <asp:Button runat="server" ID="cmdEnableAllUser" Text="Enable all users"
116
<%@ Page Language="C#" AutoEventWireup="true" Inherits="_Default" %> <head runat="server"> <title>Data Binding demo</title> </head> <body> <form id="form1" runat="server"> Hng s: <%# 20 %> <br /> Hng xu: <%# "Xin cho" %> <br /> Biu thc: <%# 10+5 %> <br /> Hm : <%# "Sin(3.14/2) = " + Math.Sin(3.14/2) %> <br /> Thuc tnh khc: <%# "Tiu ca trang l " + this.Title %> </form> </body> </html>
C th gn kt ti mt biu thc, mt bin, thuc tnh bt k. Ch : Trong th tc Page_Load cn thm lnh this.DataBind() thc s gn kt.
118
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu 15.2.2 Dng gn kt d liu c s lp li (Repeated Data Binding) C rt nhiu trng hp d liu cn hin th l mt danh sch (V d Mng, bng, DataReader,) hay tng qut l mt tp hp cc mc (Collection Items ). Trong trng hp nh vy, ta hon ton c th dng c ch DataBinding trong ASP.NET gn kt qu vo mt iu khin dng danh sch (V d ListBox, DropdownList, CheckboxList,) hin th m khng cn phi vit nhiu dng code. Cc iu khin cho php gn kt d liu thng c 3 thuc tnh vi cc ngha nh sau: DataSource: L thuc tnh ch n ngun d liu cn gn kt. Ngun d liu ny phi l mt tp hp. V d: DataTabe, Array, DataSourceID: Ch n mt i tng cung cp ngun d liu. C th s dng hoc thuc tnh DataSourceID hoc DataSource nhng khng c c hai. DataTextField: Cho bit l gn kt vi trng no ca mi mc d liu. V d 1: To mt mng c 100 phn t (t 0 n 99), sau hin th trn mt Listbox thng qua c ch DataBinding:
Trang giao din: ArrayBinding.aspx Ch : V y mi mt phn t ca mng ch c mt gi tr duy nht, do vy trong 3 thuc tnh DataSource, DataSouceID v DataTextField ta ch cn t gi tr duy nht l DataSouce khi thc hin bind mng ny vo ListBox hin th. C th nh trong trang Code behind sau y. Nhc li rng, vic Bind d liu thc s din ra, ta cn gi phng thc DataBind ca iu khin hoc DataBind ca trang (Nu gi phng thc DataBind ca trang th tt c cc iu khin con thuc trang s t ng gi phng thc DataBind ca ring n).
Trang Code v kt qu: ArrayBinding.aspx.cs V d 2: Dng c ch DataBind, hin th tt c tn ng nhp trong bng tblUser thuc CSDL QLCB.MDB vo mt ListBox:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataReaderBinding.aspx.cs" Inherits="Lession_14_DataBinding" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>DataReader Binding</title> </head> <body> <form id="form1" runat="server"> <h2>Danh sch ngi dng</h2> <asp:ListBox ID="lstDSND" runat="server"></asp:ListBox> </form> </body> </html>
120
using System; using System.Data.OleDb; public partial class Lession_14_DataBinding : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // To i tng Connection v m kt ni n CSDL OleDbConnection Conn; Conn = new OleDbConnection (); Conn.ConnectionString="Provider=Microsoft.jet.oledb.4.0; data source="; Conn.ConnectionString += Server.MapPath ("../App_Data/QLCB.mdb"); Conn.Open (); // To i tng Command v select ton b bng Suppliers OleDbCommand Cmd; Cmd = new OleDbCommand (); Cmd.CommandText = "Select * from tblUser"; Cmd.Connection = Conn; OleDbDataReader Dr; Dr = Cmd.ExecuteReader (); // Bind kt qu vo Listbox hin th trn trang web lstDSND.DataSource = Dr; // Ly d liu t ngun Dr lstDSND.DataTextField = "TenDangNhap"; // Hin th TenDangNhap lstDSND.DataBind (); // Thc hin gn kt. } }
Trang code thc hin vic Binding Ch : - Ta gn kt d liu gia Listbox vi DataReader c bi v Dr cha mt tp hp phn t - V mi mc d liu ca ngun d liu (Dr) trong trng hp ny li cha nhiu trng, do vy ta cn phi ch r thm l Listbox s gn/ly trng no ra hin th thng qua vic gn tn trng cn hin th cho thuc tnh DataTextField. - Sau cng, cn phi gi phng thc DataBind () thc hin gn kt v hin th thc s.
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu SqlDataSouce: Cho php truy xut ti bt k ngun d liu s dng trnh iu khin (Provider) ca ADO.NET. Bao gm OleDb, SqlClient, ODBC, Oracle. (bi ny s s dng SqlDataSource minh ha) ObjectDataSource: Truy xut ti ngun d liu do ngi dng t nh ngha. AccessDataSource: Truy xut ti ngun d liu Access XmlDataSource: Truy xut ti ngun d liu l file XML.
tng ca DataSource control l: "Bn ch vic t vi thng s kt ni v cu lnh sql, sau c th gn vo control ny ly li d liu.". Vic gn v ly d liu ny thc hin d dng thng qua cc thuc tnh khi khai bo control. Tuy nhin, vi DataSouce control th khng ch c vy, n cn cho php thc hin cc thao tc cp nht khc nh Update, delete, 15.3.2 S dng SqlDataSouce chn (Select) d liu a) To iu khin SqlDataSouce: C php:
<asp:SqlDataSource runat="server" ProviderName="Tn_Provider" ConnectionString="ng dn ti file CSDL hoc thng s kt ni" SelectCommand/ UpdateCommand/ DeleteCommand ="Cu lnh SQL tng ng" ID="Gi tr ID">
Lu : cho linh hot, thng s kt ni thng c t trong file cu hnh (web.config). c xu kt ni ny ta c th thc hin thng qua k php dng: <%$ %>. V d: To mt iu khin SqlDataSouce c ton b ni dung ca bng tblUser trong c s d liu QLCB. Ni dung ca file web.config nh sau: web.config ..
<connectionStrings> <add name="QLCB" connectionString="Provider=Microsoft.jet.oledb.4.0; Data Source=|DataDirectory|\QLCB.mdb"/> </connectionStrings>
..
122
To mt SqlDataSource v select d liu trong bng tblUser Sau khi to mt ngun d liu trn ri th vic s dng ngun d liu ny hin th kh n gin. V d: Hin th bng tblUser va ly c trn. Hin th danh sch ngi dng
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="datasourceControl.aspx.cs" Inherits="Lession_15_datasourceControl" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>SqlDataSouce control</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource runat="server" ProviderName="System.Data.OleDb" ConnectionString="<%$ ConnectionStrings:QLCB %>" SelectCommand="Select * from tblUser" ID="DSND" > </asp:SqlDataSource> <asp:GridView runat="server" ID="dgr" DataSourceID="DSND" > </asp:GridView> </form> </body> </html>
V d 2: Hin th tn cc nh cung cp trong mt Dropdownlist; Phn tch: y Dropdownlist ch hin th c mt ct (trng d liu) trong khi Dr cha c mt bng (c nhiu ct). Do vy, cn phi ch cho Dropdownlist bit l gn vi trng no ca Dr thng qua thuc tnh DataTextField.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataTextField.aspx.cs" Inherits="Lession_15_DataTextField" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Hin th danh sch nh cung cp trong nwind.mdb</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource runat="server" ID="DSNCC" ProviderName="System.Data.OleDb" ConnectionString="<%$ ConnectionStrings:NWIND %>" SelectCommand="Select * from Suppliers"> </asp:SqlDataSource> <h2> Danh sch nh cung cp</h2> <asp:DropDownList runat="server" ID="ddlDSNCC" DataSourceID="DSNCC" DataTextField="CompanyName"> </asp:DropDownList> </form> </body> </html>
</connectionStrings> 15.3.3 S dng SqlDataSource cp nht d liu cp nht d liu th trong khai bo iu khin SqlDatasource ta cn cung cp c th cu lnh Update cho thuc tnh UpdateCommand. Lu : Khi thc hin Update, thng thng ta s truyn gi tr vo thng qua cc tham s. Do vy, cn phi Add cc tham s (parameter) ny trc khi thc hin thao tc Update. V d 1: Hin th bng tblUser trong gridview, nhng c thm chc nng cp nht. V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 124
Giao din trang web c th cp nht c thc s vo CSDL, thc hin my cng vic sau: 1. Hin th ct Update, trong gridview: t thuc tnh
AutoGenerateEditButton="true". 2. Thm thuc tnh UpdateCommand cho SqlDataSource 3. Truyn tham s v gi tr cho cc trng m ta mun cp nht. 4. Gi phng thc Update ca SqlDataSource.
Trong 1) v 2) vit trong trang ASPX; 3) 4) vit trong s kin Row_Updating ca GridView. Trang giao din
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpdateDeleteUser.aspx.cs" Inherits="Lession_15_DisplaytblUser" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Cp nht ngi dng</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource runat="server" ID="DSND" ProviderName="System.Data.OleDb" ConnectionString="<%$ ConnectionStrings:QLCB %>" SelectCommand="Select TenDangNhap, MatKhau from tbluser" UpdateCommand="Update tblUser set MatKhau=@MatKhau where TenDangNhap=@TenDangNhap" </asp:SqlDataSource> <h2>Cp nht thng tin ngi dng</h2>
Trang code
using using using using using using using System; System.Data; System.Data.OleDb; System.Web; System.Web.UI; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts;
public partial class Lession_15_DisplaytblUser : System.Web.UI.Page { protected void dgrDS_RowUpdating (object sender, GridViewUpdateEventArgs e) { string TenDN; string MKMoi; TenDN = e.NewValues ["TenDangNhap"].ToString (); MKMoi = e.NewValues ["MatKhau"].ToString (); // To 2 tham s vi gi tr tng ng l TenDN v MKMoi, // Sau add vo UpdateCommand ca i tng SQLDataSource DSND.UpdateParameters.Add ("MatKhau", MKMoi); DSND.UpdateParameters.Add ("TenDangNhap", TenDN); DSND.Update (); } }
y @MatKhau v @TenDangNhap c gi l cc tham s. Tham s ny rt a dng, n c th l ni dung ca mt textbox hay cng c th do ta to ra tng minh bng cu lnh dng: SqlDataSource.UpdateCommand.Parameters.Add("Tn","Gi tr") . Trong trng hp ny ta s to bng phng thc Add, sau truyn gi tr l ni dung m ngi dng va sa i. Cu hi : Lm th no ly c gi tr m ngi dng va sa ?. Rt may cho chng ta l khi ngi dng sa i ni dung v bm vo nt "Update" (bn cnh Gridview) th Gridview s Postback tr li Server v kch hot s kin RowUpdating: V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 126
Khi postback (gi v) server, Gridview s gi km cc thng tin v hng (bn ghi) hin ang c sa cha, c th gm: Cc gi tr c (OldValues), cc gi tr mi (NewValues), ch s ca hng ang sa v c th c gi tr kha ca bn ghi (nu trong gridview ta t thuc tnh DataKeyNames) truy xut n cc gi tr mi/c ny ta vit: e.OldValues[Ch s / tn trng], e.NewValues[Ch s hoc tn trng]. truy xut n gi tr kha ca bn ghi hin hnh, ta vit e.Keys[Ch s / hoc tn trng] (V d e.Keys[MaSanPham]) Sau khi ly c cc gi tr ny, ta s to ra parameters tng ng v gi phng thc Update() ca iu khin SqlDataSource. 15.3.4 Xa bn ghi trong CSDL bng SqlDataSource xa bn ghi, ta cng tin hnh tng t nh khi cp nht, l phi thm thuc tnh DeleteCommand cho iu khin SqlDataSource, to v truyn tham s trong s kin RowDeleting. Nh vy, ni dung trang web trn s c b sung thm nh sau: Trang giao din
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpdateDeleteUser.aspx.cs" Inherits="Lession_15_DisplaytblUser" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Cp nht ngi dng</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource runat="server" ID="DSND" ProviderName="System.Data.OleDb" ConnectionString="<%$ ConnectionStrings:QLCB %>" SelectCommand="Select TenDangNhap, MatKhau from tbluser" UpdateCommand="Update tbluser set MatKhau=@MatKhau where TenDangNhap=@TenDangNhap" DeleteCommand="delete from tblUser where TenDangNhap=@TenDangNhap"> </asp:SqlDataSource>
<h2>Cp nht thng tin ngi dng</h2> <asp:GridView runat="server" ID="dgrDS" DataKeyNames="TenDangNhap" DataSourceID="DSND" AutoGenerateEditButton="true" onrowupdating="dgrDS_RowUpdating" > </asp:GridView> </form> </body> </html>
Trang code
using using using using using using using using using System; System.Data; System.Data.OleDb; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.HtmlControls; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts;
public partial class Lession_15_DisplaytblUser : System.Web.UI.Page { protected void dgrDS_RowDeleting (object sender, GridViewDeleteEventArgs e) { string TenDN = e.Keys ["TenDangNhap"].ToString (); ///Ly gi tr kha DSND.DeleteParameters.Add ("TenDangNhap", TenDN); DSND.Delete (); } protected void dgrDS_RowUpdating (object sender, GridViewUpdateEventArgs e) { string TenDN, MKMoi; TenDN = e.NewValues ["TenDangNhap"].ToString (); MKMoi = e.NewValues ["MatKhau"].ToString (); // To 2 tham s vi gi tr tng ng l TenDN v MKMoi, // Sau add vo UpdateCommand ca i tng SQLDataSource DSND.UpdateParameters.Add ("MatKhau", MKMoi); DSND.UpdateParameters.Add ("TenDangNhap", TenDN); DSND.Update (); } }
Ch : Th t thm tham s phi ging nh th t s dng tham s trong thuc tnh UpdateCommand, DeleteCommand ca SqlDataSource.
128
Bi 1.1: Hin th danh sch cn b (bao gm H tn, ngy sinh, gii tnh, a ch, in thoi) trong mt Gridview, s dng c ch DataBinding. Hng dn: c d liu bng DataReader v Command. Sau "Gn" GridView vi DataReader bng cch t thuc tnh DataSource ca GridView: Trang giao din
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DSCB_DataBinding.aspx.cs" Inherits="Lession_17_DSCB_DataBinding" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Danh sch cn b - version 1.0</title> </head> <body> <form id="form1" runat="server"> <h3>Danh sch cn b <asp:Button ID="cmdDisplay" runat="server" onclick="cmdDisplay_Click" Text="Hin th" /> </h3> <hr /> <asp:GridView runat="server" ID="dgrDSCB"> </asp:GridView> </form> </body> </html>
Trang Code
using using using using using using using using System; System.Collections; System.Configuration; System.Data; System.Data.SqlClient; System.Web; System.Web.UI; System.Web.UI.WebControls;
public partial class Lession_17_DSCB_DataBinding : System.Web.UI.Page { private SqlConnection Conn = new SqlConnection (); private SqlCommand Cmd = new SqlCommand (); private SqlDataReader Dr; protected void Page_Load(object sender, EventArgs e) { } protected void cmdDisplay_Click (object sender, EventArgs e) { Conn.ConnectionString =
System.Configuration.ConfigurationManager.ConnectionStrings ["strConn"].ToString();
Conn.Open ();
Cmd.Connection = Conn; Dr=Cmd.ExecuteReader (); //Gn kt vi Gridview hin th dgrDSCB.DataSource = Dr; dgrDSCB.DataBind (); Cmd.Dispose (); Conn.Close (); } }
Bi 1.1 Hin th thng tin v ngi dng (Gm h tn, bng cp, chc v) mi khi ngi dng chn n v trong mt Dropdownlist. Trang giao din
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DSCB_PhongBan.aspx.cs" Inherits="Lession_17_DSCB_PhongBan" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Thng tin v cn b theo phng ban</title> </head> <body> <form id="form1" runat="server"> <h3>Danh sch phng</h3>
130
Trang code
using using using using using using using using using using System; System.Collections; System.Configuration; System.Data; System.Data.SqlClient; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts;
public partial class Lession_17_DSCB_PhongBan : System.Web.UI.Page { private SqlConnection Conn = new SqlConnection (); private SqlCommand Cmd = new SqlCommand (); private SqlDataReader Dr; protected void Page_Load(object sender, EventArgs e) { Conn.ConnectionString =
System.Configuration.ConfigurationManager.ConnectionStrings ["strConn"].ToString ();
Conn.Open (); if (IsPostBack == false) { Cmd.CommandText = "Select MaPhong from tblPhongBan"; Cmd.Connection = Conn; Dr = Cmd.ExecuteReader (); ddlDSPhong.DataSource = Dr; ddlDSPhong.DataTextField = "MaPhong"; ddlDSPhong.DataBind (); } else {
Cmd.CommandText="Select tblCanBo.HoVaTen, tblBangCap.MoTa, tblChucVu.MoTa " +
" FROM tblCanBo, tblBangCap, tblChucVu " + "WHERE tblCanBo.MaBangCap = tblBangCap.MaBangCap and " + " tblCanBo.MaChucVu=tblChucVu.MaChucVu and "+ " tblCanBo.MaPhongBan = '" + ddlDSPhong.Text + "'"; Cmd.Connection = Conn;
Dr = Cmd.ExecuteReader (); dgrDSCB.DataSource = Dr; dgrDSCB.DataBind (); } Cmd.Dispose (); Conn.Close (); } }
Bi 2: Xy dng cc trang cho php cp nht thng tin v ngi dng, phng ban, chc v, chuyn mn, bng cp. S dng c ch DataBinding, kt hp vi GridView tng t nh trong bi l thuyt. Bi 3: b sung vo cc trang trn chc nng "Thm mi". cho php thm mi cc bn ghi. Giao din c dng nh sau:
132
HyperLinkField Hin th gi tr ca mt trng di dng siu lin kt (hyperlink). Loi ct ny cho php bn gn mt trng th hai vo URL ca siu lin kt. ImageField TemplateField Hin th mt nh ng vi mi mc trong GridView. Hin th ni dung ty bin ca ngi dng cho mi mc d liu trong GridView, theo nh mu nh sn. Loi ct ny cho php ta to ra cc ct ty bin.
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Cc thuc tnh: Thuc tnh GridLines ShowHeader ShowFooter PageSize PageCount PageIndex AllowPaging AllowSorting
AutoGenerateColumns
M t n, hin cc ng vin ca GridView. Cho php Hin/ n phn Header Cho php Hin/ n phn Footer Get/Set cho bit mi trang cha bao nhiu dng. Cho bit s trang ca ngun d liu m n gn kt Get/Set ch s ca trang ang c hin th C cho php phn trang khng ( true = c) C cho php sp xp khng (true=c) C t ng sinh ra cc ct ng vi cc ct trong ngun d liu hay khng ? Mc nh = true (c) T ng to ra ct Delete (true = t ng)
AutoGenerateDeleteButton
T ng to ra ct Select (true = t ng) t hng no v ch edit. EditIndex = 2 hng th 3 (ch s 2) s v ch edit. Nu t EditIndex = -1 th s thot khi ch Edit. Tr v ch s ca dng ang chn Mt tp hp cha cc hng ca GridView. Mt tp hp cha cc ct ca GridView.
17.2.2 Cc style p dng cho GridView GridView rt linh hot trong vic trnh by d liu, n cho php ta nh dng cc phn thng qua style. V d ta c th nh dng cho phn Header, footer, cc mc d liu, cc hng chn-l v.v Bng di y s gii thch r ngha mt s thuc tnh: V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 134
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Thuc tnh style M t
AlternatingRowStyle Style p dng cho cc hng d liu chn-l trong GridView. Khi t thuc tnh ny th cc hng s c hin th vi nh dng lun phin gia RowStyle v AlternatingRowStyle. EditRowStyle FooterStyle HeaderStyle PagerStyle RowStyle Style hin th hng hin ang c sa (Edit). Style p dng cho phn Footer. Style p dng cho phn Header. Style p dng cho phn phn trang (cc trang << 1 2 3 >>). Style p dng cho cc hng d liu trong GridView control. Khi AlternatingRowStyle c thit lp th s p dng lun phin gia RowStyle v AlternatingRowStyle. Style p dng cho hng ang c chn (Selected)ca GridView.
SelectedRowStyle
17.2.3 Cc s kin GridView c rt nhiu s kin quan trng, cc s kin ny khi kch hot s cung cp cho ta nhng thng tin hu ch trong qu trnh x l. V d, khi chng ta click nt Update, n s kch hot s kin Updating v tr v cho chng ta cc gi tr m ngi dng va sa. Di y l bng tng hp mt s s kin hay dng nht: Tn s kin PageIndexChanged PageIndexChanging M t Xut hin khi ta click chn cc nt ( << 1 2 3 >>) trong hng phn trang. Xut hin khi ngi dng click chn cc nt ( << 1 2 3 >>) trong hng phn trang nhng TRC khi GridView thc hin vic phn trang. Ta c th hy vic phn trang ti s kin ny. Xut hin khi nt Cancel c click nhng trc khi thot khi ch Edit. Xut hin khi mt nt c click. Xut hin khi mt hng mi c to ra. Thng c s dng sa ni dung ca hng khi n va c to ra. Xut hin khi mt hng d liu c gn vo GridView. Ti y ta c th sa i ni dung ca hng .
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu RowDeleted RowDeleting Xut hin khi nt Delete ca mt hng c click, nhng sau khi GridView delete bn ghi t ngun. Xut hin khi nt Delete c click nhng trc khi GridView xa bn ghi t ngun. Ti y c th Cancel vic Delete. Xut hin khi nt Edit c click, nhng trc khi GridView v ch sa. Xut hin khi nt Update c click, nhng sau khi GridView update hng d liu. Xut hin khi nt Update c click, nhng trc khi GridView update hng d liu. Xut hin khi nt Select ca hng c click nhng sau khi GridView x l xong thao tc Select.
SelectedIndexChanging Xut hin khi nt Select ca hng c click nhng trc khi GridView x l xong thao tc Select. Sorted Sorting Xut hin khi Hyperlink (tiu ct) c click, nhng sau khi GridView thc hin vic sp xp. Xut hin khi Hyperlink (tiu ct) c click, nhng trc khi GridView thc hin vic sp xp. S kin ny khi xy ra, n s cung cp cho chng ta thng tin v tn ct va c click. Da vo ta c th thc hin vic sp xp mt cch d dng.
17.2.4 Cc phng thc Tn phng thc DataBind() DeleteRow(int) UpdateRow(int i, bool Valid) Sort(Biu thc sx, hng sx) M t Gn kt d liu gia GridView v ngun d liu (t cc thuc tnh DataSource, DataTextField hoc DataSourceID. Xa mt dng trong GridView Cp nht mt dng trong GridView. Sp xp da trn biu thc v hng.
136
public partial class Lession_18_PagingwithDataReaderBinding : System.Web.UI.Page { protected void NapDuLieu() { //Kt ni n csdl SQL. Ch lnh c xu kt ni trong tp web.config SqlConnection Cn = new SqlConnection ();
Cn.ConnectionString=ConfigurationManager.ConnectionStrings ["QLCBConnectionString"].ToString();
Cn.Open (); SqlDataAdapter Da = new SqlDataAdapter ("Select * from tblUser", Cn); DataSet Ds = new DataSet (); Da.Fill (Ds, "DSND"); /// Bind d liu va ly c vo GridView hin th dgrDSND.DataSource = Ds.Tables ["DSND"]; dgrDSND.DataBind (); //Gii phng khi khng cn s dng Ds.Dispose (); Da.Dispose (); Cn.Close (); } protected void cmdHienThi_Click (object sender, EventArgs e) { NapDuLieu (); //Gi hm np d liu } //S kin ny kch hot khi ngi dng click s trang trn GridView // Khi ngi dng click trang no th ta hin th trang trn browser
138
17.3.2 Tnh nng t ng sp xp Tnh nng ny cho php d liu trong GridView s t ng c sp xp theo gi tr ca ct m ngi dng click. y ta c th sp xp theo chiu tng (Asscending) hoc gim (Descending). bt tnh nng ny, cn t thuc tnh AllowSorting = true trong GridView. Khi ngi dng click chut vo mt ct tiu no ca GridView th s kin Sorting s c kch hot, ti y ta cn phi ch r cho GridView bit l sp theo ct no (SortExpression ) v theo chiu tng hay gim (SortDirection). V d: Hin th danh sch ngi dng trong bng tblUser, khi ngi dng click vo mt ct th sp theo chiu tng dn. Trang giao din
%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sorting.aspx.cs" Inherits="Lession_18_AllUserwithPaging" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Danh sch ngi dng</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" SelectCommand="SELECT * FROM tblUser"> </asp:SqlDataSource> <asp:GridView DataSourceID="SqlDataSource1" runat="server" id="dgrDSND" AllowPaging="True" AllowSorting="True" PageSize="5" PagerStyle-HorizontalAlign="Center" PagerSettings-Mode="NumericFirstLast" </asp:GridView> </form> </body> </html>
Trang code
using System; using System.Collections; using System.Configuration; public partial class Lession_18_AllUserwithPaging : System.Web.UI.Page
17.3.3 Cc mu hin th - Template ASP.NET cung cp cho chng ta sn mt s Template (mu) hin th GridView cng kh p. V vy, bn c th s dng ngay cc template ny khi xy dng ng dng. Cch thc chn template cho GridView nh sau: b1: M trang ch Design b2: Chn GridView v chn smart tag, tip theo chn AutoFormat
T hp mu c chn t Template c sn. Sau khi chn Template, Asp s t ng to ra cc thuc tnh (th) tng ng trong GridView, ti y bn c th tip tc ty bin thm theo nh mun.
140
SortExpression="tendangnhap" />
<asp:BoundField DataField="HoVaTen" HeaderText="H v tn" SortExpression="HoVaTen" /> <asp:BoundField DataField="MatKhau" HeaderText="Mt khu" SortExpression="MatKhau" /> </Columns> </asp:GridView> </form> </body> </html>
17.4.2 To mt ct hyperlink, Hin th danh sch ngi dng (bng tbluser) trong c thm ct "Chi tit" khi ngi dng click chut vo hyperlink ny th chuyn n trang hin th chi tit ngi dng. Trong ASP.NET, GridView c kh nng hin th (render) cc trng c cha HyperLink thnh cc th <a href > trn trnh duyt. Do vy, v tng chng ta cn phi to mt ct mi c cha sn Hyperlink sau "Chn" trng ny vo ct Hyperlink ca GridView. Ch : Trong SQL, thng thng trong cu lnh SELECT chng ta ch chn cc trng sn c trong bng CSDL, tuy nhin hon ton c th to ra mt ct mi kiu nh sau: V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 141
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu SELECT Ten + Ho as HoVaTen FROM Trong : Ten, Ho l 2 trng ca bng, HoVaTen l mt ct mi (Do ta to ra ngay trong cu lnh SELECT, cn trong bng CSDL th khng c trng ny) Hay mt v d khc: SELECT TenHang, NgayXua, SoLuong, DonGia, SoLuong * DonGia As ThanhTien Trng ThanhTien l mt trng mi. Gi tr ca n bng gi tr SoLuong * DonGia ca bn ghi hin ti. to ct hin th c HyperLink, GridView cung cp th : <asp: HyperLinkField>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UserList_ColumnHyperlink.aspx.cs" Inherits="Lession_18_AllUserwithPaging" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Danh sch ngi dng</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" SelectCommand="SELECT TenDangNhap, HoVaTen, MatKhau, 'UserDetail.aspx?TenDangNhap=' + TenDangNhap as ChiTiet FROM tblUser"> </asp:SqlDataSource> <asp:GridView DataSourceID="SqlDataSource1" runat="server" AllowPaging="True" PageSize="5" PagerStyle-HorizontalAlign="Center" PagerSettings-Mode="NumericFirstLast" AllowSorting="True" AutoGenerateColumns="False">
<Columns> <asp:BoundField DataField="TenDangNhap" HeaderText="Tn ng nhp" SortExpression="tendangnhap" /> <asp:BoundField DataField="HoVaTen" HeaderText="H v tn" SortExpression="HoVaTen" /> <asp:BoundField DataField="MatKhau" HeaderText="Mt khu" SortExpression="MatKhau" /> <asp:HyperLinkField HeaderText="Chi tit" DataNavigateUrlFields="ChiTiet" Text="Xem chi tit" /> </Columns>
</asp:GridView> </form>
142
17.4.3 To ct Image Tng t nh ct HyperLink, GridView cng c mt ct chuyn hin th hnh nh (ImageField) nu trng d liu gn vi n cha ng dn n nh nm trong ng dng. to ct cho php hin th Image, dng th <asp:ImageField DataImageUrlField ../> Trang giao din
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UserList_ColumnImage.aspx.cs" Inherits="Lession_18_AllUserwithPaging" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Danh sch ngi dng</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" SelectCommand="SELECT TenDangNhap, HoVaTen, MatKhau, HinhAnh FROM tblUser"> </asp:SqlDataSource> <asp:GridView DataSourceID="SqlDataSource1" runat="server" AllowPaging="True" PageSize="5" PagerStyle-HorizontalAlign="Center" PagerSettings-Mode="NumericFirstLast" AllowSorting="True" AutoGenerateColumns="False" > <Columns> <asp:BoundField DataField="TenDangNhap" HeaderText="Tn ng nhp" SortExpression="tendangnhap" /> <asp:BoundField DataField="HoVaTen" HeaderText="H v tn" SortExpression="HoVaTen" /> <asp:BoundField DataField="MatKhau" HeaderText="Mt khu" SortExpression="MatKhau" /> <asp:ImageField DataImageUrlField="HinhAnh" HeaderText="Hnh nh"> </asp:ImageField> </Columns> </asp:GridView> </form> </body> </html>
<Columns>
DataField="TenDangNhap" HeaderText="Tn ng nhp"/> DataField="HoVaTen" HeaderText="H v tn"/> DataField="MatKhau" HeaderText="Mt khu" /> DataField="QuyenHan" HeaderText="Quyn hn" />
<asp:CommandField HeaderText="Chn" ShowSelectButton="True" /> <asp:CommandField HeaderText="Sa cha" ShowEditButton="True"/> <asp:CommandField HeaderText="Xa" ShowDeleteButton="True" /> <asp:CommandField HeaderText="Thm" ShowInsertButton="True" /> </Columns>
<SelectedRowStyle BackColor="#999999" /> </asp:GridView> </form> </body> </html>
144
17.5.2 Cp nht d liu V d 1: Xy dng trang web cho php hin th v cp nht (Update) trng H v tn v Mt khu ca bng tblUser: Cc bc cn tin hnh: - To mt ngun d liu SqlDataSource - Thm thuc tnh UpdateCommand vi cu lnh cp nht Sql. - To GridView v t thuc tnh DataKeyNames = "Tn trng Kha ca bng CSDL" - Gn kt GridView vi SqlDataSource bng cch t DataSourceID ca GridView = ID ca SqlDataSource. Trang giao din
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddEditUpdateDeleteColumn.aspx.cs" Inherits="Lession_18_AllUserwithPaging" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Danh sch ngi dng</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" UpdateCommand= "UPDATE tblUser SET MatKhau=@MatKhau, QuyenHan=@QuyenHan WHERE TenDangNhap=@TenDangNhap"> </asp:SqlDataSource> <asp:GridView DataSourceID="SqlDataSource1" runat="server" ID="dgrDSND" AllowPaging="True" PageSize="5"
Kt qu sau khi chy trang trn. Ch : Khi s dng ngun d liu l SqlDataSource v trong cu lnh Update/Delete nu ta t tn cc tham s ging vi tn ca cc trng d liu (v d MatKhau=@MatKhau) th SqlDataSource s t ng to cc tham s sau truyn gi tr m ngi dng va mi nhp gip chng ta. V vy khng cn phi vit cc cu lnh cp nht tng minh. Trang Code: Khng phi vit v khai bo trn s t ng cp nht !!!. 17.5.3 Xa d liu V d 2: Xy dng trang web cho php xa bn ghi trc tip trn GridView. Vic xa cng hon ton tng t nh Update. Tc l ta cng cn phi thm thuc tnh DeleteCommand vo trong SqlDataSource. c th nh sau:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddEditUpdateDeleteColumn.aspx.cs" Inherits="Lession_18_AllUserwithPaging" %> <html xmlns="http://www.w3.org/1999/xhtml">
146
.. Khi , c gi tr ny, ta vit: System.Configuration.ConfigurationManager.AppSettings ["PageSize"].ToString (); Minh ha: Trang giao din
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PagingSorting.aspx.cs" Inherits="Lession_18_PagingSorting" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Hin th v sp xp vi GridView.</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" SelectCommand="SELECT TenDangNhap, HoVaTen, MatKhau FROM tblUser"> </asp:SqlDataSource> <asp:GridView runat="server" ID="dgrDSND" AllowSorting="True" AllowPaging="True" DataSourceID="SqlDataSource1"> </asp:GridView> </form> </body> </html>
148
public partial class Lession_18_PagingSorting : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { dgrDSND.PageSize=int.Parse( System.Configuration.ConfigurationManager.AppSettings ["PageSize"].ToString ()); } }
Ch : Nu mun sp xp theo nhiu ct th cn a danh sch tn ct (trng ) vo thuc tnh SortExpression. Cc phn t cch nhau bi du chm phy. Bi 2: To mt trang hin th thng tin chi tit v ngi dng trong bng tblUser. Trong c thm ct chi tit (dng Hyperlink) khi ngi dng click chn th chuyn ti mt trang mi l UserDetail.aspx, ti y s hin th ton b cc thng tin khc ca ngi dng va c chn.
Giao din Hng dn: Cn to thm mt ct v d ChiTiet - ngay trong cu lnh SELECT, sau "Chn" ct mi ny vo trng HyperLinkField ca GridView. Minh ha: Trang giao din (Khng c Code behind)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UserList_ColumnHyperlink.aspx.cs" Inherits="Lession_18_AllUserwithPaging" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Danh sch ngi dng</title>
Trang UserDetail.aspx:
150
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu UserDetail.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UserDetail.aspx.cs" Inherits="Lession_18_UserDetail" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Chi tit ngi dng</title> <style type="text/css"> .CotTrai { text-align:right; font-style:italic; font-weight:bold} </style> </head> <body> <form id="form1" runat="server"> <h2 style="border-bottom:solid 2px">Chi tit ngi dng t ti y</h2> <table> <tr> <td class="CotTrai">H v tn</td> <td><asp:Label runat="server" ID="lblHVT"></asp:Label></td> </tr> <tr> <td class="CotTrai">Tn ng nhp</td> <td><asp:Label runat="server" ID="lblTenDN"></asp:Label></td> </tr> <tr> <td class="CotTrai">Mt khu</td> <td><asp:Label runat="server" ID="lblMK"></asp:Label></td> </tr> <tr> <td class="CotTrai">Quyn hn</td> <td><asp:Label runat="server" ID="lblQH"></asp:Label></td> </tr> <tr> <td class="CotTrai">Trng thi</td> <td><asp:Label runat="server" ID="lblTT"></asp:Label></td> </tr> <tr> <td colspan="2"> <asp:Image runat="server" ID="imgPhoto"/></td> </tr> </table> <hr /> <a href="#" onclick="history.go(-1);"> < Tr v</a> </form> </body> </html>
Trang Code UserDetail.aspx.cs using System; using System.Collections; using System.Configuration; using System.Data.SqlClient; using System.Web; using System.Web.Security; using System.Web.UI; V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 151
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; public partial class Lession_18_UserDetail : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlConnection Cn = new SqlConnection (); Cn.ConnectionString= System.Configuration.ConfigurationManager.ConnectionStrings ["QLCBConnectionString"].ToString (); Cn.Open (); SqlCommand Cmd = new SqlCommand ("Select * from tblUser where TenDangNhap= '" + Request.QueryString ["TenDangNhap"] + "'",Cn); SqlDataReader Dr = Cmd.ExecuteReader (); // Hin th thng tin chi tit ra cc nhn v th Image if (Dr.Read()) { lblHVT.Text = Dr ["HoVaTen"].ToString(); lblMK.Text = Dr ["MatKhau"].ToString (); lblTenDN.Text = Dr ["TenDangNhap"].ToString (); lblTT.Text = Dr ["TrangThai"].ToString (); lblQH.Text = Dr ["QuyenHan"].ToString (); imgPhoto.ImageUrl = Dr ["HinhAnh"].ToString (); } Cmd.Dispose (); Cn.Close (); } } Bi 3: To mt trang PhoToNguoiDung, hin th 3 ct thng tin l HoVaTen, TrangThai, QuyenHan v nh tng ng. Gi s th mc nh c tn l Images v nm cng vi trang web. Hng dn: Cn to thm mt ct mi v d t tn l DuongDanAnh sau "Chn" trng ny vo ImageField ca GridView. Minh ha: Trang code giao din <%@ Page Language="C#" AutoEventWireup="true" CodeFile="UserList_ColumnImage.aspx.cs" Inherits="Lession_18_AllUserwithPaging" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <style type="text/css"> img {width:50px; height:50px} </style> <title>Danh sch ngi dng</title> V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 152
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" SelectCommand="SELECT TenDangNhap, HoVaTen, HinhAnh FROM tblUser"> </asp:SqlDataSource> <asp:GridView DataSourceID="SqlDataSource1" runat="server" ID="dgrDSND" DataKeyNames="TenDangNhap" AllowPaging="True" PageSize="5" PagerStyle-HorizontalAlign="Center" AllowSorting="True" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="TenDangNhap" HeaderText="Tn ng nhp" SortExpression="tendangnhap" /> <asp:BoundField DataField="HoVaTen" HeaderText="H v tn" SortExpression="HoVaTen" /> <asp:BoundField DataField="MatKhau" HeaderText="Mt khu" SortExpression="MatKhau" /> <asp:ImageField DataImageUrlField="HinhAnh" HeaderText="Hnh nh" > </asp:ImageField> </Columns> </asp:GridView> </form> </body> </html>
Kt qu
Kt qu
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu Bi 4: To mt trang CapNhatCanBo, trong cho php ngi dng sa i H tn v a ch trc tip. (Trn GridView.) v xa mt cn b bt k. Hng dn: Lm tng t nh bi l thuyt (Thm cc ct Edit, Delete vo GridView) Minh Ha: Trang giao din (Khng c Code trang CS) <%@ Page Language="C#" AutoEventWireup="true" CodeFile="EditUpdateDeleteCB.aspx.cs" Inherits="Lession_18_AllUserwithPaging" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Danh sch cn b</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" SelectCommand="SELECT * FROM tblCanBo" UpdateCommand="Update tblCanBo set HoVaTen=@HoVaTen, DiaChi=@DiaChi where MaCanBo=@MaCanBo" DeleteCommand="Delete tblCanBo where MaCanBo = @MaCanBo"> </asp:SqlDataSource> <asp:GridView DataSourceID="SqlDataSource1" runat="server" ID="dgrDSCB" AllowPaging="True" PageSize="5" AutoGenerateColumns="False" DataKeyNames="MaCanBo"> <Columns> <asp:BoundField DataField="HoVaTen" HeaderText="H v tn" /> <asp:BoundField DataField="DiaChi" HeaderText="a ch" /> <asp:BoundField DataField="NgaySinh" HeaderText="NS" ReadOnly="true"/>
<asp:BoundField DataField="SoDienThoai" HeaderText="T" ReadOnly="true"/>
<asp:CommandField HeaderText="Sa cha" ShowEditButton="True" /> <asp:CommandField HeaderText="Xa" ShowDeleteButton="True" /> </Columns> </asp:GridView> </form> </body> </html>
154
<Columns> <asp:TemplateField HeaderText="H v tn"> <ItemTemplate> <%# Eval("HoVaTen") %> </ItemTemplate> </asp:TemplateField> </Columns>
</asp:GridView> </form> </body> </html>
</asp:TextBox> </ItemTemplate>
</asp:TemplateField> </Columns> </asp:GridView>
V d 3: Hin th h tn v TrangThai. Trong TrangThai c t trong ngoc ngay sau h v tn. Trang giao din
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="false" AllowPaging="true">
</asp:TemplateField>
</Columns> </asp:GridView>
<Columns> <asp:TemplateField HeaderText="H v tn & nh "> <ItemTemplate> <%# Eval("HoVaTen") %> <br /> V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 157
Ti liu kha hc lp trnh web vi ASP.NET Bin son: Nguyn Minh Qu <asp:Image runat="server" ImageUrl='<%# Eval("HinhAnh")%>'/> </ItemTemplate> </asp:TemplateField> </Columns>
</asp:GridView> </form> </body> </html>
<Columns> <asp:TemplateField HeaderText="H v tn"> <ItemTemplate> <b><%# Eval("HoVaTen") %></b> <br /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Trng thi"> <ItemTemplate> <i><%# Eval("TrangThai") %></i> <br /> </ItemTemplate> </asp:TemplateField>
158
<asp:TemplateField HeaderText="Hnh nh"> <ItemTemplate> <asp:image runat="server" ImageUrl='<%# Eval("HinhAnh") %>' Width="100px" Height="100px" /> </ItemTemplate> </asp:TemplateField> </Columns>
Cp nht d liu
cho php sa d liu ca mt trng, ta cn t thuc tnh text ca trng vo trong phng thc Bind, dng nh sau:
<asp:TextBox
19.3.2 To template vi DataList DataList cho php ta hin th di dng danh sch. Danh sch ny c th chia lm nhiu ct nh mt s ng dng thng thy trn Internet. V d 8: Hin th nh nh hnh trn;
<body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" SelectCommand="SELECT * FROM tblUser"> </asp:SqlDataSource> <asp:DataList runat="server" ID="DataList1" DataSourceID="SqlDataSource1" RepeatDirection="Horizontal" RepeatColumns="3" RepeatLayout="Table"> <ItemTemplate > H v tn: <b> <%# Eval ("HoVaTen") %></b> <br /> Quyn hn : <%# Eval("QuyenHan") %> <br /> <asp:Image ID="Image1" Width="100px" Height="100px" runat="server" ImageUrl= '<%# Eval("HinhAnh") %>' /> <hr /> </ItemTemplate> </asp:DataList>
160
Kt qu sau khi chy trang trn 19.3.3 To Template vi Repeater (light-weight) Repeater cng l mt iu khin c kh nng hin th d liu di dng danh sch. Khi c gn vi ngun d liu, n s ln lt thc thi ni dung nm trong phn Template mi khi mt bn ghi c c t ngun. Tuy iu khin ny khng c kh nng phn trang, sp xp nh GridView nh n l mt iu khin chim t ti nguyn ca h thng (v vy c gi l iu khin Light-weight), do chng ta c th dng trong nhng trng hp m ti nguyn ng vai tr quan trng. Repeater cho php chng ta ty bin cc mc tng t nh GridView v DataList, l s dng Template. V d 9: Hin th h tn v nh minh ha ngi dng trong bng tblUser s dng iu khin Repeater. V1.0 http://www.aptech.utehy.vn; aptech@utehy.edu.vn; Tel: 0321-713.319 161
<asp:Repeater runat="server" ID="rptDSND" DataSourceID="SqlDataSource1"> <ItemTemplate> H v tn: <%# Eval("HoVaTen") %> <br /> <asp:Image runat="server" ImageUrl='<%# Eval("HinhAnh") %>' Width="100px" Height="100px" /> <hr /> </ItemTemplate> </asp:Repeater>
</form> </body> </html>
20. ng gi website
Sau khi hon tt d n th mt khu quan trng na cn phi thc hin m bo vn bn quyn l bin dch v xut bn ng dng web. Vic xut bn (Publish) ng dng s gip bin dch cc file code behind (file CS) thnh cc assemblies (file DLL). Khi , ng dng chy s nhanh hn v bo mt hn. xut bn web, Right click vo Tn ca Solution v chn mc Publish. Sau mt hp thoi hin ra cho php ta chn th mc s lu kt qu.
162
Bi 2: B sung thm trng Photo vo bng tblCanBo, trng Photo ny s lu ng dn ti file nh ca mi cn b. Sau xy dng trang web hin th thng tin cn b (bao gm cc trng H tn, a ch v nh tng ng). Hng dn: - V trng Photo cha ng dn n file nh ri, v vy hin th hnh nh thay v vn bn text thun ty, ta s to thm phn t <asp:Image>, trong thuc tnh ImageUrl s c gn gi tr ca trng Photo tng ng. c th l : <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Photo") %>' /> - t kch thc nh nh nhau, c th thm thuc tnh Width v Height - Trc gi tr <%# Eval("Photo") %> cn c thm cp du nhy n m bo tnh ng n khi ng dn nh cha du cch.
Yu cu v giao din
164
Hng dn: To mt ct duy nht, nhng mi dng ca ct s cha tt c cc trng thng tin cn hin th. Vi mi hng c to ra, ta s t vo mt table c kch thc c nh, bng ny c 1 hng v 2 ct. Ct th nht s cha thng tin dng text nh h tn, a ch, in thoi v m t bn thn. Ct th hai s hin th hnh nh tng ng.
Kt qu
Ct 1
Ct 2
Bi 3: Hin th danh sch ngi dng di dng Flow (tuyn tnh) nh bi 3, nhn c thm chc nng cp nht v Delete. THng tin hin th gm H tn, a ch, in thoi. Trong , trng a ch s hin th dng Text Multiline khi sa. Hng dn: To cc template nh bi 3, nhng thm 2 command l Edit v Delete. Trong cc trng mun sa cha s t vo cc Textbox v dng hm <%# Bind("Tn_Trng")%>. Minh ha:
166
Kt qu.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DSCB_ImageField.aspx.cs" Inherits="Lession_20_DSCB_ImageField" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Cp nht danh sch cn b</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" SelectCommand="SELECT * FROM tblCanBo" UpdateCommand="Update tblCanBo SET HoVaTen=@HoVaTen, DiaChi=@DiaChi, SoDienThoai=@SoDienThoai Where MaCanBo=@MaCanBo" DeleteCommand="Delete tblCanBo where MaCanBo=@MaCanBo"> </asp:SqlDataSource>
<b>a ch: </b><br /> <asp:TextBox runat="server" ID="txtDC" Width="98%" TextMode="MultiLine" Rows="5" Text='<%# Bind("DiaChi") %>'> </asp:TextBox> <br /> <b>in thoi: </b> <br /> <asp:TextBox runat="server" ID="txtDT" Width="98%" Text= '<%# Bind("SoDienThoai") %>'> </asp:TextBox> </EditItemTemplate> </asp:TemplateField> <asp:CommandField HeaderText="Sa cha" EditText=" Sa" UpdateText="Lu" ButtonType="Link" CancelText=" Hy b" ShowEditButton="true" />
<asp:CommandField HeaderText="Xa" DeleteText=" Xa" ButtonType="Link" ShowDeleteButton="true" /> </Columns> </asp:GridView> </form> </body> </html>
168
Bi 4: Hin th thng tin trch ngang v ngi dng trong bng tblUser, trong di mi ngi dng thm mt Hyperlink l "Xem chi tit" khi ngi dng click vo hyperlink ny th m trang UserDetail.aspx v hin th chi tit thng tin v ngi dng . Yu cu thm: Danh sch ny hin th lm 3 ct. Hng dn: hin th thng tin di dng ct, ta s dng iu khin DataList. Trong mi Hyperlink ta s to lin kt n trang UserDetail.aspx v truyn cho trang ny ID (trong trng hp ny l TenDangNhap) ca ngi dng tng ng. Da vo ID ny, trang UserDetail.aspx s c (dng Request.QueryString["TenNguoiDung"]) sau select thng tin ng vi ID v hin th. Minh ha:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataListControl.aspx.cs" Inherits="Lession_19_RepeaterControl" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Danh sch cn b</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:QLCBConnectionString %>" SelectCommand="SELECT * FROM tblUser"> </asp:SqlDataSource> <asp:DataList runat="server" ID="DataList1" DataSourceID="SqlDataSource1" RepeatDirection="Horizontal" RepeatColumns="3" RepeatLayout="Table"> <ItemTemplate > <b> <%# Eval ("HoVaTen") %></b> <br /> Quyn hn : <%# Eval("QuyenHan") %> <br /> <asp:Image Width="100px" Height="100px" runat="server" ImageUrl= '<%# Eval("HinhAnh") %>' /><br />
Kt qu. Bi 4: Hin th danh sch ngi dng di dng ct v thc hin phn trang. Hng dn: thc hin to cc ct, c th s dng iu khin DataList, ngoi ra ta cn mt iu khin khc cng rt mnh cho php hin th di dng cc ct nhng c thm kh nng phn trang, l: ListView controls. Cc bc thc hin: B1. To ngun d liu SqlDataSource nh nhng bi trc. B2. To mt ListView v gn vi ngun d liu SqlDataSource (nh bi trc) B3. Cu hnh cho ListView (chn smart tag), sau click chn "Config ListView"
B4: Chn cc thng s nh hnh bn di. B5: M trang web. Lu : Chng ta hon ton c th thay i format ca ListView bng cc vo Source code editor sa. Mt cch phn trang khc l to mt DataPager v gn vo ListView, Khi ta ch cn t thuc tnh PagedControlID="ListView1". Cch ny c u im l phn trang c th t
bt k v tr no trn mn hnh.
170