You are on page 1of 238

Chng 1. Gii thiu chung v cu trc ASP.

NET Framwork v c bn v C#
I. Gii thiu chung v ASPNetFramwork
Trong gio trnh ny chng ta s hc ASP.NET trn IDE VisualStdio2005(Bn c th s dng
Viusal Web Develop 2005 ).
to mt Wesite mi bn khi ng VS. giao din ca n s hin ra nh sau:

Hnh 1
Trong Box Recent Project bn chn Web site dng Create
Hp thoi New Website hin ra bn chn ASP.NET WebSite ri chn th mc bn
Website v ngn ng kch bn bn vit Web v nhn OK

http://www.ebook.edu.vn

Hnh 2
VS s to ra mt website vi tn ca Website l tn bn va t v mc nh s c mt
trang Default.aspx nh hnh sau:

Hnh 3

1. ASP.NET v .NET FRAMEWORK

http://www.ebook.edu.vn

ASP.NET l mt phn ca .NET FrameWork xy dng trang asp.NET bn cn thm


vo cc c tnh ca .netframework. NetFrameWork cha ng hai phn FrameWork Class
Library v Commom Language Runtime.
1.1 Hiu v Framework Class Library
Framework cha ng hng nghn lp m bn c th s dng trong ng dng ca
mnh. V d mt vi lp ca .Net Framework
-Lp File: cho php bn to file, sa, xo hay kim tra s tn ti ca file trn a cng
-Lp Graphics: Cho php bn lm vic vi nhiu kiu ca nh, bn cng c th to ra
cc nh t cc phng thc trn lp ny.
-Lp SmtpClient: Cho php bn gi th.
Hiu v Namespaces: hn 13 nghn lp trong Netframework. y l mt con s rt ln,
Microsoft chia cc lp cng x l v mt vn g vo cc khng gian tn chung hay
namespaces.
Mt Namespace n gin l mt danh mc, v d tt c cc lp thao tc vi File v th
mc chng ta a vo mt namespaces chung gi l System.IO, hay tt c cc lp lm vic
vi SqlServer c th a vo namespace System.Data.SqlClient.
Cc namespaces chung nht trong net:
. System
. System.Collections
. System.Collections.Specialized
. System.Configuration
. System.Text
. System.Text.RegularExpressions
. System.Web
. System.Web.Caching
. System.Web.SessionState
. System.Web.Security
. System.Web.Profile
. System.Web.UI
. System.Web.UI.WebControls
. System.Web.UI.WebControls.WebParts

http://www.ebook.edu.vn

1.2 Hiu v Assembly:


Mt Assembly l mt file dll trn a cng ca bn, ni m lu tr cc lp ca .NET, v
d tt c cc lp trong .ASP.NET Framework u nm trong Assembly System.web.dll.
Trc khi s dng cc lp trong dll bn cn to mt tham chiu n file dll ny
1.3 Hiu v Commom Language Runtime(CLR)
Phn th 2 ca NetFramework l CLR chu trch nhim v thc thi m ng dng ca
bn.
Khi bn vit ng dng bng ngn ng C#, VB.NET hay bng mt ngn ng bt k trn
nn NetFramwork m ca bn s c khng bao gi bin dch trc tip thnh m my. Thay
vo chng c bin dng sang ngn ng c t MSIL (Microsoft intermediate Language).
MSIL nhn rt ging vi ngn ng hng i tng Assembly, nhng khng ging kiu
ngn ng Assembly. MSIL l ngn ng bc thp v ph thuc vo Platform.
Khi ng dng ca bn thc thi, m MSIL l just in time bin dch sang m my bi
JITTER(just in time compiler)
Nh vy khi bn vit cc lp trn .Net bng bt k ngn ng no khi bn bin dch
sang Assembly bn u c th s dng Assembly cho cc ngn ng khc.
1.4 Hiu v cc iu khin trn Asp.net
Cc iu khin asp.net l phn quan trng nht trong ASP.NET Framework. mt Control
ASP.NET l mt lp m thc thi trn server v a ra ni dung trn trnh duyt. ASP.NET c
hn 70 control m bn c th s dng trong xy dng ng dng web ca bn v c bn n
chia ra cc nhm control sau:
Standard control: bao gm cc iu khin a ra cc thnh phn chun ca form
nh: Label, Button, TextBox
Validator Control: l cc control cho php bn kim tra tnh hp l ca cc control
cho php nhp gi tr trn form.
Rich Control: l nhng iu khin nh FileUpload, Calendar
Data Control l cc iu khin cho php thao tc vi d liu
Navigation Control: l nhng iu khin gip bn d dng di chuyn gia cc trang
trong website.
Login control: L cc iu khin v bo mt ca ng dng cho php bn a ra cc
form ng nhp, thay i mt khu
HTML Control: cho php bn chuyn cc iu khin ca HTML thnh cc iu khin c
th lm vic trn server.
1.5 hiu v iu khin s kin trn server

http://www.ebook.edu.vn

phn ln cc iu khin ca asp.net h tr 1 hoc nhiu s kin, v d iu khin


ASP.NET Button h tr s kin Click, khi ngi s dng nhn chut vo Button mt s kin
s c a ra v cng vic ny c x l trn server.

V d: Trang UnderstandEvent.aspx
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="UnderstandEvent.aspx.cs" Inherits="UnderstandEvent" %>
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = TextBox1.Text;
}
</script>
<!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>Hiu v s kin pha server</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" OnClick="Button1_Click"
runat="server" Text="Button" />
<hr />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>

http://www.ebook.edu.vn

</html>
Trong v d trn gm 3 iu khin ca ASP.NET l TextBox, Label, v Button, mi khi
ngi s dng nhp d liu vo Textbox v nhn vo Button s kin Button1_Click c a
ra v in d liu t TextBox v Label.

1.6 Hiu v View State


Giao thc http l giao thc nn mng ca WWW, l mt giao thc chun thc t.mi
ln bn request mt trang t website, mt d liu mi c a ra, ASP.NET Framework c
th qun l c vt ra ngoi gii hn ca giao thc http, v d bn in d liu vo mt
iu khin Label vi thuc tnh Text ca n, d liu ny s c lu tr qua nhiu trang web
v ch thay i khi n c gn li gi tr.
V d sau s a mt mt trang asp.net trong gm 2 iu khin Button v
Label(Text ca n hin th s m), mi ln nhn vo Button th gi tr ca Label tng ln 1.
V d trang Understandstate.aspx:
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Understandstate.aspx.cs" Inherits="Understandstate" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender,EventArgs e)
{
Label1.Text = Convert.ToString(int.Parse(Label1.Text) + 1);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Under Stand State</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="0"></asp:Label>

http://www.ebook.edu.vn

<asp:Button ID="Button1" OnClick="Button1_Click" runat="server"


Text="Button" />
</div>
</form>
</body>
</html>

sau:

Nu bn m View Source code ca trang Understandstate.aspx trn bn s thy nh

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"


value="/wEPDwULLTE4OTg4OTc0MjUPZBYCAgQPZBYCAgEPDxYCHgRUZXh0BQEzZGRkz0aTZTJffZR
UP11aiDXbPGQGitk=" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"
value="/wEWAgKK7LjKBwKM54rGBgzCWqbCIzq33uVXHF19FzfdGPsJ" />
y l 2 file hidden trong form n cha gi tr Text ca Label khi trang c postback
n s ghi nh text v s khi to li gi tr ca Label khi trang Load.

1.7 Hiu v trang asp.net


S dng Code-Behind
Thay v s dng <script runat=sever/> </script> ngay trn trang asp.net. ngi ta
a ra thm mt trang gi l Code-behind cha cc m lnh thc hin trn trang asp.net.
V d nh phn u ca chng khi ta to ra mt website th mc nh s to ra mt
lp Default.aspx v n s km theo mt trang Default.aspx.cs

Trang Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>

<!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>Default</title>
</head>
<body>
<form id="form1" runat="server">
<div>

http://www.ebook.edu.vn

</div>
</form>
</body>
</html>

Trang Defautl.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
}
}

1.8 iu khin s kin ca trang asp.net


Khi chy trang asp.net th vng i ca trang asp.net gm cc s kin
1.PreInit
2. Init

http://www.ebook.edu.vn

3. InitComplete
4. PreLoad
5. Load
6. LoadComplete
7. PreRender
8. PreRenderComplete
9. SaveStateComplete
10. Unload
S dng thuc tnh Page.IsPostBack
Vi s kin Load ca trang th khi ti trang ln th c mt s kin no c a ra,
nu c ngha mi ln load li trang n li thc hin cng vic , cn nu ta a thm vo
thuc tnh Page.IsPostBack th ta c th iu khin c s kin no c thc hin v s
kin no khng khi trang c ti li.

II C bn v lp trnh C# lp trnh trong trang ASP.NET


1. Kiu d liu.
C# a ra cc kiu d liu dng sn rt tin ch, ph hp vi mt ngn ng lp trnh hin
i. Bng sau y s miu t mt s kiu d liu chnh trong C#

Kiu C#

Kiu .Net

S Byte

M t

byte

Byte

s nguyn khng du t 0 n 255

char

Char

Kiu k t Unicode

bool

Boolean

Gi tr true/false

sbyte

Sbyte

S nguyn c du, t -128 n 127

short

Int16

S nguyn c du t -32768 n 32767

ushort

Int16

S nguyn khng du t 0 n 65.535

int

Int32

S nguyn c du 2.147.483.647 n 2.147.483.647

uint

Int32

S nguyn khng du 0 n 4.294.967.295

float

Single

kiu du chm ng, gi tr xp x t 3,4E-38 n

http://www.ebook.edu.vn

3,4E+38, vi 7 ch s c ngha.
Double

Double

Kiu du chm ng c chnh xc gp i, gi tr


xp x t 1,7E-308 n 1,7E+308, vi 15,16 ch s c
ngha

Decimal

Decimal

C chnh xc n 28 con s v gi tr thp phn,


c dng trong tnh ton ti chnh, kiu ny i hi
phi c hu t m hoc M km theo sau.

2. khai bo bin
C php: Kiu Tn_bin;
V d:
string giatri_chuoi;
int giatri_nguyen;
ch bin c th bao gm cc ch ci, ch s(khng c ng u) v k t _ (ni)
bin trong C# phn bit ch hoa v ch thng.

3. S dng cc trnh by
a. trnh by if if else
Khi bn cn kim tra mt iu kin no trc khi thc hin cng vic, hoc kim tra
iu kin nu ng th lm vic cn khc th khng lm bn c th dng trnh by if if else
c php:
if(iu_kin)
{
//thc hin cng vic
}
if(iu_kin)
{
// thc hin cng vic 1
}

http://www.ebook.edu.vn

10

else
{
//thc hin cng vic 2
}
Lu bn c th dng nhiu cp if else lng nhau:

V d:
Vd1
if (conn.State != ConnectionState.Open)
conn.Open();
Vd2
if (1 > 2)
MessageBox.Show("1>2");
else
MessageBox.Show("2>1");

b, S dng trnh by switch case


Khi cng vic c nhiu la chn v tu vo tng trng hp bn a ra cng vic
ph hp vi iu kin a vo bn c th dng trnh by switch case.
V d:
string giatri = Request.QueryString["abc"];
switch (giatri)
{
case "a":
//thuc hien cong viec a
break;
case "b":
//thuc hien cong viec b

http://www.ebook.edu.vn

11

break;
default:
//thuc hien cong viec mac dinh
break;
}

c, S dng trnh by for


V d
string giatri;
for (int i = 0; i < 10; i++)
giatri += i.ToString();
MessageBox.Show(giatri);
Khi lm vic vi mng hay trong trng hp thc hin mt cng vic trong khong no
chng ta c th dng trnh by for.

d, S dng trnh by while


thc hin cng vic trong khi iu kin ng
V d
int i = 0;
while (i < 5)
{
Console.WriteLine(i.ToString());
i++;
}

e, S dng trnh by do while


ngc li vi while do while lm vic cho n khi iu kin ng th thot.
V d
int i = 0;

http://www.ebook.edu.vn

12

do
{
MessageBox.Show(i.ToString());
i++;
} while (i < 3);\

f, S dng trnh by break ( thot khi vng lp)


V d
int i = 0;
do
{
MessageBox.Show(i.ToString());
i++;
if (i == 1)
break;
} while (i < 3);

g, S dng trnh by continue.


V d
int j = 0;
for ( int i = 0; i < 5; i++ )
{
j++;
if ( j > 2 )
{
MessageBox.Show(j.ToString());
continue;

http://www.ebook.edu.vn

13

}
}

h, S dng trnh by return(c s dng trong cc hm tr v gi tr c th cho


hm)
V d
public int sum(int a, int b)
{
return a + b;
}

k, S dng trnh by goto.


V d
int i = 0;
int j = 0;
while (i < 5)
{
i++;
j++;
if (j == 2)
goto jumpeddoutofloop;
}
jumpeddoutofloop:
Console.WriteLine("I jumped out");

4. Trang asp.net
Trang asp.net c ui m rng l .aspx v km theo mt lp phc v n ng
sau(Code behind).

http://www.ebook.edu.vn

14

vit code C# trong trang aspnet ta c th khai bo v s dng trc tip trong trang
asp.net, trong file code behind, hoc t mt thnh phn th vin v ta gi vo.

4.1 Vit code C# trong file .aspx:


v c bn bn dng cc cc th sau
-

<% %> bn c th khai bo bin hoc vit cc hm, lp trong th ny,

<%= %> vi th ny bn dng gi gi tr ca bin hay ca 1 hm no ,

<%# %> ly gi tr dng trang cc i tng rng buc d liu.

y l mt v d n gin
Trang basic.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Basic.aspx.cs"
Inherits="_Default" %>

<!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>Basic</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%
string abc = "Hello World!";
%>
Bin abc ca bn va khai bo c gi tr <%=abc %>

http://www.ebook.edu.vn

15

</div>
</form>
</body>
</html>

4.2

Vit code trong trang code behind

V trang aspnet ca chng ta k tha t trang aspx.cs ln trong trang .aspx chng ta
mun gi d liu t bin hay hm trong file .aspx.cs chng ta phi khai bo vi b ng truy
cp protected hoc public.
V d sau:
Trang codebehind.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="codebehind.aspx.cs"
Inherits="codebehind" %>

<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3>Gn gi tr:</h3>
<asp:Label ID="lblhello" runat="server" Text="Label"></asp:Label><br
/><br />
<h3>Ly gi tr t code behind</h3>
<%=_hello %>
</div>
</form>

http://www.ebook.edu.vn

16

</body>

</html>
Trang codebehind.aspx.cs
using System;
public partial class codebehind : System.Web.UI.Page
{
protected string _hello;
protected void Page_Load(object sender, EventArgs e)
{
_hello = "Hello World";
lblhello.Text = _hello;
}
}
Trong v d trn c s dng mt iu khin asp.net l Label cc bn s c hc trong
chng sau, chng ny bn hiu n l mt iu khin hin th d liu.
Bn thy trong phn code behind c khai bo mt bin _hello kiu string v b ng
truy cp l protected trong s kin Page_Load(khi trang c ti ln) chng ta gn _hello =
"Hello World"; v sau gn gi tr cho Label bng gi tr ca _hello. Cn trong trang .aspx
chng ta c s dng th <%= %> ly gi tr ca _hello in ra mn hnh.
4.3 to mt lp th vin
to mt lp th vin phc v cho trang asp.net bn c th to mt thnh phn th
vin ng DLL ri nhp tham chiu n n s dng(chng ta s hc n trong phn
asp.net nng cao). Trong ng dng web ASP.NET Framework c mt ASP.NET FOLDER l
App_Code cho php chng ta vit cc lp th vin y v c th s dng trong cc trang
ca ng dng web.
to th mc App_code bn lm theo cc bc sau y:
bc 1: nhn chut phi vo Solution v chn theo ng dn ca nh di y.

http://www.ebook.edu.vn

17

Trong ng dng web ca chng ta s thm vo mt th mc App_code

ti y chng ta c th vit vo cc lp th vin.


to mt lp th vin trong th mc ny chng ta nhn chut phi vo th mc
App_code ri chn Add New Item

http://www.ebook.edu.vn

18

Form Add New Item hin ra

Add.

Bn chn Class v trong hp TextBox Nam bn nhp tn lp mun to v nhn nt

a, nh ngha lp:
Khai bo:
[Thuc tnh] [b sung truy cp] Class [Tn lp] : [Lp c s]
{
//cc bin, phng thc hay thuc tnh ca lp
}
V d: Lp HelloWorld.cs
class HelloWorld
{
public string SayMessage()
{
return "Hello World";

http://www.ebook.edu.vn

19

}
}
Trong v d trn phng thc SayMessage s v chui Hello World.

b, S dng nh ngha truy cp


Public: mt lp, mt phng thc, hay thuc tnh khi s dng t kho ny s khng b
hn ch truy cp
Protected: Lp, Phng thc, Thuc tnh ch c s dng lp ny hoc lp c dn
xut.
Internal: Mt lp, phng thc, thuc tnh Internal ch c truy cp trong mt thnh
phn Assembly(file DLL).
Private: Mt lp Private, phng thc hoc thuc tnh ch c th truy cp ti chnh lp
.

c, Hm v th tc
Bn c th hiu n gin hm phi c gi tr tr v cn th tc nh mt on m ch
thc hin khi c chng ta gi. th tc cn c gi l hm khng kiu, hm v th tc
trong C# gi chung l phng thc.
V d hm:
public static int Sum(int _a, int _b)
{
return _a + _b;
}
Trn l mt hm dng tnh tng ca hai s, nh bn thy tr v d liu cho hm
chng ta dng t kho return, b sung truy cp public c ngha hm c s dng trong
ton ng dng, t kho static y l mt phng thc tnh ln c th s dng m khng cn
phi khai bo khi to i tng
V d v th tc
public static void HelloProcedure(string _bien)
{
System.Web.HttpContext.Current.Response.Write(_bien);
}
S dng lp HellWorld trong trang aspx ca chng ta
Trang UseHelloworld.aspx

http://www.ebook.edu.vn

20

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UseHelloworld.aspx.cs"


Inherits="UseHelloworld" %>
<!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>S dng Lp Hello World trong th mc App_Code</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblHello" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
Trang UseHelloworld.aspx.cs
using System;
public partial class UseHelloworld : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblHello.Text = HelloWorld.sayMessage();
}
}
V phng thc sayMessage trong lp HelloWorld l mt phng thc tnh ln ta khng
cn khi to lp s dng.

5. C bn v lp trong C#
5.1 Khai bo Field v thuc tnh

http://www.ebook.edu.vn

21

V d v Field
public class HelloWorld
{
public string _Message;
public string SayMessage()
{
return _Message;
}
}
Trong on m trn bn thy Field _Message c khai bo kiu string v b ng truy
cp l public, v _Message c tr v gi tr bi phng thc SayMessage().
V d v thuc tnh
public class HelloWorld
{
public string _Message;
public string Message
{
get { return _Message; }
set { _Message = value; }
}
}
Mt thuc tnh Message c khai bo trn gm 2 phng thc get tr v gi tr cho
Message v phng thc set thit lp gi tr cho Message. Thuc tnh Message trn l
phng thc va c va ghi. nu bn xy dng thuc tnh ch c th bn ch cung cp
phng thc get hay thuc tnh ch ghi bn cung cp cho thuc tnh phng thc set.

5.2 Phng thc khi dng ca lp


Phng thc khi dng l phng thc c bit ca lp, n c gi t ng khi khi
to mi lp .bn s dng phng thc khi dng khi to cc private fields cha ng
trong lp. Phng thc khi dng ca lp phi trng vi tn ca lp, 1 phng thc ca lp
c th c i s hoc khng c i s, v c th c nhiu phng thc khi dng cho lp
nhng cc i s trong cc phng thc phi khc nhau.
V d:

http://www.ebook.edu.vn

22

Xy dng lp: Construction.cs


using System;
public class Construction
{
int _giatri1;
int _giatri2;
public Construction()
{
_giatri1 = 0;
_giatri2 = 0;
}
public Construction(int _giatri1, int _giatri2)
{
this._giatri1 = _giatri1;
this._giatri2 = _giatri2;
}
public int Sum()
{
return _giatri1 + _giatri2;
}
}
Trong lp ny chng ta xy dng hai phng thc khi dng mt phng thc khng
c i s v mt phng thc c i s, v mt hm tnh tng ca 2 gi tr n c s dng
trang trang asp.net nh sau:
Trang UseConstruction.aspx
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="UseConstruction.aspx.cs" Inherits="UseConstruction" %>
<!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" >

http://www.ebook.edu.vn

23

<head runat="server">
<title>S dng phng thc khi dng ca lp</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblhello" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
Trang UseConstruction.aspx.cs
using System;
public partial class UseConstruction : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Construction construc = new Construction(5, 6);
lblhello.Text = "Gi tr l: " + construc.Sum().ToString();
}
}

5.3 Overloading phng thc


Khi mt phng thc c overloaded c ngha l hai phng thc c tn trng nhau
nhng cc i s ca n phi khc nhau. Khi trong lp ca bn c cc phng thc overload
th bn gi hm VS s xut hin nh sau bn c th d dng chn c phng thc mnh
cn gi.

http://www.ebook.edu.vn

24

V d:
Bn to mt lp
Lp UseOverload.cs
using System;
public class UseOverload
{
public static int Sum(int a, int b)
{
return a + b;
}
public static int Sum(int a, int b, int c)
{
return a + b + c;
}
public static int Sum(int a, int b, int c, int d)
{
return a + b + c + d;
}
}
Trong lp ny gm 3 hm tnh tng ln lt c a vo 2,3,4 i s
S dng lp ny trong trang ASP.NET
Trang Overloading.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Overloading.aspx.cs"
Inherits="Overloading" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.ebook.edu.vn

25

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Chng ho phng thc tnh tng</h1>
Tng 2 s:<asp:Label ID="lbl2so" runat="server"
Text="Label"></asp:Label><br /><br />
Tng 3 s:<asp:Label ID="lbl3so" runat="server"
Text="Label"></asp:Label><br /><br />
Tng 4 s:<asp:Label ID="lbl4so" runat="server"
Text="Label"></asp:Label><br /><br />
</div>
</form>
</body>
</html>
Trang Overloading.aspx.cs
using System;

public partial class Overloading : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
lbl2so.Text = UseOverload.Sum(5, 5).ToString();
lbl3so.Text = UseOverload.Sum(5, 5, 5).ToString();
lbl4so.Text = UseOverload.Sum(5, 5, 5, 5).ToString();
}

http://www.ebook.edu.vn

26

}
Trong lp ny bn gi ln lt cc phng thc tnh tng vi 2,3,4 i s truyn gi
tr vo cc Label tng ng cng tn.
Kt xut ca chng trnh:

5.4 Khai bo khng gian tn (Namespaces)


Nu bn tng lp trnh java chc hn bn quen vi khi nim packed m bn
ng gi cc lp m bn xy dng c c tnh chung(miu t hay x l vn g ). Trong
.Net cng vy t kho Namespaces cng c nhim v nh packed trong java.
.Net cung cp cho chng ta cc Namespaces nh:
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
V s dng cc Namespaces trong C# bn cn s dng t kho using. Mt
Namespaces c th cha cc Namespaces con, v trong Namespace con nht cha cc lp
thnh vin
V d
Bn to ra hai lp php cng v php tr thc hin cc php ton tng ng nh
sau:
Lp Phepcong.cs
using System;
namespace iTechPro.Tinhtoan
{
public class Phepcong

http://www.ebook.edu.vn

27

{
public static int Sum(int a, int b)
{
return a + b;
}
}
}
V lp Pheptru.cs
using System;

namespace iTechPro.Tinhtoan
{
public class Pheptru
{
public static int Minus(int a, int b)
{
return a - b;
}
}
}
Nh bn thy hai lp ny nm trong Namespaces iTechPro.Tinhtoan, th iTechPro l
Namespaces ln nht, cn Namespaces Tinhtoan l con ca iTechPro v trong tnh ton cha
cc lp Phepcong v Pheptru.
S dng Namespaces ny trong trang asp.net
Trang Namespaces.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Namespaces.aspx.cs"
Inherits="Namespaces" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.ebook.edu.vn

28

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Khai bo v s dng Namespaces</h1>
Lp php cng:
<asp:Label ID="lblcong" runat="server" Text="Label"></asp:Label><br
/><br />
Lp php tr:
<asp:Label ID="lbltru" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
Lp Namespaces.aspx.cs
using System;
using iTechPro.Tinhtoan;
public partial class Namespaces : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblcong.Text = Phepcong.Sum(5, 5).ToString();
lbltru.Text = Pheptru.Minus(5, 5).ToString();
}
}

http://www.ebook.edu.vn

29

Nh v d trn bn thy chng ta s dng namespace iTechPro.Tinhtoan ging vi cc


Namespace khc m Microsoft cung cp cho chng ta.
Kt xut ca chng trnh

5.5 Lp Partial
.Net cho php chng ta to ra mt lp trong nhiu file khc nhau mi File cung cp hay
x l mt cng vic g trn lp .
V d sau y chng ta s to mt lp Calculator vi 2 phng thc cng v tr nm
trn hai File khc nhau.
File Calminus.cs
using System;

namespace iTechPro.Tinhtoan
{
public partial class Calculator
{
public static int Minus(int a, int b)
{
return a - b;
}
}
}
File Calsum.cs
using System;
namespace iTechPro.Tinhtoan

http://www.ebook.edu.vn

30

{
public partial class Calculator
{
public static int Sum(int a, int b)
{
return a + b;
}
}
}
Nh cc bn thy hai file Calsum v Calminus cha ng cng mt tn lp Calculator
v trong mi File cha ng mt phng thc ring l thnh phn ca lp .
S dng lp ny hon ton ging vi vic s dng mt lp khc.
File UsePartial.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UsePartial.aspx.cs"
Inherits="UsePartial" %>
<!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>S dng lp Partial</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Lp Partial</h1>
Kt qu cng:
<asp:Label ID="lblcong" runat="server" Text="Label"></asp:Label><br
/><br />
Kt qu tr:
<asp:Label ID="lbltru" runat="server" Text="Label"></asp:Label>

http://www.ebook.edu.vn

31

</div>
</form>
</body>
</html>
V File UsePartial.aspx.cs
using System;
using iTechPro.Tinhtoan;
public partial class UsePartial : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblcong.Text = Calculator.Sum(5, 5).ToString();
lbltru.Text = Calculator.Minus(5, 5).ToString();
}
}

5.6 K tha v tru tng ho mt lp


Khi mt lp c k tha t mt lp th 2 th n c tha hng tt c cc thuc tnh
v phng thc khng private t lp th nht.
K tha c s dng thng sut trong .NetFrameWork, v d trong tt c cc trang
ASP.NET u c k tha t Lp System.Web.UI.Page v tt c cc lp trong .Net u c
dn xut t lp c s System.Object.
V d sau chng ta s a ra 2 lp TelevisionProduct v ComputerProduct c k tha
t lp BaseProduct.
V d:
using System;
public class BaseProduct
{
decimal _price;
public decimal Price

http://www.ebook.edu.vn

32

{
get { return _price; }
set { _price = value; }
}
}
public class ComputerProduct : BaseProduct
{
string _processor;
public string Processor
{
get { return _processor; }
set { _processor = value; }
}
}
public class TelevisionProduct : BaseProduct
{
bool _isDHTV;
public bool isDHTV
{
get { return _isDHTV; }
set { _isDHTV = value; }
}
}
Trong v d trn bn thy hai lp ComputerProduct v TelevisionProduct c k tha
t lp BaseProduct, trong lp BaseProduct c thuc tnh Price ln hai lp k tha s c k
tha thuc tnh ny.
Khi k tha t mt lp khc, bn c th overload cc thuc tnh v phng thc trong
lp ny. Overloading mt thuc tnh hay phng thc l mt tin ch khi bn mun thay i
cc ng x ca phng thc hay thuc tnh trong lp ny.

http://www.ebook.edu.vn

33

Overload mt phng thc hay thuc tnh t lp c s, th thuc tnh hay phng
thc ny phi c nh du vi t kho vitual hay abstract ca C# hay trong VB.NET l
Overridable hoc MustOverride.
V d, chng ta s a ra hai lp ProductBase v OnSaleProduct c k tha t lp
ProductBase nhng n s overload mt thuc tnh t lp ProductBase.
V d:
using System;
public class ProductBase
{
decimal _price;
public virtual decimal Price
{
get { return _price; }
set { _price = value; }
}
}
public class OnSaleProduct : ProductBase
{
public override decimal Price
{
get{ return base.Price / 2;}
set{base.Price = value;}
}
}

Trong v d trn Lp OnSaleProduct c k tha t lp ProductBase v Override thuc


tnh Price, lp ny mun ch ra gi bng mt na lp c s. ch vi VB.NET th t kho
base l MyBase.
Bn c th dng t kho abstract khi khai bo mt lp nh nh du lp ny yu
cu k tha. Bn khng th to i tng mt lp tru tng, s dng mt lp tru tng
bn phi dn xut mt lp mi t lp tru tng v to i tng trong lp dn xut.
V d:

http://www.ebook.edu.vn

34

public abstract class BaseEmployee


{
public abstract decimal Salary
{
get;
}

public string Company


{
get { return "iTechPro"; }
}
}
public class SaleEmployee:BaseEmployee
{
public override decimal Salary
{
get { return 66.666; }
}
}
Trong v d trn bn thy Lp SaleEmployee c k tha t lp BaseEmployee v
Overload thuc tnh Salary.

5.7 Khai bo Interface:


Mt giao din m mt danh sch cc thuc tnh hay phng thc m lp k tha phi
ci t. nu mt lp ci t mt giao din, th lp ny s cha tt c cc thuc tnh cng nh
phng thc ca giao din ny.
V d:
using System;
public interface IProduct
{

http://www.ebook.edu.vn

35

decimal Price
{
get;
}
void SaveProduct();
}
public class MusicProduct : IProduct
{
public decimal Price
{
get { return 20.99m; }
}
public void SaveProduct()
{
//Save Music Product
}
}
public class BookProduct : IProduct
{
public decimal Price
{
get { return 23.99m; }
}
public void SaveProduct()
{
//Save Book Product
}
}

http://www.ebook.edu.vn

36

Chng 2. S dng cc iu khin Standard


Trong chng ny cc bn s hc cc iu khin c bn ca ASP.NET Framework, y
l nhng iu khin m bn thng xuyn s dng trong ng dng web ca mnh.

I. iu khin hin th thng tin


1. Label
Mt s thuc tnh

Tn thuc tinh

nh hng

BackColor

Cho php thay i mu nn ca Label

BorderColor

Cho php thit lp ng vin ca Label

BorderStyle

Hin th ng vin ca Label theo cc dng Notset,


None, Dotted, Dashed, Solid, Double, Groove, Ridge,
Insert v OutSet.

cssClass

Cho php a vo mt lp css

Font

Thit lp thuc tnh ca Font

ForeColor

Thit t mu ch ni dung ca Label

Style

Cho php gn cc thuc tnh cho Label

ToolTip

Hin th ni dung khi di chut vo iu khin Label

ID

Tn ca iu khin

Tuy iu khin Label cha ng rt nhiu thuc tnh kt xut hin th nhng vi
kinh nghim ca mnh trong qu trnh thit k Web ti khuyn bn ln s dng thuc tnh
cssClass s dng mt lp css.
V d:
Gn thuc tnh trc tip
<asp:Label ID="Label1" BackColor="ActiveBorder"
BorderColor="ActiveCaption"
ForeColor="Blue" Font-Size="12pt" runat="server" Text="Trung tm cng
ngh cao iTechPro" />
S dng cssClass
<asp:Label ID="Label2" CssClass="label"

http://www.ebook.edu.vn

37

runat="server" Text="Trung tm cng ngh cao iTechPro" />


Kt qu

2, iu khin Literal
Ging vi iu khin Label bn c th dng Literal trnh by Text hoc ni dung
Html. Literal h tr mt thuc tnh m Label khng h tr l: thuc tnh Mode gm 3 gi
tr l: Pass through, Endcode, transform.
V d
<asp:Literal ID="lit1" runat="server" Text="<hr/>" Mode="PassThrough" />
<asp:Literal ID="lit2" runat="server" Text="<hr/>" Mode="Encode" />
<asp:Literal ID="lit3" runat="server" Text="<hr/>" Mode="Transform" />

Hin th:

II iu khin cho php ngi dng nhp liu


1, iu khin TextBox
Bng cc thuc tnh:
Thuc tnh

http://www.ebook.edu.vn

38

Textmode

Kiu hin th ca Textbox gm 3 gi tr: SingleLine- hin


th 1 trng nhp liu trn 1 dng, MultiLine- hin th 1
trng nhp liu nhiu dng, Password- hin th 1 trng
nhp m Text s c thay th bng cc k t c bit

AccessKey

Cho pheps bn ch nh phm di chuyn ti control


TextBox

AutoCompleteType

Cho php bn kt hp vi mt lp autoComplete vi iu


khin TextBox.

AutoPostBack

Cho php gi d liu ln server khi ni dung ca TextBox


thay i.

Columms

Cho php ch nh s ct c hin th trong TextBox

Enabled

Cho php hay khng cho php nhp liu trn TextBox

MaxLength

Cho php quy inh di ca d liu m mt ngi s


dng c th nhp trn TextBox

ReadOnly

Cho php ch a d liu ra TextBox ch khng nhp d


liu vo.

Rows

Cho php ch nh s dng hin th trong TextBox

TabIndex

Cho php ch nh th t Tab ca TextBox

Wrap

Cho php ch nh c word-wraps khng khi thit lp


thuc tnh TextMode l Multiline

iu khin TextBox h tr phng thc v s kin sau:


- Focus: cho php thit lp form khi to u tin ti TextBox
- TextChanged: Xy ra trn Server khi ni dung TextBox thay i. s kin ny xy
ra bn cn thit t thuc tnh AutoPostback l true.
2. S dng iu khin CheckBox
Cc thuc tnh
AccessKey

Enables you to specify a key that navigates to the TextBox


contro

AutoPostBack

http://www.ebook.edu.vn

nablesyou to post the form containing the CheckBox back to the

39

server automatically when the CheckBox is checked or


unchecked
Checked

Cho php bn gn hoc thit t trng thi chn hay khng


chn ca CheckBox

Enabled

Cho php hoc khng cho php

TabIndex

Enables you to specify the tab order of the check box.

Text

Enablesyou to provide a label for the check box.

TextAlign

Enables you to align the label for the check box. Possible values
are
Left and Right.

CheckBox h tr phng thc va s kin


- Focus: Enables you to set the initial form focus to the check box.
- CheckedChanged: Raisedontheserverwhenthecheckboxischeckedorunchecked.
3. iu khin RadioButton
iu khin RadioButton lun c s dng trong mt nhm v trong nhm ch mt
RadioButton c chn
Cc thuc tnh
Thuc tinh
AccessKey

Enablesyou to specify a key that navigates to the RadioButton


control

AutoPostBack

Enables you to post the form containing the RadioButton back to


the server automatically when the radio button is checked or
unchecked

Checked

Enables you to get or set whether the RadioButton control is


checked.

Enabled

Enables you to disable the RadioButton

GroupName

Enables you to group RadioButton controls

http://www.ebook.edu.vn

40

TabIndex

Enables you to specify the tab order of the RadioButton control.

Text

Enables you to label the RadioButton control.

TextAlign

Enablesyou to align the RadioButton label. Possible values are Left


and Right.

RadioButton h tr cc phng thc v s kin


- Focus: Enables youto set the initial form focus to the RadionButton control.
- CheckedChanged: Raised on the server when the unchecked.

III. Submitting Form Data


1. iu khin Button
Cc thuc tnh:

AccessKey

Cho php ch nh phm di chuyn ti iu khin Button.

CommandArgument

Cho php bn ch r i s c truyn ti lnh thc hin.

CommandName

Ch nh tn mt lnh c truyn ti trong Command Event.

Enabled

Cho php v hiu ho iu khin Button

OnClientClick

Cho php ch nh n mt hm pha client khi nhn vo Button.

PostBackUrl

Cho php tr d liu ln mt trang khc.

TabIndex

Ch nh th t tab ca Button.

Text

Ni dung text hin th trn iu khin Button.

UseSubmitBehavior

Cho php s dng javascript tr d liu ln mt form.

Cc phng thc v s kin


- Focus: Cho php thit lp khi khi to Form u tin iu khin TextBox.
- Click: Xy ra khi iu khin Button c nhn.

http://www.ebook.edu.vn

41

- Command: Xy ra khi iu khin Button c nhn. CommandName v


CommandArgument c truyn qua s kin.
2. iu khin LinkButton: cc phng thc v thuc tnh ging vi iu khin Button
nhng cch hin th ca n di dng Text ging nh th <a> ca HTML v c th p dng
thuc tnh css ca th <a> cho i tng LinkButton.
Hc vin t tm hiu thm
3. iu khin ImageButton
Cc thuc tnh v phng thc ca iu khin Button v thm vo mt s thuc tnh

Thuc tnh
ImageUrl

Ch n ng dn ca nh

ImageAlign

Cho php cn chnh nh trong ImageButton cc gi tr ca


n c th l: AbsBottom, AbsMiddle, Baseline, Bottom,
Left, Middle, NotSet, Right, TextTop, and Top.

4. S dng Client Scripts vi iu khin Button


C ba iu khin Button trn u c thuc tnh OnClientClick, bn c th s dng thuc
tnh ny thc hin m pha Client m bn cn khi iu khin Button c nhn.

V d.
<%@ Page Language="C#"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat=server>
protected void btnDelete_Click(object sender, EventArgs e)
{
lblResult.Text = All pages deleted!;

http://www.ebook.edu.vn

42

}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" OnClick="Button1_Click" OnClientClick="return
confirm('Bn c chc chn?');" runat="server" Text="Button" /><br />
<asp:Label ID="Label1" runat="server" Text="iTechPro" />
</div>
</form>
</body>
</html>
Gii thch v d: trn on m trn trong form gm 2 iu khin Button v Label. Trong
iu khin Button ta gn vo 2 s kin: OnClientClick pha Clien, v OnClick pha Server
OnClientClick s thc hin khi ngi dng pha Client nhn vo Button, trong m Client
trnh by mt hm confirm trong javascript vi mc nh hi ngi dng xc nhn vic thc
hin no Bn c chc chn? nu ngi dng chn OK th S kin th 2 OnClick s c
thc hin cn nu chn Cancel th s kin pha Server khng c thc hin.
5. Thc hin chuyn trang
Mc nh khi bn nhn vo Button n s thc hin cng vic ngay trn trang v trang
ca chng ta s Load li mt ln nhng bn c th s dng thuc tnh PostBackUrl chuyn
sang mt trang khc.
V d bn c mt trang ButtonSearch.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.ebook.edu.vn

43

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblSearch" runat="server" Text="Search:" />
<asp:TextBox ID="txtSearch" runat="server" />
<asp:Button ID="btnSearch" Text="GO!" runat="server"
PostBackUrl="ButtonSearchResult.aspx" />
</div>
</form>
</body>
</html>

Trong thuc tnh PostBackUrl ca iu khin btnSearch s chuyn sang trang


ButtonSearchResult
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
TextBox txtSearch =
(TextBox)PreviousPage.FindControl("txtSearch");

http://www.ebook.edu.vn

44

lblSearch.Text = txtSearch.Text;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblSearch" runat="server" />
</div>
</form>
</body>
</html>

Trong on m trn ta phng thc FindControl ca PreviousPage n s tm n


iu khin trn trang ButtonSearch.aspx m ta cung cp ID ca n.

6. Ch nh mt Button mc nh.
V d trn trang ca bn c nhiu iu khin Button, khi nhp d liu bn li quen nhp
xong d liu v nhn nt Enter trn bn phm, bn c th mc nh nt cp nht d liu
lm mc nh khi nhn phm Emter. Nh v d di y.

<%@ Page Language="C#" %>

<script runat="server">
void btnXacnhan_Click(object sender,EventArgs e)

http://www.ebook.edu.vn

45

{
lblThongbao.Text = txtHoten.Text;
}
</script>
<!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>iTechPro</title>
</head>
<body>
<form id="form1" runat="server" defaultbutton="btnXacnhan">
<div>
<asp:Label ID="lblHoten" runat="server" Text="Nhp h tn" />
<asp:TextBox ID="txtHoten" runat="server" />
<hr />
<asp:Button ID="btnXacnhan" OnClick="btnXacnhan_Click" runat="server"
Text="Xc nhn" />
<asp:Button ID="btnBoqua" runat="server" Text="B qua" />
<hr />
<asp:Label ID="lblThongbao" runat="server" Text="" />
</div>
</form>
</body>
</html>

7. iu khin Command Event

http://www.ebook.edu.vn

46

S khc nhau gia Command Event v Command Click l trong Command Event bn c
th cung cp Command Name v Command argument
Trong cc v d trc ti ly v d v s kin Command Click nn by gi ti s ly
mt v d v Command Event bn so snh.
V d trn trang bn c 3 iu khin Button nh v d di y:
<%@ Page Language="C#"%>

<script runat="server">
void hcubiuChon(object sender, CommandEventArgs e)
{
if (e.CommandName == "language")
{
switch (e.CommandArgument.ToString())
{
case "C#":
lblComandEvent.Text = "CShap";
break;
case "VBNET":
lblComandEvent.Text = "VB.NET";
break;
case "JAVA":
lblComandEvent.Text = "Java";
break;
}
}
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.ebook.edu.vn

47

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Bn chn ngn ng:
<asp:Label ID="lblComandEvent" runat="server" Text=""></asp:Label>
<br />
<asp:Button ID="btna" OnCommand="hcubiuChon" CommandName="language"
CommandArgument="C#" runat="server" Text="C#" />
<asp:Button ID="btnb" OnCommand="hcubiuChon" CommandName="language"
CommandArgument="VBNET" runat="server" Text="VB.NET" />
<asp:Button ID="btnc" OnCommand="hcubiuChon" CommandName="language"
CommandArgument="JAVA" runat="server" Text="Java" />
</div>
</form>
</body>
</html>

C ba iu khin Button trn u cha Tn lnh v i s lnh v tu thuc vo i s


lnh khc nhau ta c th thc hin mt cng vic tng ng.

IV. iu khin hin th nh


ASPNET bao gm 2 iu khin hin th nh. iu khin Image v ImageMap.
1. iu khin Image.
iu khin ny dng hin th nh ging vi th <Img> trong HTML
Cc thuc tnh quan tm
Thuc tnh

http://www.ebook.edu.vn

48

AlternateText

Ni dung thay th khi li ng dn ca nh

DescriptionUrl

Cho php bn cung cp mt ng dn n trang miu t chi tit


ni dung ca nh

ImageAlign

Cho php cn chnh nh ln quan ti cc thnh phn HTML khc


trong trang v n c th l cc gi tr sau:AbsBottom, AbsMiddle,
Baseline, Bottom, Left, Middle, NotSet, Right, TextTop, and Top.

ImageUrl

ng dn ca nh trn iu khin

V d
<%@ Page Language="C#" %>

<script runat="server">
void Page_Load(object sender, EventArgs e)
{
Random rnd = new Random();
switch (rnd.Next(3))
{
case 0:
Image1.ImageUrl = "Images/images1.jpg";
Image1.AlternateText = "Picture 1";
break;
case 1:
Image1.ImageUrl = "Images/images2.jpg";
Image1.AlternateText = "Picture 2";
break;
case 2:
Image1.ImageUrl = "Images/images3.jpg";
Image1.AlternateText = "Picture 3";
break;

http://www.ebook.edu.vn

49

}
}
</script>
<!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>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" />
</div>
</form>
</body>
</html>

2. iu khin ImageMap
Cho php bn to bn nh trn 1 nh hin th trn trang web m ngi dng pha
Client c th chn vo mt vng ca nh thc hin mt cng vic no .
V d
<%@ Page Language="C#"%>

<script runat="server">
void ImageMap1_Click(object sender, ImageMapEventArgs e)
{

http://www.ebook.edu.vn

50

switch (e.PostBackValue)
{
case "top":
lblResult.Text = "Day la phan dau";
break;
case "middle":
lblResult.Text = "day la phan giua";
break;
case "under":
lblResult.Text = "day la phan cuoi";
break;
}
}
</script>
<!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>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ImageMap ID="ImageMap1" HotSpotMode="PostBack"
OnClick="ImageMap1_Click" ImageUrl="~/Images/jiwoo18034.jpg" runat="server">
<asp:RectangleHotSpot
PostBackValue="top"
Left="0"

http://www.ebook.edu.vn

51

Top="0"
Right="300"
Bottom="150"
AlternateText="Top" />
<asp:RectangleHotSpot
PostBackValue="middle"
Left="0"
Top="150"
Right="300"
Bottom="300"
AlternateText="middle" />
<asp:RectangleHotSpot
PostBackValue="under"
Left="0"
Top="300"
Right="300"
Bottom="450"
AlternateText="Under" />
</asp:ImageMap>
<asp:Label ID="lblResult" runat="server" />
</div>
</form>
</body>
</html>
Cc thuc tnh ca ImageMap ging vi Image v thm vo hai thuc tnh l:
- HotSpots: cho php bn in tp hp thng tin ca HotSpots c cha ng trong
iu khin ImageMap.

http://www.ebook.edu.vn

52

- HotSpotMode:Cho php bn ch nh Enables you to specifythe behavior of the image


map when you click a region. Possible values are Inactive, Navigate, NotSet, and PostBack.

V. iu khin Panel
Khi bn cn a cc iu khin trang vo mt nhm gii thch ngha cho nhm
hoc c th l n hoc hin nhm iu khi nhn 1 s kin no trn trang ca bn, bn
c th dng iu khin panel.
Mt s thuc tnh ca iu khin panel m bn cn lu l:
- DefaultButton: Cho php bn nh ngha mt button mc nh trong panel m button
mc nh ny s c thc hin khi bn nhn phm Enter
- Direction: Cho php bn gn hoc thit t hng hin th ni dung c a ra trong
panel, c th l cc gi tr:NotSet, LeftToRight, and RightToLeft.
- GroupingText: Cho php bn trnh by Panel nh 1 Fieldset vi mt ch gii ring bit
- HorizontalAlign: Cho php bn ch ra hng ngang th hin ni dung ca panel v n
c th l cc gi tr: Center, Justify, Left, NotSet, and Right.
- ScrollBars: Cho php bn hin th scrollbars khi bn c nh chiu cao hoc chiu rng
ca panel v ni dung trong panel vt qu rng hoc cao , n c th l cc gi tr:
Auto, Both, Horizontal, None, and Vertical.
V d
<%@ Page Language="C#" %>

<script runat="server">
void Page_Load(object sender, EventArgs e)
{
for (int i = 1; i < 100; i++)
{
buletnghenghiep.Items.Add("Ngh "+i.ToString());
}
}

http://www.ebook.edu.vn

53

void hcubiuSothich(object sender, EventArgs e)


{
if (chkhtsothich.Checked == true)
panelsothich.Visible = true;
else
panelsothich.Visible = false;
}

void hcubiuNghenghiep(object sender, EventArgs e)


{
if (chkhtnghenghiep.Checked == true)
panelnghenghiep.Visible = true;
else
panelnghenghiep.Visible = false;
}
</script>
<!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>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Panel ID="panelpage" runat="server" GroupingText="iTechPro">
<table>

http://www.ebook.edu.vn

54

<tr>
<td>
<asp:Panel ScrollBars="auto" ID="panelsothich" Width="200px"
Height="200px" runat="server" GroupingText="S thch">
<asp:CheckBox ID="CheckBox1" Text="Bng " runat="server" /><br
/>
<asp:CheckBox ID="CheckBox2" Text="Xem phim" runat="server" /><br
/>
<asp:CheckBox ID="CheckBox3" Text="Kinh doanh" runat="server" />
</asp:Panel>
</td>
<td>
<asp:Panel ID="panelnghenghiep" Width="200px" Height="200px"
ScrollBars="Vertical" runat="server" GroupingText="Ngh nghip">
<asp:BulletedList ID="buletnghenghiep" runat="server">
</asp:BulletedList>
</asp:Panel>
</td>
</tr>
<tr>
<td>
<asp:CheckBox Checked="true" ID="chkhtsothich"
AutoPostBack="true" OnCheckedChanged="hcubiuSothich" Text="Hin th s thch"
runat="server" /><br />
<asp:CheckBox Checked="true" ID="chkhtnghenghiep"
AutoPostBack="true" OnCheckedChanged="hcubiuNghenghiep" Text="Hin th ngh
nghip" runat="server" /><br />
</td>
</tr>
</table>
</asp:Panel>
</div>

http://www.ebook.edu.vn

55

</form>
</body>
</html>

VI. iu khin HyperLink


iu khin HyperLink cho php to 1 link ti trang web khc, khng ging vi LinkButton,
HyperLink khng trnh d liu ln server.

Chng 2. S dng cc iu khin Standard


Trong chng ny cc bn s hc cc iu khin c bn ca ASP.NET Framework, y
l nhng iu khin m bn thng xuyn s dng trong ng dng web ca mnh.

I. iu khin hin th thng tin


1. Label
Mt s thuc tnh

Tn thuc tinh

nh hng

BackColor

Cho php thay i mu nn ca Label

BorderColor

Cho php thit lp ng vin ca Label

BorderStyle

Hin th ng vin ca Label theo cc dng Notset,


None, Dotted, Dashed, Solid, Double, Groove, Ridge,
Insert v OutSet.

cssClass

Cho php a vo mt lp css

Font

Thit lp thuc tnh ca Font

ForeColor

Thit t mu ch ni dung ca Label

Style

Cho php gn cc thuc tnh cho Label

ToolTip

Hin th ni dung khi di chut vo iu khin Label

ID

Tn ca iu khin

http://www.ebook.edu.vn

56

Tuy iu khin Label cha ng rt nhiu thuc tnh kt xut hin th nhng vi
kinh nghim ca mnh trong qu trnh thit k Web ti khuyn bn ln s dng thuc tnh
cssClass s dng mt lp css.
V d:
Gn thuc tnh trc tip
<asp:Label ID="Label1" BackColor="ActiveBorder"
BorderColor="ActiveCaption"
ForeColor="Blue" Font-Size="12pt" runat="server" Text="Trung tm cng
ngh cao iTechPro" />
S dng cssClass
<asp:Label ID="Label2" CssClass="label"
runat="server" Text="Trung tm cng ngh cao iTechPro" />
Kt qu

2, iu khin Literal
Ging vi iu khin Label bn c th dng Literal trnh by Text hoc ni dung
Html. Literal h tr mt thuc tnh m Label khng h tr l: thuc tnh Mode gm 3 gi
tr l: Pass through, Endcode, transform.
V d
<asp:Literal ID="lit1" runat="server" Text="<hr/>" Mode="PassThrough" />
<asp:Literal ID="lit2" runat="server" Text="<hr/>" Mode="Encode" />
<asp:Literal ID="lit3" runat="server" Text="<hr/>" Mode="Transform" />

http://www.ebook.edu.vn

57

Hin th:

II iu khin cho php ngi dng nhp liu


1, iu khin TextBox
Bng cc thuc tnh:
Thuc tnh
Textmode

Kiu hin th ca Textbox gm 3 gi tr: SingleLine- hin


th 1 trng nhp liu trn 1 dng, MultiLine- hin th 1
trng nhp liu nhiu dng, Password- hin th 1 trng
nhp m Text s c thay th bng cc k t c bit

AccessKey

Cho pheps bn ch nh phm di chuyn ti control


TextBox

AutoCompleteType

Cho php bn kt hp vi mt lp autoComplete vi iu


khin TextBox.

AutoPostBack

Cho php gi d liu ln server khi ni dung ca TextBox


thay i.

Columms

Cho php ch nh s ct c hin th trong TextBox

Enabled

Cho php hay khng cho php nhp liu trn TextBox

MaxLength

Cho php quy inh di ca d liu m mt ngi s


dng c th nhp trn TextBox

ReadOnly

Cho php ch a d liu ra TextBox ch khng nhp d


liu vo.

Rows

Cho php ch nh s dng hin th trong TextBox

TabIndex

Cho php ch nh th t Tab ca TextBox

Wrap

Cho php ch nh c word-wraps khng khi thit lp


thuc tnh TextMode l Multiline

iu khin TextBox h tr phng thc v s kin sau:

http://www.ebook.edu.vn

58

- Focus: cho php thit lp form khi to u tin ti TextBox


- TextChanged: Xy ra trn Server khi ni dung TextBox thay i. s kin ny xy
ra bn cn thit t thuc tnh AutoPostback l true.
2. S dng iu khin CheckBox
Cc thuc tnh
AccessKey

Enables you to specify a key that navigates to the TextBox


contro

AutoPostBack

nablesyou to post the form containing the CheckBox back to the


server automatically when the CheckBox is checked or
unchecked

Checked

Cho php bn gn hoc thit t trng thi chn hay khng


chn ca CheckBox

Enabled

Cho php hoc khng cho php

TabIndex

Enables you to specify the tab order of the check box.

Text

Enablesyou to provide a label for the check box.

TextAlign

Enables you to align the label for the check box. Possible values
are
Left and Right.

CheckBox h tr phng thc va s kin


- Focus: Enables you to set the initial form focus to the check box.
- CheckedChanged: Raisedontheserverwhenthecheckboxischeckedorunchecked.
3. iu khin RadioButton
iu khin RadioButton lun c s dng trong mt nhm v trong nhm ch mt
RadioButton c chn
Cc thuc tnh
Thuc tinh

http://www.ebook.edu.vn

59

AccessKey

Enablesyou to specify a key that navigates to the RadioButton


control

AutoPostBack

Enables you to post the form containing the RadioButton back to


the server automatically when the radio button is checked or
unchecked

Checked

Enables you to get or set whether the RadioButton control is


checked.

Enabled

Enables you to disable the RadioButton

GroupName

Enables you to group RadioButton controls

TabIndex

Enables you to specify the tab order of the RadioButton control.

Text

Enables you to label the RadioButton control.

TextAlign

Enablesyou to align the RadioButton label. Possible values are Left


and Right.

RadioButton h tr cc phng thc v s kin


- Focus: Enables youto set the initial form focus to the RadionButton control.
- CheckedChanged: Raised on the server when the unchecked.

III. Submitting Form Data


1. iu khin Button
Cc thuc tnh:

AccessKey

Cho php ch nh phm di chuyn ti iu khin Button.

CommandArgument

Cho php bn ch r i s c truyn ti lnh thc hin.

CommandName

Ch nh tn mt lnh c truyn ti trong Command Event.

Enabled

Cho php v hiu ho iu khin Button

OnClientClick

Cho php ch nh n mt hm pha client khi nhn vo Button.

PostBackUrl

Cho php tr d liu ln mt trang khc.

http://www.ebook.edu.vn

60

TabIndex

Ch nh th t tab ca Button.

Text

Ni dung text hin th trn iu khin Button.

UseSubmitBehavior

Cho php s dng javascript tr d liu ln mt form.

Cc phng thc v s kin


- Focus: Cho php thit lp khi khi to Form u tin iu khin TextBox.
- Click: Xy ra khi iu khin Button c nhn.
- Command: Xy ra khi iu khin Button c nhn. CommandName v
CommandArgument c truyn qua s kin.
2. iu khin LinkButton: cc phng thc v thuc tnh ging vi iu khin Button
nhng cch hin th ca n di dng Text ging nh th <a> ca HTML v c th p dng
thuc tnh css ca th <a> cho i tng LinkButton.
Hc vin t tm hiu thm
3. iu khin ImageButton
Cc thuc tnh v phng thc ca iu khin Button v thm vo mt s thuc tnh

Thuc tnh
ImageUrl

Ch n ng dn ca nh

ImageAlign

Cho php cn chnh nh trong ImageButton cc gi tr ca


n c th l: AbsBottom, AbsMiddle, Baseline, Bottom,
Left, Middle, NotSet, Right, TextTop, and Top.

4. S dng Client Scripts vi iu khin Button


C ba iu khin Button trn u c thuc tnh OnClientClick, bn c th s dng thuc
tnh ny thc hin m pha Client m bn cn khi iu khin Button c nhn.

V d.
<%@ Page Language="C#"%>

http://www.ebook.edu.vn

61

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat=server>
protected void btnDelete_Click(object sender, EventArgs e)
{
lblResult.Text = All pages deleted!;
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" OnClick="Button1_Click" OnClientClick="return
confirm('Bn c chc chn?');" runat="server" Text="Button" /><br />
<asp:Label ID="Label1" runat="server" Text="iTechPro" />
</div>
</form>
</body>
</html>
Gii thch v d: trn on m trn trong form gm 2 iu khin Button v Label. Trong
iu khin Button ta gn vo 2 s kin: OnClientClick pha Clien, v OnClick pha Server
OnClientClick s thc hin khi ngi dng pha Client nhn vo Button, trong m Client
trnh by mt hm confirm trong javascript vi mc nh hi ngi dng xc nhn vic thc
hin no Bn c chc chn? nu ngi dng chn OK th S kin th 2 OnClick s c
thc hin cn nu chn Cancel th s kin pha Server khng c thc hin.

http://www.ebook.edu.vn

62

5. Thc hin chuyn trang


Mc nh khi bn nhn vo Button n s thc hin cng vic ngay trn trang v trang
ca chng ta s Load li mt ln nhng bn c th s dng thuc tnh PostBackUrl chuyn
sang mt trang khc.
V d bn c mt trang ButtonSearch.aspx
<%@ Page Language="C#" %>

<!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>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblSearch" runat="server" Text="Search:" />
<asp:TextBox ID="txtSearch" runat="server" />
<asp:Button ID="btnSearch" Text="GO!" runat="server"
PostBackUrl="ButtonSearchResult.aspx" />
</div>
</form>
</body>
</html>

Trong thuc tnh PostBackUrl ca iu khin btnSearch s chuyn sang trang


ButtonSearchResult
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.ebook.edu.vn

63

<script runat="server">
void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
TextBox txtSearch =
(TextBox)PreviousPage.FindControl("txtSearch");
lblSearch.Text = txtSearch.Text;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblSearch" runat="server" />
</div>
</form>
</body>
</html>

Trong on m trn ta phng thc FindControl ca PreviousPage n s tm n


iu khin trn trang ButtonSearch.aspx m ta cung cp ID ca n.

6. Ch nh mt Button mc nh.

http://www.ebook.edu.vn

64

V d trn trang ca bn c nhiu iu khin Button, khi nhp d liu bn li quen nhp
xong d liu v nhn nt Enter trn bn phm, bn c th mc nh nt cp nht d liu
lm mc nh khi nhn phm Emter. Nh v d di y.

<%@ Page Language="C#" %>

<script runat="server">
void btnXacnhan_Click(object sender,EventArgs e)
{
lblThongbao.Text = txtHoten.Text;
}
</script>
<!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>iTechPro</title>
</head>
<body>
<form id="form1" runat="server" defaultbutton="btnXacnhan">
<div>
<asp:Label ID="lblHoten" runat="server" Text="Nhp h tn" />
<asp:TextBox ID="txtHoten" runat="server" />
<hr />
<asp:Button ID="btnXacnhan" OnClick="btnXacnhan_Click" runat="server"
Text="Xc nhn" />
<asp:Button ID="btnBoqua" runat="server" Text="B qua" />
<hr />
<asp:Label ID="lblThongbao" runat="server" Text="" />

http://www.ebook.edu.vn

65

</div>
</form>
</body>
</html>

7. iu khin Command Event


S khc nhau gia Command Event v Command Click l trong Command Event bn c
th cung cp Command Name v Command argument
Trong cc v d trc ti ly v d v s kin Command Click nn by gi ti s ly
mt v d v Command Event bn so snh.
V d trn trang bn c 3 iu khin Button nh v d di y:
<%@ Page Language="C#"%>

<script runat="server">
void hcubiuChon(object sender, CommandEventArgs e)
{
if (e.CommandName == "language")
{
switch (e.CommandArgument.ToString())
{
case "C#":
lblComandEvent.Text = "CShap";
break;
case "VBNET":
lblComandEvent.Text = "VB.NET";
break;
case "JAVA":
lblComandEvent.Text = "Java";

http://www.ebook.edu.vn

66

break;
}
}
}
</script>
<!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>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Bn chn ngn ng:
<asp:Label ID="lblComandEvent" runat="server" Text=""></asp:Label>
<br />
<asp:Button ID="btna" OnCommand="hcubiuChon" CommandName="language"
CommandArgument="C#" runat="server" Text="C#" />
<asp:Button ID="btnb" OnCommand="hcubiuChon" CommandName="language"
CommandArgument="VBNET" runat="server" Text="VB.NET" />
<asp:Button ID="btnc" OnCommand="hcubiuChon" CommandName="language"
CommandArgument="JAVA" runat="server" Text="Java" />
</div>
</form>
</body>
</html>

C ba iu khin Button trn u cha Tn lnh v i s lnh v tu thuc vo i s


lnh khc nhau ta c th thc hin mt cng vic tng ng.

http://www.ebook.edu.vn

67

IV. iu khin hin th nh


ASPNET bao gm 2 iu khin hin th nh. iu khin Image v ImageMap.
1. iu khin Image.
iu khin ny dng hin th nh ging vi th <Img> trong HTML
Cc thuc tnh quan tm
Thuc tnh
AlternateText

Ni dung thay th khi li ng dn ca nh

DescriptionUrl

Cho php bn cung cp mt ng dn n trang miu t chi tit


ni dung ca nh

ImageAlign

Cho php cn chnh nh ln quan ti cc thnh phn HTML khc


trong trang v n c th l cc gi tr sau:AbsBottom, AbsMiddle,
Baseline, Bottom, Left, Middle, NotSet, Right, TextTop, and Top.

ImageUrl

ng dn ca nh trn iu khin

V d
<%@ Page Language="C#" %>

<script runat="server">
void Page_Load(object sender, EventArgs e)
{
Random rnd = new Random();
switch (rnd.Next(3))
{
case 0:
Image1.ImageUrl = "Images/images1.jpg";
Image1.AlternateText = "Picture 1";
break;
case 1:
Image1.ImageUrl = "Images/images2.jpg";

http://www.ebook.edu.vn

68

Image1.AlternateText = "Picture 2";


break;
case 2:
Image1.ImageUrl = "Images/images3.jpg";
Image1.AlternateText = "Picture 3";
break;
}
}
</script>
<!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>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" />
</div>
</form>
</body>
</html>

2. iu khin ImageMap
Cho php bn to bn nh trn 1 nh hin th trn trang web m ngi dng pha
Client c th chn vo mt vng ca nh thc hin mt cng vic no .
V d

http://www.ebook.edu.vn

69

<%@ Page Language="C#"%>

<script runat="server">
void ImageMap1_Click(object sender, ImageMapEventArgs e)
{
switch (e.PostBackValue)
{
case "top":
lblResult.Text = "Day la phan dau";
break;
case "middle":
lblResult.Text = "day la phan giua";
break;
case "under":
lblResult.Text = "day la phan cuoi";
break;
}
}
</script>
<!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>iTechPro</title>
</head>
<body>
<form id="form1" runat="server">

http://www.ebook.edu.vn

70

<div>
<asp:ImageMap ID="ImageMap1" HotSpotMode="PostBack"
OnClick="ImageMap1_Click" ImageUrl="~/Images/jiwoo18034.jpg" runat="server">
<asp:RectangleHotSpot
PostBackValue="top"
Left="0"
Top="0"
Right="300"
Bottom="150"
AlternateText="Top" />
<asp:RectangleHotSpot
PostBackValue="middle"
Left="0"
Top="150"
Right="300"
Bottom="300"
AlternateText="middle" />
<asp:RectangleHotSpot
PostBackValue="under"
Left="0"
Top="300"
Right="300"
Bottom="450"
AlternateText="Under" />
</asp:ImageMap>
<asp:Label ID="lblResult" runat="server" />
</div>
</form>

http://www.ebook.edu.vn

71

</body>
</html>
Cc thuc tnh ca ImageMap ging vi Image v thm vo hai thuc tnh l:
- HotSpots: cho php bn in tp hp thng tin ca HotSpots c cha ng trong
iu khin ImageMap.
- HotSpotMode:Cho php bn ch nh Enables you to specifythe behavior of the image
map when you click a region. Possible values are Inactive, Navigate, NotSet, and PostBack.

V. iu khin Panel
Khi bn cn a cc iu khin trang vo mt nhm gii thch ngha cho nhm
hoc c th l n hoc hin nhm iu khi nhn 1 s kin no trn trang ca bn, bn
c th dng iu khin panel.
Mt s thuc tnh ca iu khin panel m bn cn lu l:
- DefaultButton: Cho php bn nh ngha mt button mc nh trong panel m button
mc nh ny s c thc hin khi bn nhn phm Enter
- Direction: Cho php bn gn hoc thit t hng hin th ni dung c a ra trong
panel, c th l cc gi tr:NotSet, LeftToRight, and RightToLeft.
- GroupingText: Cho php bn trnh by Panel nh 1 Fieldset vi mt ch gii ring bit
- HorizontalAlign: Cho php bn ch ra hng ngang th hin ni dung ca panel v n
c th l cc gi tr: Center, Justify, Left, NotSet, and Right.
- ScrollBars: Cho php bn hin th scrollbars khi bn c nh chiu cao hoc chiu rng
ca panel v ni dung trong panel vt qu rng hoc cao , n c th l cc gi tr:
Auto, Both, Horizontal, None, and Vertical.
V d
<%@ Page Language="C#" %>

<script runat="server">
void Page_Load(object sender, EventArgs e)
{
for (int i = 1; i < 100; i++)

http://www.ebook.edu.vn

72

{
buletnghenghiep.Items.Add("Ngh "+i.ToString());
}
}

void hcubiuSothich(object sender, EventArgs e)


{
if (chkhtsothich.Checked == true)
panelsothich.Visible = true;
else
panelsothich.Visible = false;
}

void hcubiuNghenghiep(object sender, EventArgs e)


{
if (chkhtnghenghiep.Checked == true)
panelnghenghiep.Visible = true;
else
panelnghenghiep.Visible = false;
}
</script>
<!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>iTechPro</title>
</head>

http://www.ebook.edu.vn

73

<body>
<form id="form1" runat="server">
<div>
<asp:Panel ID="panelpage" runat="server" GroupingText="iTechPro">
<table>
<tr>
<td>
<asp:Panel ScrollBars="auto" ID="panelsothich" Width="200px"
Height="200px" runat="server" GroupingText="S thch">
<asp:CheckBox ID="CheckBox1" Text="Bng " runat="server" /><br
/>
<asp:CheckBox ID="CheckBox2" Text="Xem phim" runat="server" /><br
/>
<asp:CheckBox ID="CheckBox3" Text="Kinh doanh" runat="server" />
</asp:Panel>
</td>
<td>
<asp:Panel ID="panelnghenghiep" Width="200px" Height="200px"
ScrollBars="Vertical" runat="server" GroupingText="Ngh nghip">
<asp:BulletedList ID="buletnghenghiep" runat="server">
</asp:BulletedList>
</asp:Panel>
</td>
</tr>
<tr>
<td>
<asp:CheckBox Checked="true" ID="chkhtsothich"
AutoPostBack="true" OnCheckedChanged="hcubiuSothich" Text="Hin th s thch"
runat="server" /><br />
<asp:CheckBox Checked="true" ID="chkhtnghenghiep"
AutoPostBack="true" OnCheckedChanged="hcubiuNghenghiep" Text="Hin th ngh
nghip" runat="server" /><br />

http://www.ebook.edu.vn

74

</td>
</tr>
</table>
</asp:Panel>
</div>
</form>
</body>
</html>

VI. iu khin HyperLink


iu khin HyperLink cho php to 1 link ti trang web khc, khng ging vi LinkButton,
HyperLink khng trnh d liu ln server.

Chng 3 S dng cc iu khin Validation


Chng trc chng ta hc v nhng iu khin chun ca NetFrameWork3.5,
chng ta c th dng nhng iu khin thao tc vi Webserver pha Server-Side, c
th cp nht d liu. Nhng c mt tnh hung t ra l cc iu khin c m bo cho
chng ta cp nht d liu ng v khng xy ra li?. V d trn Form ca ta c trng nhp
s in thoi nhng ngi s dng li nhp vo l 1 dng text nh vy s gy ra li nhp
liu. Vi phin bn trc ca ASP.Net l asp th khc phc li chng ta phi thc hin
vit m JavaScript bt li vic , cn vi ASPNET n cung cp cho ta nhng iu
khin kim tra tnh hp l ca cc iu khin nhp liu trn Form. Trong chng ny cc bn
s hc v nhng iu khin v tip theo l s hc cch m rng nhng iu khin
theo mun ca chng ta v d bn s to mt AjaxValidator kim tra nhp liu pha
Client.
6 iu khin Validation trong netframework3.5:

RequiredFieldValidator: Yu cu ngi s dng nhp gi tr vo trng ch nh trn


Form

RangeValidator: Kim tra gi tr nhp vo c nm trong mt khong nh nht v


ln nht nh trc hay khng.

CompareValidator: So snh gi tr nhp c bng mt gi tr ca trng khc trn


Form hay khng.

RegularExpressionValidator: So snh gi tr nhp vi 1 biu thc quy tc no y


c th hm th, in thoi

http://www.ebook.edu.vn

75

CustomValidator: Bn c th tu chnh i tng Validator theo ca mnh

ValidationSummary: cho php hin th tng hp tt c cc li trn 1 trang.

I. RequiredFieldValidator

1. ngha: vi iu khin ny bn c th yu cu ngi dng phi nhp gi tr vo 1


trng ch nh trn Form.

2. Cch s dng:
a iu khin RequiredFieldValidator t ToolBox(trong phn Validation) vo trong Form
v thm vo cho n 2 thuc tnh
ControlToValidate: ch n iu khin s c kim tra
Text(hoc ErrorMessage): Thng bo li khi kim tra

3. V d
Code 1: Trang RequiredValidator.aspx
<%@ Page Language="C#" %>
<script runat="server">
void btnAccept_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
this.lblResult.Text = txtHoten.Text;
this.txtHoten.Text = "";
}
}
</script>
<!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>Validator</title>

http://www.ebook.edu.vn

76

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblHoten" runat="server" Text="Nhp vo h tn" />
<asp:TextBox ID="txtHoten" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldtxtHoten"
ControlToValidate="txtHoten" runat="server" Text="* Bn phi nhp h
tn"></asp:RequiredFieldValidator><br />
<asp:Button ID="btnAccept" OnClick="btnAccept_Click" runat="server"
Text="Accept" /><br />
<asp:Label ID="lblResult" runat="server" Text="" />
</div>
</form>
</body>
</html>

II. iu khin CompareValidator

1. ngha
Bn c th s dng CompareValidator Kim tra gi tr nhp vo c nm trong mt
khong nh nht v ln nht nh trc hay khng.

2. Cch s dng
Bn a iu khin CompareValidator t hp ToolBox vo Form v thit lp cho n mt
s thuc tnh sau:

ControlToValidate: ch n iu khin cn kim tra

Text(ErrorMessage): Ni dung thng bo li

MinimumValue: Gi tr nh nht thit lp cho i tng

MaximumValue: Gi tr ln nht thit lp cho i tng

Type: Kiu so snh, C th l cc gi tr Interger,String, Double, Date v Currency.

3. V d
http://www.ebook.edu.vn

77

Code 2: Trang CompareValidator.aspx


<%@ Page Language="C#" %>

<script runat="server">
void btnAccept_Click(object sender,EventArgs e)
{
if (Page.IsValid)
{
this.lblThongbao.Text = txtDiem.Text;
}
}
</script>
<!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>RangeValidator</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>Vo im</td>
<td><asp:TextBox ID="txtDiem" runat="server"></asp:TextBox></td>
<td>

http://www.ebook.edu.vn

78

<asp:RequiredFieldValidator ID="RequiredFieldDiem"
ControlToValidate="txtDiem" runat="server" ErrorMessage="Bn phi nhp
im"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="RangeDiem" runat="server"
ControlToValidate="txtDiem" Type="Integer" MinimumValue="0" MaximumValue="10"
ErrorMessage="im phi nm trong khong t 0 n 10"></asp:RangeValidator>
</td>
</tr>
<tr>
<td colspan="3">
<asp:Button ID="btnAccept" OnClick="btnAccept_Click" runat="server"
Text="Thc hin" />
</td>
</tr>
<tr>
<td colspan="3">
<hr />
<asp:Label ID="lblThongbao" runat="server" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>

Trong v d trn ta dng hai i tng Validator cng kim tra gi tr nhp trn iu
khin txtDiem, iu khin RequiredFieldDiem dng kim tra v yu cu nhp gi tr cho
txtDiem cn iu khin RangeDiem yu cu nhp gi tr trong txtDiem phi nm trong
khong t 0 n 10.

III. iu khin RegularExpressionValidator

http://www.ebook.edu.vn

79

1. ngha
iu khin RegularExpressionValidator cho php bn so snh gi tr nhp ti 1 trng
no trn Form vi mt quy tc nh trc. bn c th s dng cc biu thc quy tc
a ra cc chui mu nh l email addresses, Social Security numbers, phone numbers,
dates, currency, amounts, and product codes.

2. Cch s dng
Bn a iu khin RegularExpressValidator vo Form ca mnh v thit lp cho n
mt s thuc tnh sau:
ID: tn ca iu khin
ControlToValidate: tr n iu khin cn kim tra
Text(ErrorMessage): ni dung thng bo khi c li
ValidatorExpression: quy nh mu nhp liu nh l hm th, s in thoi

3. V d
Sau y s l mt v d v vic yu cu ngi s dng phi cp nht ng a ch ca
hm th.
Code 3: trang RegularExpressionValidator.aspx

<%@ Page Language="C#"%>

<script runat="server">
void btnAccept_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
lblThongbao.Text = txtEmail.Text;
}
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.ebook.edu.vn

80

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>RegularExpressionValidator</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Email:<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="txtEmail"
ID="RequiredFieldValidator1" runat="server" ErrorMessage="Bn phi nhp a
ch hm th"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
runat="server"
ErrorMessage="Bn nhp khng ng nh dng hm th"
ControlToValidate="txtEmail"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([.]\w+)*"></asp:RegularExpressionValidator>
<br />
<asp:Button ID="btnAccept" OnClick="btnAccept_Click" runat="server"
Text="Accept" />
<asp:Label ID="lblThongbao" runat="server"></asp:Label>
</div>
</form>
</body>
</html>

IV. iu khin CompareValidator

1. ngha
iu khin CompareValidator c 3 kiu khc nhau kim tra gi tr nhp:

http://www.ebook.edu.vn

81

S dng kim tra kiu d liu

S dng so snh gi tr nhp vi mt gi tr c nh

S dng so snh gia tr nhp vi gi tr ca mt iu khin khc trn Form

2. Cch s dng
Bn a iu khin CompareValidator vo Form v thit lp cho n mt s thuc tnh
sau:

ControlToValidate: iu khin ca Form s c kim tra

ControlToCompare: iu khin dng so snh gi tr

Text(ErrorMessage): hin th ni dung thng bo li kho c li

Type: Kiu ca gi tr s c so snh

Operator: Ton t so snh. C th l cc gi tr: DataTypeCheck, Equal,


GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, NotEqual.

3. V d
V d 4 sau s yu cu nhp vo ngy sinh, nu ngi s dng nhp vo khng ng
d liu dng ngy th s c li thng bo.

Code 4: Trang CompareValidator.aspx


<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="CompareValidator.aspx.cs" Inherits="CompareValidator" %>

<!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>CompareValidator</title>
</head>
<body>
<form id="form1" runat="server">
<div>

http://www.ebook.edu.vn

82

<asp:Label ID="Label1" runat="server" Text="Ngy sinh"></asp:Label>


<asp:TextBox ID="txtNgaysinh" runat="server"
Width="154px"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToValidate="txtNgaysinh"
ErrorMessage="Sai d liu phi l kiu ngy thng"
Operator="DataTypeCheck"
Type="Date"></asp:CompareValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Accept" />

</div>
</form>
</body>
</html>

V d sau y s hng a ra trng hp vi Form to ti khon trn mt trn Web


yu cu ngi ng k phi nhp mt khu 2 ln.

Code 5 trang
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="CompareValidator.aspx.cs" Inherits="CompareValidator" %>

<!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>CompareValidator</title>

http://www.ebook.edu.vn

83

</head>
<body>
<form id="form1" runat="server">
<div>

<asp:Label ID="Label2" runat="server" Text="Nhp mt khu


"></asp:Label>
<asp:TextBox ID="txtPass" runat="server"
TextMode="Password"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text="Nhp li mt
khu"></asp:Label>
<asp:TextBox ID="txtrePass" runat="server"
TextMode="Password"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator2" runat="server"
ControlToCompare="txtPass" ControlToValidate="txtrePass"
ErrorMessage="Nhp mt khu 2 ln phi ging
nhau"></asp:CompareValidator>
<br />
<asp:Button ID="Button2" runat="server" Text="Accept" />

</div>
</form>
</body>
</html>

V. iu khin CustomValidator

1.

ngha

http://www.ebook.edu.vn

84

Nu nhng iu khin Validator trn cha vi bn hoc bn mun to mt Validator


ring theo mnh, bn c th dng iu khin CustomValidator, bn c th kt hp
CustomValidator vi mt hm.

2. Cch s dng v V d
CustomValidator c 3 thuc tnh hay s dng l:

ControlToValidator: iu khin ca Form s c kim tra

Text(ErrorMessage): hin th ni dung thng bo li kho c li

ClientValidationFunction: tn ca mt hm client-side thc hin kim tra trn


client-side

CustomValidator h tr 1 s kin
ServerValidate: S kin c a ra khi CustomValidator thc hin kim chng.
V d sau s s dng s kin ServerValidate kim tra di ca chui c nhp
trong iu khin TextBox, nu ngi nhp, nhp vo chui c di ln hn 20 k t th
iu khin CustomValidator s a ra thng bo li.

V d:
Code 6 trang CustomValidator.aspx
<%@ Page Language="C#" %>

<script runat="server">
void CustomValidator1_ServerValidate(object source,
ServerValidateEventArgs e)
{
if (e.Value.Length > 20)
e.IsValid = false;
else
e.IsValid = true;
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.ebook.edu.vn

85

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>CustomValidator</title>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:Label ID="Label1" runat="server" Text="Ghi ch"></asp:Label>


<br />
<asp:TextBox ID="TextBox1" runat="server" Height="95px"
TextMode="MultiLine"
Width="218px"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server"
ErrorMessage=" di ghi ch phi nh hn 20 k t"
ControlToValidate="TextBox1"
OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Accept" />

</div>
</form>
</body>
</html>

v d 6 trong hm CustomValidator1_ServerValidate Tham s th 2 c truyn ti


s kin ServerValidator x l. Trong thc th ca lp ServerValidateEventArgs c hai
thuc tnh

Value: Gi tr ca trng trn Form s c kim chng.

http://www.ebook.edu.vn

86

IsValid: Din t vic kim chng cho kt qu thnh cng hoc sai.

Trong v d tip theo ti s a ra cch s dng hm kim chng Client-side kt hp


vi CustomValidator nh th no, Trang ny ch kim tra di ca chui nhp vo bn
trong TextBox, nhng n s kim tra trn c Server v Client.

Code 7.
<%@ Page Language="C#" %>

<script runat="server">
void CustomValidator1_ServerValidate(object source,
ServerValidateEventArgs e)
{
if (e.Value.Length > 20)
e.IsValid = false;
else
e.IsValid = true;
}
</script>
<!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>CustomValidator</title>
<script language="javascript" type="text/javascript">
function valComments_ClientValidate(source, args)
{
if (args.Value.length > 20)
args.IsValid = false;
else

http://www.ebook.edu.vn

87

args.IsValid = true;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:Label ID="Label1" runat="server" Text="Ghi ch"></asp:Label>


<br />
<asp:TextBox ID="TextBox1" runat="server" Height="95px"
TextMode="MultiLine"
Width="218px"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server"
ErrorMessage=" di ghi ch phi nh hn 20 k t"
ClientValidationFunction="valComments_ClientValidate"
ControlToValidate="TextBox1"
OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Accept" />

</div>
</form>
</body>
</html>

VI. iu khin ValidationSummary

1. ngha

http://www.ebook.edu.vn

88

ValidationSummary cho php bn lit k tt c cc cc li kim tra trn trang t nhng


iu khin validator vo mt v tr. iu khin ny c bit tin ch vi Form c rng ln.

2. cch s dng

sau:

Bn a iu khin ValidationSummary vo Form v thit lp cho n mt s thuc tnh

DisplayMode: Cho php bn ch r nh dng hin th li, n c th l cc gi tr nh


BulletList, List, v SingleParagraph.

HeaderText: Cho php bn hin th tiu tm tt cho cc li.

ShowMessageBox: Cho hin th mt popup thng bo

ShowSummary: Cho php bn n ValidationSummary trn trang.

3. v d

Code 8 Trang ValidationSummary.aspx


<%@ Page Language="C#" AutoEventWireup="true" %>

<!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>ValidationSummary</title>

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ValidationSummary ID="ValSummary" runat="server" />
<table>
<tr>

http://www.ebook.edu.vn

89

<td>
<asp:Label ID="Label1" runat="server" Text="H
tn"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtHoten" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server"
ErrorMessage="Bn phi nhp h tn"
ControlToValidate="txtHoten">*(Yu cu)</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label2" runat="server"
Text="Email"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
runat="server"
ErrorMessage="Bn phi nhp hm th"
ControlToValidate="txtEmail">*(Yu cu)</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator
ID="RegularExpressionValidator1" runat="server"
ErrorMessage="Hm th bn nhp khng ng nh dng"

ControlToValidate="txtEmail"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td colspan="2">

http://www.ebook.edu.vn

90

<asp:Button ID="Button1" runat="server" Text="Accept" />


</td>
</tr>
</table>

</div>
</form>
</body>
</html>
Code 8
Chy v d trn nu ta khng nhp d liu cho cc trng n s thng bo li nh sau:

Cng vi v d trn nu trn iu khin ValSummary ta thit lp thuc tnh


ShowMessageBox bng True v ShowSummary vi gi tr bng False th kt xut ca v d
thay v hin th l mt danh sch li trn Form th n hin th mt popup thng bo nhng li
trn trang.

Code 9
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="ValidationSummary.aspx.cs" Inherits="ValidatorSummary" %>

<!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">

http://www.ebook.edu.vn

91

<title>ValidationSummary</title>

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ValidationSummary ShowMessageBox="true" ShowSummary="false"
ID="ValSummary" runat="server" />
<table>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="H
tn"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtHoten" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"

runat="server"

ErrorMessage="Bn phi nhp h tn"


ControlToValidate="txtHoten">*(Yu cu)</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label2" runat="server"
Text="Email"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
runat="server"

http://www.ebook.edu.vn

92

ErrorMessage="Bn phi nhp hm th"


ControlToValidate="txtEmail">*(Yu cu)</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator
ID="RegularExpressionValidator1" runat="server"
ErrorMessage="Hm th bn nhp khng ng nh dng"

ControlToValidate="txtEmail"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="Button1" runat="server" Text="Accept" />
</td>
</tr>
</table>

</div>
</form>
</body>
</html>

Kt xut ca n:

http://www.ebook.edu.vn

93

VII. To cc iu khin kim tra tnh hp l theo mnh.


Trong phn ny bn s hc to cc iu khin tu bin nh th no. Chng ta s to
iu khin. u tin s to mt iu khin kim tra di ca mt trng nhp liu trn
Form LengthValidator, Bn to mi mt Control Kim tra tnh hp l bng cch dn xut t
lp BaseValidator. Lp BaseValidator l lp c s cho tt c cc iu khin Validation, bao
gm RequiredFieldValidator v RegularExpressionValidator
Lp c s l lp 1 lp phi c ci t m yu cu bn ci t mt phng thc n.

EvaluateIsValid: Tr v gi tr True khi trng kim tra tnh hp l trn Form l hp


l.

GetControlValidationValue: Cho php bn in gi tr ca iu khin s c kim


tra tnh hp l.

Khi bn to mt iu khin kim tra tnh hp l tu bin, bn override phng thc


EvaluateIsValid() v trong phng thc ny bn gi GetControlValidationValue ly gi tr
ca trng cn kim tra tnh hp l.
To mt iu khin LengthValidator.
Trong phn ny bn s c hc cch to mt iu khin n gin kim tra di
ca trng nhp liu.
Di y m m ngun ca lp LengthValidator.cs

Code 10 LenghtValidator.cs
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace myControls
{
public class LengthValidator : BaseValidator
{
int _maximumLength = 0;

http://www.ebook.edu.vn

94

public int MaximumLength


{
get { return _maximumLength; }
set { _maximumLength = value; }
}
protected override bool EvaluateIsValid()
{
String value =
this.GetControlValidationValue(this.ControlToValidate);
if (value.Length > _maximumLength)
return false;
else
return true;
}
}
}

Trong Lp on m trn ta thy LengthValidator c k tha t lp BaseValidator,


trong lp mi ny ghi phng thc EvaluateIsValid. Gi tr ca iu khin c kim
chng c ly v vi phng thc GetControlValidationValue V di ca gi tr s c
so snh vi thuc tnh MaximumLength.
s dng iu khin LenghtValidator chng ta phi ng k iu khin ny u
trang vi th ch dn <%@ Register %>. nu bn mun s dng LengthValidator cho nhiu
trang bn c th ng k iu khin ny phn <Page> trong file Web configuration.
V d s dng LengthValidator

Code 11
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="LengthValidator.aspx.cs" Inherits="LengthValidator" %>
<%@ Register TagPrefix="validator" Namespace="myControls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.ebook.edu.vn

95

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Use LenghtValidator</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Ghi ch"></asp:Label>
<br />
<asp:TextBox ID="txtghichu" runat="server" Height="67px"
TextMode="MultiLine"
Width="176px"></asp:TextBox>
<validator:LengthValidator ID="validatorLength"
ControlToValidate="txtghichu" runat="server" ErrorMessage="Phi nh hn 20 k
t" MaximumLength="20"></validator:LengthValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Accept" Width="85px" />
</div>
</form>
</body>
</html>

Ch dn <%@ Register %>, Vi tin t TagPrefix=Validator v Ch n


Namespace=MyControls v s dng iu khin ny ging vi cc iu khin Validator khc.

Chng 4. S dng cc iu khin khc.


phn u ca chng ny cc bn s c hc s dng iu khin FileUpload cho
php chng ta a cc file d liu ln Server, nh l cc file nh, word hay excel
chng ny cc bn cng c hc cc iu khin khc nh Calendar, AdRotator,
Multiview, Wizard.

http://www.ebook.edu.vn

96

I. File Upload.
iu khin FileUpload cho php ngi s dng Upload file t chnh ng dng Web ca
mnh.
File sau khi Upload c th lu tr 1 ni no c th l trn cng hay trong
Database.
iu khin FileUpload h tr cc thuc tnh sau:
Thuc tnh

ngha

Enable

Cho php bn v hiu ho iu khin FileUpload.

FileBytes

Cho php ly ni dung file c upload nh mt mng Byte.

FileContent

Cho php ly ni dung ca file c upload theo dng d liu

FileName

Ly tn file c Upload

HasFile

Tr v gi tr ng khi File c Upload

PostedFile

Enables you to get the uploaded file wrapped in the HttpPostedFile object.

iu khin FileUpload h tr cc phng thc

Focus: Enables you to shift the form focus to the FileUpload control.

SaveAs: Cho php bn lu file c upload ln h thng.

Thuc tnh PostedFile ca iu khin FileUpload cho php ly thng tin t File upload
c bao bc trong i tng HttpPostedFile. i tng ny s a thm thng tin v Upload
file.
Lp HttpPostedFile gm cc thuc tnh sau:

ContentLength: Ly v kch thc ca File Upload tnh theo byte

ContentType: ly kiu MIME ca File Upload

FileName: cho php ly tn ca file c upload.

InputStream: Enables you to retrieve the uploaded file as a stream.


Lp HttpPostedFile ch h tr phng thc

SaveAs: Cho php bn lu file c upload ln h thng.

Upload 1 file ln server


Trong v d sau bn s c hc cch Upload 1 file nh ln a cng ca Server.

http://www.ebook.edu.vn

97

Code 1a. Fileupload.aspx


<%@ Page Language="C#" Debug="true" AutoEventWireup="true"
CodeFile="Fileupload.aspx.cs" Inherits="_Default" %>

<!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>FileUpload</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Chn File"></asp:Label>
<asp:FileUpload ID="FileUpload1" runat="server" Width="286px" />
<br />
<asp:Button ID="Button1" runat="server" Text="Add image" Width="92px"
onclick="Button1_Click" />
<hr />
<br />
<asp:DataList ID="listImage" RepeatColumns="3" runat="server">
<ItemTemplate>
<asp:Image ID="Image1" ImageUrl='<%# Eval("Name", "~/Upload/{0}")
%>' style="width:200px" Runat="server" />
<br />
<%# Eval("Name") %>
</ItemTemplate>
</asp:DataList>
</div>

http://www.ebook.edu.vn

98

</form>
</body>
</html>

Code 1b.Fileupload.aspx.cs
using System;
using System.Data;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Page_PreRender()
{
string upload_folder = MapPath("~/Upload/");
DirectoryInfo dir = new DirectoryInfo(upload_folder);
listImage.DataSource = dir.GetFiles();
listImage.DataBind();
}
bool CheckFileType(string fileName)
{
string ext = Path.GetExtension(fileName);
switch (ext.ToLower())
{
case ".gif":
return true;
case ".png":
return true;

http://www.ebook.edu.vn

99

case ".jpg":
return true;
case ".jpeg":
return true;
default:
return false;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
if(CheckFileType(FileUpload1.FileName))
{
string filepath = "~/Upload/" + FileUpload1.FileName;
FileUpload1.SaveAs(MapPath(filepath));
}
}
}
}
Gii thch v d trn: Trong s kin Button1_Click Kim tra c tn ti File Upload?
Nu ng th kim tra kim tra file upload c phi ng nh dng ca nh khng bng hm
CheckFileType nu ng th s thc hin vic ghi file ln server vi phng thc SaveAs ca
iu khin FileUpload.

II. iu khin Calendar


Bn c th hin th mt lch trn trang web ca mnh vi iu khin Calendar
V d sau s trnh by mt Calendar n gin

Code 2.
http://www.ebook.edu.vn

100

<%@ Page Language="C#"%>


<!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>Calendar</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
</div>
</form>
</body>
</html>
Kt xut ca n s nh sau:

Cc thuc tnh:
Thuc tnh

ngha

DayNameFormat

Cho php bn ch r s xut hin cc ngy ca tun, c th l cc gi


tr: FirstLetter, FirstTwoLetters, Full, Short, v Shortest.

NextMonthText

Ch nh Text xut hin cho lin kt thng tip theo

http://www.ebook.edu.vn

101

NextPrevFormat

Cho php bn ch r nh dng thng tip theo v thng trc , n


c th l cc gi tr: CustomText, FullMonth, v ShortMonth.

PreMonthText

Cho php bn ch nh hin th text cho lin k thng trc

SelectedDate

Cho php bn ly v hoc thit t cho ngy la chn

SelectedDates

Cho php bn gn hoc ly v mt tp cc ngy c la chn

SelectionMode

Cho php ch nh cc ngy c la chn c gi tr nh th no, n


c th l cc gi tr sau: Day, DayWeek, DayWeekMonth, v none.

SelectMonthText

Cho php hin th Text cho 1 thng c chn

SelectWeekText

Cho php hin th Text cho 1 tun c chn

ShowdayHeader

Cho php hin th tn ngy hay khng trn nh ca iu khin.

ShowNextPrevMonth

Cho php hin th hay khng lin kt n thng tip theo hoc thng
trc .

ShowTitle

Cho php bn n hay hin Text trn thanh tiu ca iu khin


Calendar.

TitleFormat

Cho php nh dang text trn thanh tiu , cc gi tr ca n c th


l Month v MonthYear.

TodaysDate

Cho php bn ch r ngy hin ti mc nh ly ngy hin ti trn


Server.

Cc S kin.

DayRender: Raised as each day is rendered.

SelectionChanged: Xy ra khi mt ngy mi, tun mi hay thng mi c la chn.

VisibleMonthChanged: xy ra khi lin kt n thng tip theo hoc thng trc


c nhn.

V d sau s trnh by cch ly thng tin khi chng ta la chn nhiu ngy trn i
tng Calendar.

Code 3a. Calendarmultiselect.aspx


<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Calendarmultiselect.aspx.cs" Inherits="Calendarmultiselect" %>

http://www.ebook.edu.vn

102

<!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>Multi select date</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Calendar ID="calendar1" SelectionMode="DayWeekMonth"
runat="server" SelectedDate="2008-04-18" TitleFormat="Month"></asp:Calendar>
<br />
&nbsp;<asp:Button ID="btnSubmit" runat="server"
OnClick="btnSubmit_Click" Text="Submit"
Width="83px" /><br />
<hr />
</div>
<asp:BulletedList ID="bllresult" runat="server"
DataTextFormatString="{0:d}">
</asp:BulletedList>
</form>
</body>
</html>

Code 3b. Calendarmultiselect.aspx.cs


using System;
public partial class Calendarmultiselect : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

http://www.ebook.edu.vn

103

}
protected void btnSubmit_Click(object sender, EventArgs e)
{
bllresult.DataSource = calendar1.SelectedDates;
bllresult.DataBind();
}
}
Kt xut ca v d 3

To mt Popup Datepicker
Trong phn ny bn s hc cch s dng iu khin Calendar kt hp vi Javacript
to mt Pop-up Date picker nh trong hnh di y:

http://www.ebook.edu.vn

104

Code 4. popupdatepicker.aspx
<%@ Page Language="C#" %>

<script runat="server">
protected void calEventDate_SelectionChanged(object sender, EventArgs e)
{
txtEventDate.Text = calEventDate.SelectedDate.ToString("d");
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
lblResult.Text = "Bn chn: " + txtEventDate.Text;
}
</script>
<!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>Pop-up Date Picker</title>
<script type="text/javascript">

http://www.ebook.edu.vn

105

function displayCalendar()
{
var datePicker = document.getElementById('datePicker');
datePicker.style.display = 'block';
}
</script>
<style type="text/css">
#datePicker
{
display:none;
position:absolute;
border:solid 2px black;
background-color:white;
}
.content
{
width:400px;
background-color:white;
margin:auto;
padding:10px;
}
html
{
background-color:silver;
}
</style>
</head>
<body>

http://www.ebook.edu.vn

106

<form id="form1" runat="server">


<div class="content">
<asp:Label id="lblEventDate" Text="Nhp ngy:" Runat="server" />
<asp:TextBox id="txtEventDate" Runat="server" />
<img src="img.gif" alt="" onclick="displayCalendar()" />
<div id="datePicker">
<asp:Calendar id="calEventDate"
OnSelectionChanged="calEventDate_SelectionChanged" Runat="server" />
</div>
<br />
<asp:Button id="btnSubmit" Text="Submit" Runat="server"
OnClick="btnSubmit_Click" />
<hr />
<asp:Label id="lblResult" runat="server" />
</div>
</form>
</body>
</html>
III. iu khin Advertisements(Trnh by qung co - Adrotator)
Cho php bn hin th cc nh qung co khc nhau trong 1 trang. bn c th lu tr
cc qung co ca bn trong 1 file XML hoc mt bng c s d liu.
. Cc thuc tnh
Thuc tnh

ngha

AdvertisementFile

Cho php bn ch nh n ng dn file XML cha ng danh sch nh


qung co

AlternateTextField

Cho php ch nh n tn ca trng hin th ni dung thay th khi


nh qung co v mt l do no khng hin th c

DataMenber

Cho php rng buc n mt thnh vin c s d liu ca ngun c s


d liu

DataSource

Ch r c s d liu cha danh sch cc banner qung co

http://www.ebook.edu.vn

107

DataSourceID

Rng buc n 1 c s d liu

ImgUrlFile

Ch r n trng cha ng dn banner qung co

KeywordFilter

Cho php bn lc qung co bi 1 t kho

NavigateUrlField

Ch r n tn ca trng cha cc lin kt qung co

Target

Cho php bn m ra mt ca s mi khi nhn vo banner qung co

S kin

AdCreated: Xy ra sau khi iu khin Adrotator la chn mt qung co nhng


trc khi iu khin AdRotator a ra qung co.

Ch rng iu khin AdRotator cha ng thuc tnh KeywordFilter bn c th cung


cp mi banner qung co vi 1 t kho sau khi trnh by qung co chng ta c th lc
nhng qung co theo iu kin hin th.
V d nh trn trang ca bn, bn cn trnh by qung co 4 v tr trn banner(top)
ca trang, bn trai, phi v pha chn(bottom) ca trang. Khi bn gn vi mi nh qung
co mt t kho(v d tng ng vi 1- top, 2- right, 3 bottom, 4 - left) v khi trnh by
trong iu khin AdRotator ta c th dng thuc tnh KeywordFilter lc v trnh by.
V d 1: Trn trang web ca bn trnh by qung co hai v tr(trn u v bn phi
ca trang) layout nh sau

Code 5a: AdRotatorXML.aspx


<%@ Page Language="VB" AutoEventWireup="false" CodeFile="AdRotatorXML.aspx.vb"
Inherits="_Default" %>

http://www.ebook.edu.vn

108

<!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>AdRotator XML</title>
<style type="text/css">
#wrapper {width: 782px; margin: 0 auto;}
#border { border: 1px solid #8ECE5F; margin: 20px 0px 5px 0px;
background-color: #ffffff; min-height: 776px; float: right; width: 780px;}
#header {background-color:#BECEF5; text-align: width:782px;
height:100px; center; margin: 6px 0px 0px 0px;}
#right{background-color:#BECEF5; width:170px;margin: 6px 0px 0px 4px;
height:300px; float:right}
.box{ float:right;padding:10px; border-left:solid 1px black;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="wrapper" >
<div id="border">
<div id="header">
<asp:AdRotator ID="advbanner"
AdvertisementFile="~/App_Data/AdList.xml" KeywordFilter="banner"
runat="server" />
</div>

<div id="right">
<div class="box">

http://www.ebook.edu.vn

109

<asp:AdRotator ID="AdRotator1"
AdvertisementFile="~/App_Data/AdList.xml" KeywordFilter="right" runat="server"
/>
</div>
<div class="box">
<asp:AdRotator ID="AdRotator2"
AdvertisementFile="~/App_Data/AdList.xml" KeywordFilter="right" runat="server"
/>
</div>
</div>
</div>
</div>
</form>
</body>
</html>
Ni dung File XML

Code 5b.
<?xml version="1.0" encoding="utf-8" ?>
<Advertisements>
<Ad>
<ImageUrl>~/Advertisement/images/banner.png</ImageUrl>
<Width>782</Width>
<Height>100</Height>
<NavigateUrl>http://www.itechpro.com.vn</NavigateUrl>
<AlternateText>Cong ty cong nghe cao iTechPro</AlternateText>
<Impressions>50</Impressions>
<Keyword>banner</Keyword>
</Ad>
<Ad>

http://www.ebook.edu.vn

110

<ImageUrl>~/Advertisement/images/banner2.gif</ImageUrl>
<Width>782</Width>
<Height>100</Height>
<NavigateUrl>http://www.itechpro.com.vn</NavigateUrl>
<AlternateText>Cong ty cong nghe cao iTechPro</AlternateText>
<Impressions>50</Impressions>
<Keyword>banner</Keyword>
</Ad>
<Ad>
<ImageUrl>~/Advertisement/images/anh1.gif</ImageUrl>
<Width>150</Width>
<Height>150</Height>
<NavigateUrl>http://www.itechpro.com.vn</NavigateUrl>
<AlternateText>Box Advertisement 1</AlternateText>
<Impressions>50</Impressions>
<Keyword>right</Keyword>
</Ad>
<Ad>
<ImageUrl>~/Advertisement/images/anh1.gif</ImageUrl>
<Width>150</Width>
<Height>150</Height>
<NavigateUrl>http://www.itechpro.com.vn</NavigateUrl>
<AlternateText>Box Advertisement 1</AlternateText>
<Impressions>50</Impressions>
<Keyword>right</Keyword>
</Ad>
<Ad>
<ImageUrl>~/Advertisement/images/anh2.gif</ImageUrl>

http://www.ebook.edu.vn

111

<Width>150</Width>
<Height>150</Height>
<NavigateUrl>http://www.itechpro.com.vn</NavigateUrl>
<AlternateText>Box Advertisement 1</AlternateText>
<Impressions>50</Impressions>
<Keyword>right</Keyword>
</Ad>
<Ad>
<ImageUrl>~/Advertisement/images/anh3.gif</ImageUrl>
<Width>150</Width>
<Height>150</Height>
<NavigateUrl>http://www.itechpro.com.vn</NavigateUrl>
<AlternateText>Box Advertisement 1</AlternateText>
<Impressions>50</Impressions>
<Keyword>right</Keyword>
</Ad>
<Ad>
<ImageUrl>~/Advertisement/images/anh4.gif</ImageUrl>
<Width>150</Width>
<Height>150</Height>
<NavigateUrl>http://www.itechpro.com.vn</NavigateUrl>
<AlternateText>Box Advertisement 1</AlternateText>
<Impressions>50</Impressions>
<Keyword>right</Keyword>
</Ad>
<Ad>
<ImageUrl>~/Advertisement/images/anh5.gif</ImageUrl>
<Width>150</Width>

http://www.ebook.edu.vn

112

<Height>150</Height>
<NavigateUrl>http://www.itechpro.com.vn</NavigateUrl>
<AlternateText>Box Advertisement 1</AlternateText>
<Impressions>50</Impressions>
<Keyword>right</Keyword>
</Ad>
<Ad>
<ImageUrl>~/Advertisement/images/anh6.gif</ImageUrl>
<Width>150</Width>
<Height>150</Height>
<NavigateUrl>http://www.itechpro.com.vn</NavigateUrl>
<AlternateText>Box Advertisement 1</AlternateText>
<Impressions>50</Impressions>
<Keyword>right</Keyword>
</Ad>
</Advertisements>

Cch thc hin bn a XML c cu trc nh code 5b, sau trong trang
AdRotatorXML.aspx bn a iu khin AdRotator vo v t cho n hai thuc tnh
AdvertisementFile ch n File XML bn va to, v thuc tnh KeywordFilter theo th
Keyword trong file XML.

IV.

iu khin hin th cc trang khc nhau

iu khin MultiView cho php bn n hoc hin cc phn khc nhau ca trang Web,
iu khin ny tin ch khi bn to mt TabPage. N thc s tin ch khi bn mun chia 1
trang web c di ln thnh cc phn hin th
iu khin MultiView cha ng 1 hoc nhiu iu khin View, bn s dng Multiview
la chn cc iu khin View trnh by.
iu khin MultiView h tr cc thuc tnh.

ActiveViewIndex: La chn iu khin View c a ra hin th bng ch s Index

Views: Cho php bn ly v tp hp cc iu khin View cha ng trong iu khin


MultiView.

http://www.ebook.edu.vn

113

iu khin MultiView h tr hai phng thc.

GetActiveView: Cho php ly v thng tin ca iu khin View c la chn.

SetActiveView: cho php bn thit lp iu khin View c hin th.

V MultiView h tr s kin sau:

ActiveViewChanged: Xy ra khi iu khin View c la chn

Cch s dng

1. hin th nh mt TabPage
Khi bn s dng MultiView kt hp vi iu khin Menu bn c th to mt TabPage
V d sau s hng dn bn to mt TabPage t 2 iu khin Menu v MultiView

Code 6a.
<%@ Page Language="C#" %>
<script runat="server">
void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
int index = Int32.Parse(e.Item.Value);
MultiView1.ActiveViewIndex = index;
}
void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MultiView1.ActiveViewIndex = 0;
}
}
</script>
<!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" >

http://www.ebook.edu.vn

114

<head runat="server">
<title>Create a TabView</title>
<style type="text/css">
html
{
background-color:silver;
}
.tabs
{
position:relative;
top:1px;
left:10px;
}
.tab
{
border:solid 1px black;
background-color:#eeeeee;
padding:2px 10px;
}
.selectedTab
{
background-color:white;
border-bottom:solid 1px white;
}
.tabContents
{
border:solid 1px black;
padding:10px;

http://www.ebook.edu.vn

115

background-color:white;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Menu ID="Menu1"
OnMenuItemClick="Menu1_MenuItemClick" runat="server"
Orientation="Horizontal" StaticMenuItemStyle-CssClass="tab"
StaticSelectedStyle-CssClass="selectedTab" CssClass="tabs">
<Items>
<asp:MenuItem Text="Tab 1" Value="0"
Selected="true"></asp:MenuItem>
<asp:MenuItem Text="Tab 2" Value="1"></asp:MenuItem>
<asp:MenuItem Text="Tab 3" Value="2"></asp:MenuItem>
</Items>
</asp:Menu>
<div class="tabContents">
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="view1" runat="server">
Day la View 1<br />
Day la View 1<br />
Day la View 1<br />
Day la View 1<br />
Day la View 1<br />
Day la View 1<br />
</asp:View>

http://www.ebook.edu.vn

116

<asp:View ID="view2" runat="server">


Day la View 2<br />
Day la View 2<br />
Day la View 2<br />
Day la View 2<br />
Day la View 2<br />
Day la View 2<br />
</asp:View>
<asp:View ID="view3" runat="server">
Day la View 3<br />
Day la View 3<br />
Day la View 3<br />
Day la View 3<br />
Day la View 3<br />
Day la View 3<br />
</asp:View>
</asp:MultiView>
</div>
</div>
</form>
</body>
</html>
Trong v d trn Menu c kt hp vi CSS to ra cc trng thi khi MenuItem
c
chn(StaticSelectedStyle-CssClass="selectedTab")
v
ko
c
chn(StaticMenuItemStyle-CssClass="tab").

2. Hin th nhiu phn trn trang.


Bn c th chia mt Form c di ln thnh cc thnh phn nh hn v hin th tng
phn, bn c th s dng cc iu khin Button nm trong iu khin MultiView v khi
Button c nhn th Multiview s x l thay i hin th View khc.
iu khin MultiView h tr cc iu khin lnh sau:

http://www.ebook.edu.vn

117

NextView: MultiView s kch hot iu khin View tip theo

PrevView: MultiView s kch hot iu khin View trc

SwitchViewByID: MultiView s kch hot View ch nh bi i s ca iu khin


Button

SwitchViewByIndex: MultiView s kch hot View ch nh bi i s ca iu khin


Button

Bn c th s dng cc iu khin lnh nh Button, ImageButton, LinkButton. V thit


lp thuc tnh CommandName, vi trng hp iu khin lnh l SwitchViewByID v
SwitchViewByIndex bn thit lp thm thuc tnh CommandArgument.
V d sau s hng dn bn to mt Form c nhiu phn vi vic s dng iu khin
lnh NextView.

Code 7.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MultipartView.aspx.cs"
Inherits="MiltipartView" %>

<script runat="server">
void View3_Active(object sender, EventArgs e)
{
lblRHoten.Text = txtHoten.Text;
lblRCMT.Text = txtCMT.Text;
}
</script>
<!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>MultiPart View</title>
</head>
<body>
<form id="form1" runat="server">

http://www.ebook.edu.vn

118

<div>
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
<asp:View ID="View1" runat="server">
<asp:Label ID="lblHoten" runat="server" Text="Nhp h
tn"></asp:Label>
<asp:TextBox ID="txtHoten" runat="server"
Width="198px"></asp:TextBox><br />
<asp:Button ID="btnNext1" runat="server"
CommandName="NextView" Text="Next" Width="98px" /></asp:View>
<asp:View ID="View2" runat="server">
<asp:Label ID="lblCMT" runat="server" Text="Nhp s
CMT"></asp:Label>
<asp:TextBox ID="txtCMT" runat="server"></asp:TextBox>
<br />
<asp:Button ID="btnNext2" runat="server"
CommandName="NextView" Text="Next" Width="99px" /></asp:View>
<asp:View ID="View3" OnActivate="View3_Active" runat="server">
<asp:Label ID="Label1" runat="server" Text="H
tn:"></asp:Label>
<asp:Label ID="lblRHoten" runat="server"
Text="Label"></asp:Label><br />
<asp:Label ID="Label2" runat="server" Text="S
CMT:"></asp:Label>
<asp:Label ID="lblRCMT" runat="server"
Text="Label"></asp:Label></asp:View>
</asp:MultiView></div>
</form>
</body>
</html>
Trong v d trn 2 button u thit lp thuc tnh CommandName c gi tr l NextView, do
iu khin MultiView h tr lnh NextView ln khi nhn vo 2 Button th lnh NextView
c thc hin v kch hot View tip theo n View 3 vi s kin OnActive gi hm
View3_Active v thc hin ly v gi tr ca hai TextBox v gn vo 2 Label tng ng.

V. Hin th vi iu khin Wizard


http://www.ebook.edu.vn

119

iu khin Wizard ging vi iu khin MultiView c th dng chia mt Form ln


thnh nhiu phn nh. Tuy nhin n s c thm mt s thuc tnh m MultiView khng h
tr.
iu khin Wizard c th cha nhiu iu khin WizardStep con, nhng ch 1
WirardStep c hin th ti 1 thi im.

Cc thuc tnh.

ActiveStep: cho php bn ly thng tin ca WizardStep ang kch hot

ActiveStepIndex: cho php bn gn hoc ly v ch s Index ca WizardStep ang


kch hot

CancelDestinationPageUrl: cho php bn ch r a ch URL c gi ti khi ngi s


dng nhn nt Cancel

DisplayCancelButton: Cho php n hoc hin Cancel Button.

DisplaySlideBar: Cho php n hoc hin SlideBar(hin th tt c cc WizardStep)

FinishDestinationPageUrl: cho php bn ch nh a ch URL c gi ti khi ngi


dng nhn nt Finish

HeaderText: cho php bn ch nh tiu hin th trn nh ca iu khin Wizard.

WizadSteps: Cho php bn ly thng tin ca cc iu khin WizardStep trong iu


khin Wizard

iu khin Wizard h tr cc Template.

FinishNavigationTemplate: cho php hin th Navigation bc kt thc

HeaderTemplate: hin th thanh tiu u ca iu khin Wizard

SlideBarTemplate: Cho php hin th SlideBar trong iu khin Wizard

StartNavigationTemplate: Cho php hin th Navigation bc bt u

StepNavigationTemplate: cho php hin th Navigation cc bc khng phi bc


bt u v kt thc.

iu khin Wizard h tr cc phng thc:

GetHistory(): cho php ly thng tin ca cc iu khin Wizard m truy cp.

GetStepType(): Cho php bn tr v kiu ca mi WizardStep ring theo ch s, n c


th l cc thuc tnh sau: Auto, Start, Finish hay Step

MoveTo(): cho php bn di chuyn n mt WizardStep.

iu khin Wizard h tr cc s kin:

ActiveStepChanged: xy ra khi mt WizardStep tr thnh Step c kch hot

http://www.ebook.edu.vn

120

CancelButtonClick: xy ra khi Cancel Button c nhn.

FinishButtonClick: xy ra khi Finish Button c nhn

NextButtonClick: Xy ra khi Next button c nhn

PreviousButtonClick: xy ra khi Previous button c nhn

SlideBarButtonClick: xy ra khi SlideBar button c nhn:

Mt iu khin Wizard cha ng mt hoc nhiu WizardStep din t cc


bc strong qu trnh Wizard.

Cc WizardStep h tr cc thuc tnh:

AllowReturn: Ngn cn hay cho php ngi s dng tr v bc ny t mt bc


khc.

Name: tn ca iu khin WirardStep

StepType:Cho php bn gn hay ly v kiu ca WirardStep n c th l cc gi tr


sau: Auto, Finish, Start, Complete v Step.

Title: ly v hoc gn tiu ca iu khin WizardStep tiu ny c hin th


Wizard Slidebar

Wizard: cho php bn ly thng tin iu khin Wizard cha trong WizardStep.

Cc S kin trong WizardStep

Activate: Xy ra khi mt WizardStep c kch hot

DeActivate: xy ra khi WizardStep khc c kch hot.

StepType l thuc tnh quan trng nht ca Wizard, thuc tnh no xc nh WizardStep
c a ra nh th no, mc nh l Auto
V d:
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="WirardControl.aspx.cs" Inherits="_Default" %>

<script runat="server">
void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{
lblbiet.Text = txt1.Text;
lblkhoahoc.Text = txt2.Text;

http://www.ebook.edu.vn

121

}
</script>
<!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>Wizard </title>
<style type="text/css">
.wizard{border:solid 1px black;font:14px
Verdana,width:800px;height:300px;}
.header{color:gray;font:bold 18px Verdana,}
.sideBar{background-color:#eeeeee;padding-left:10px;width:200px;
height:23px;}
.sideBar a{text-decoration:none;}
.step{padding:10px;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:Wizard ID="Wizard1" HeaderText="Wizard control"


OnFinishButtonClick="Wizard1_FinishButtonClick"
CssClass="wizard" Width="800px" HeaderStyle-CssClass="header"
SideBarButtonStyle-CssClass="sideBar" SideBarStyle-Width="200px"
SideBarButtonStyle-Width="200px" StepStyle-CssClass="step" runat="server">
<StepStyle CssClass="step"></StepStyle>
<WizardSteps>
<asp:WizardStep ID="WizardStep1" runat="server" title="Li
gii thiu">
<asp:Label ID="Label1" runat="server"

http://www.ebook.edu.vn

122

Text="Cho mng bn n vi trung tm cng ngh cao


iTechPRo"></asp:Label>
</asp:WizardStep>
<asp:WizardStep ID="WizardStep2" runat="server" title="step
1">
<asp:Label ID="Label2" runat="server"
Text="Bn bit n iTechPro qua phng tin
no"></asp:Label>
<br />
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>
</asp:WizardStep>
<asp:WizardStep ID="WizardStep3" runat="server"
StepType="Finish" title="step 2">
<asp:Label ID="Label3" runat="server"
Text="Bn thch kho hc no nht
iTechPro"></asp:Label>
<asp:TextBox ID="txt2" runat="server"></asp:TextBox>
</asp:WizardStep>
<asp:WizardStep ID="WizardStep4" runat="server"
StepType="Complete" title="Tng kt">
<asp:Label ID="Label4" runat="server" Text="Bn bit n
iTechPro qua:"></asp:Label>
<asp:Label ID="lblbiet" runat="server"
Text=""></asp:Label><br />
<asp:Label ID="Label5" runat="server" Text="Bn thch nht
kho hc:"></asp:Label>
<asp:Label ID="lblkhoahoc" runat="server"
Text=""></asp:Label>
</asp:WizardStep>
</WizardSteps>
</asp:Wizard>
</div>
</form>

http://www.ebook.edu.vn

123

</body>
</html>
Gii thch v d:
Trn v d ta a vo 4 WizardStep, chng trnh s thc hin trnh t theo cc bc
v kt thc vi vic nhn nt Finish WizardStep3(c thit lp thuc tnh
StepType=Finish) thng qua hm Wizard1_FinishButtonClick sau khi thc hin hm ny
n s chuyn sang v hin th ni dung cng vic cn thc hin thng 2 iu khin label trn
WizardStep4 v iu khin ny c thit lp thuc tnh StepType=Complete.

Chng 5 Thit k Website vi MasterPage


Bn ang gp vn thit k layout chung cho website ca mnh? MasterPage c th
l mt p n tt cho bn gii quyt bi ton trn.
Vi MasterPage to mt giao din chung nht cho Website ca mnh. V d website
ca bn c layout gm 5 phn banner, footer, left, right
V content(phn cha ni dung hin th cho cc tin). Nh vy bn c th thy trn
trang web c cc phn c cch trnh by khng thay i trong qu trnh duyt tin. banner,
footer, left, right: bn c th cc phn ny vo mt MasterPage v tt cc trang web
trong website ca bn s p dng layout ny thng qua contentpage
I. To MasterPage
Cc bc to MasterPage ging vi to cc trang aspx bnh thng nhng trn hp Add
New Item bn chn MasterPage bn thy di t tn phn m rng ca n s l Master.
Bn c th to nhiu MasterPage cho ng dng web ca mnh.
V d:

Code 1.
<%@ Master Language="C#" AutoEventWireup="true"
CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

<!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>MasterPage</title>
<style type="text/css">
html{ background-color:#e5e5e5; font-family:Verdana;}

http://www.ebook.edu.vn

124

.content{ background-color:White; border:black 1px solid; width:700px;


margin:auto;}
.leftcolumm{ float:left; border-right:black 1px solid; width:200px;
padding:5px; height:300px}
.rightcolumm{ float:left; padding:5px; height:300px}
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="content">
<div class="leftcolumm">
<asp:ContentPlaceHolder ID="contentplace1"
runat="server"></asp:ContentPlaceHolder>
</div>
<div class="rightcolumm">
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</div>
</form>
</body>
</html>
s dng MasterPage cho cc trang aspx bn cn khai bo trn ch dn <%@ Page
%> vi thuc tnh MasterPageFile=Tn _MasterPage ca bn
v d

code 2
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" %>
<asp:Content ID="contentleft" ContentPlaceHolderID="contentplace1"
runat="server">
Trinh bay menu Left<br />

http://www.ebook.edu.vn

125

Trinh bay menu Left<br />


Trinh bay menu Left<br />
Trinh bay menu Left<br />
</asp:Content>

<asp:Content ID="content1" ContentPlaceHolderID="ContentPlaceHolder1"


runat="server">
Trinh bay noidung<br />
Trinh bay noidung<br />
Trinh bay noidung<br />
Trinh bay noidung<br />
</asp:Content>
Trn trang aspx bn khai bo 2 iu khin asp:content v trong thuc tnh ca n bn
thit lp ContentPlaceHolderID=Ten_Placeholder trong trang masterPage.
To mt Content mc nh
Bn khng th kt hp mt iu khin Content vi tt c cc iu khin
ContentPlaceHolder. Khi trn trang MasterPage ca bn c 3 ContentPlaceHolder m trong
trang aspx ca bn ch s dng hai iu khin aspContent v ch n 2 ContentPlaceHolder
trn trang MasterPage khi mc nh ContentPlaceHolder th 3 vn c hin th.
ng k Master Page trong WebConfiguration
Bn c th p dng MasterPage cho tt c cc trang trong mt Folder hay tt c cc
Content trong ng dng web ca mnh.
Thay v vic trong mi trang aspx bn phi gi li ch dn trang th ch dn <%@ Page
%> th bn c th thm n vo trong file webconfiguration
Trong v d di y l cch bn s ng k mt trang SimpleMasterPage vo ng
dng web ca mnh c th p dng cho tt c cc trang trong foder(Sub Folder) cha
Ch rng file web.config ny phi cng nm trong foleder :

<system.web>
<pages masterPageFile="~/SimpleMasterPage.master" />
</system.web>

http://www.ebook.edu.vn

126

S dng FindControl trong MasterPage.


Khi bn cn chnh sa hay ly thng tin ca 1 iu khin t MasterPage bn c th s
dng phng thc FindControl() trong mt Content Page
V d

Trang Findcontrol.master
<%@ Master Language="C#" AutoEventWireup="true"
CodeFile="Findcontrol.master.cs" Inherits="Findcontrol" %>
<!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>Findcontrol</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblTitle" runat="server" /><br />
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>

Trang Findcontrol.aspx
<%@ Page Language="C#" MasterPageFile="~/Findcontrol.master"%>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{

http://www.ebook.edu.vn

127

Label lbl = (Label)Master.FindControl("lblTitle");


lbl.Text = "Trung tam dao tao cong nghe cao iTechPro";
}
</script>
<asp:Content ID="content" runat="server"
ContentPlaceHolderID="ContentPlaceHolder1">
Lay gia tri tu masterpage<br />
Lay gia tri tu masterpage<br />
Lay gia tri tu masterpage<br />
Lay gia tri tu masterpage<br />
Lay gia tri tu masterpage<br />
</asp:Content>
Trnh by thuc tnh MasterPage
Bn c th trnh by thuc tnh , phng thc t MasterPage v c th chnh sa thuc
tnh hay phng thc t trang Content.
V d

Trang Expose.master
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Expose.master.cs"
Inherits="Expose" %>
<script runat="server">
public string BodyTitle
{
get { return lblBody.Text; }
set { lblBody.Text = value; }
}
</script>
<!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">

http://www.ebook.edu.vn

128

<head runat="server">
<title>Expose MasterPage Property</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1><asp:Label ID="lblBody" runat="server"
Text="iTechPro"></asp:Label></h1>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>

Trang Expose.aspx
<%@ Page Language="C#" MasterPageFile="~/Expose.master" AutoEventWireup="true"
%>
<%@ MasterType VirtualPath="~/Expose.master" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Master.BodyTitle = "Trung tam dao tao cong nghe cao iTechPro";
}
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">

http://www.ebook.edu.vn

129

Property, Property, Property, Property, Property, <br />


Property, Property, Property, Property, Property, <br />
Property, Property, Property, Property, Property,<br />
Property, Property, Property, Property, Property<br />
</asp:Content>
Trong v d trn bn s thy mt im mi l ch dn MasterType, s dng c
thuc tnh hay phng thc t MasterPage ta phi thm vo ch dn MasterType v t thuc
tnh VirtualPath=Ten_Mastepage.

Chng 6. Thit k Website vi themes


Bn c th to Themes bng cch bn thm vo ng dng mt Folder c bit ca ng
dng c t tn l App_Themes trong th mc gc ca ng dng,
Trong Folder themes c th cha nhiu kiu File bao gm c nh v text. bn c th t
chc ni dung ca themes trong cc folder con ca n. Hai kiu ca File quan trng nht
trong themes l
-

skin files

Cascading Style Sheet files


Trong chng ny bn s c hc c hai cch trnh by trong thm vi CSS v Skin

1. Thm Skin vo trong themes


Mt Themes c th cha ng mt hoc nhiu Skin, mt Skin cho php bn thay i
mt s thuc tnh ca cc iu khin trong asp.net m nhng thuc tnh biu din hin th
ca control vi ngi dng.
Bn c th to ra cc skin mc nh(s p dng cho cc iu khin trn form), skin p
dng cho 1 iu khin c ch nh form.
khng p dng skin mc nh cho iu khin bn c th s dng thuc tnh
EnableTheming=false.
V d:
Trong v d ny ti s a ra 3 trng hp(mc nh, ch nh, ko p dng) p dng
Skin vo trong cc iu khin trn Form.
bc 1: Bn chn nh hnh 1

Hnh 1

http://www.ebook.edu.vn

130

bc 2: hp thoi Add New Item hin ra bn chn Skin File v t tn Skin ca mnh vo
hp Name v nhn vo nt Add nh hnh sau:

Hnh 2
bc 3: hp thoi thng bo hin ra bn chn YES.

bc 4: trong Project ca bn s thm vo th mc App_Theme v Skin Simple s c


ng dn sau:.

http://www.ebook.edu.vn

131

Trong File simple.skin bn son ni dung nh sau:


<asp:TextBox SkinID="txtChidinh" BorderStyle="dashed" BorderWidth="5px"
Runat="Server" />
<asp:TextBox BorderStyle="none" BorderWidth="0px" Runat="Server" />
V s dng skin ny cho trang aspx ca chng ta, bn phi thm vo ch dn
Theme=simple trong ch dn <%@ Page %>

Nh trang Themes.aspx sau:


Code1.
<%@ Page Language="C#" Theme="simple"%>

<!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>Using Themes</title>
</head>
<body style="background-color:#e5e5e5;">
<form id="form1" runat="server">
<div>
<h3>Skin ti iu khin c ch nh</h3>
<asp:TextBox ID="txtChidinh" runat="server"
SkinID="txtChidinh"></asp:TextBox>

http://www.ebook.edu.vn

132

<h3>Skin mc nh cho iu khin TextBox</h3>


<asp:TextBox ID="txtmacdinh" runat="server"></asp:TextBox>
<h3>Khng p dng Skin mc nh</h3>
<asp:TextBox ID="txtnone" runat="server"
EnableTheming="false"></asp:TextBox>
</div>
</form>
</body>
</html>
kt xut ca chng trnh:

Khi s dng Themes th mc nh nu trong cc iu khin trn Form c quy nh thuc


tnh th hin th ca iu khin s b nh hng ca cc thuc tnh . Tuy nhin bn cng
c th ghi cc thuc tnh s dng thuc tnh trong Themes quy nh, bng cch a
vo ch dn <%@ Page StyleSheetTheme=simple %>.
ng k Themes vi web.config
Khi bn mun s dng themes cho tt c cc trang web trong website ca mnh bn c
th ng k n vo trong file web.config trong ng dng web ca mnh nh sau:
<configuration>
<system.web>
<pages theme=simple />
</system.web>
</configuration>

http://www.ebook.edu.vn

133

ghi vo thuc tnh ca iu khin trong website


<configuration>
<system.web>
<pages styleSheetTheme=simple />
</system.web>
</configuration>
Trong mt trang ta ko mun s dng Themes, ta c th g b n trong trang ny bng
cch: <%@ Page Language=C# EnableTheming=false %>
Thm CSS ti Themes
Css l mt thay th cho skins iu khin cch xut hin ca cc thnh phn ca c
HTML v ASPNET
Khi thm css vo folder Themes th n s c p dng cho tt c cc trang c p
dng theme

V d:
File simple.css
html{background-color:gray;font:14px Georgia,Serif;}
.content{margin:auto;width:600px;border:solid 1px black;backgroundcolor:White;padding:10px;}
h1{color:Gray;font-size:18px;border-bottom:solid 1px orange;}
label{font-weight:bold;}
input{background-color:Yellow;border:double 3px orange;}
.button{background-color:#eeeeee;}
File skintotheme.aspx
<%@ Page Language="C#" Theme="blue" AutoEventWireup="true"
CodeFile="skintotheme.aspx.cs" Inherits="_Default" %>
<!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>SIMPLE CSS</title>

http://www.ebook.edu.vn

134

</head>
<body>
<form id="form1" runat="server">
<div class="content">
<h1>Registration Form</h1>
<asp:Label id="lblFirstName" Text="First Name:"
AssociatedControlID="txtFirstName" Runat="server" /><br />
<asp:TextBox id="txtFirstName" Runat="server" /><br /><br />
<asp:Label id="lblLastName" Text="Last Name:"
AssociatedControlID="txtLastName" Runat="server" /><br />
<asp:TextBox id="txtLastName" Runat="server" /><br /><br />
<asp:Button id="btnSubmit" Text="Submit Form" CssClass="button"
Runat="server" />
</div>
</form>
</body>
</html>

Kt xut ca chng trnh

v d trn css c s dng ti kiu ca cc thnh phn html, bi v iu khin


asp.net a ra m html khi trnh duyt ln p dng css cho cc iu khin ca aspx phi s
dng vi th ca HTML, nh trog v d trn c hai iu khin TextBox v Button c a ra
m HTML l th <imput>.

http://www.ebook.edu.vn

135

a nhiu CSS vo 1 Themes


Khi bn mun a nhiu css vo 1 th mc themes, v d bn to ra hai file css l
ThemeA.css v ThemesB.css th khi s dng bn phi dng c php:

<link href=App_Themes/Simple/ThemeA.css type=text/css rel=stylesheet />


<link href=App_Themes/Simple/ThemeB.css type=text/css rel=stylesheet />

Chng 7 xy dng v s dng cc iu khin do ngi dng to ra


Mt webcontrol cho php bn xy dng nhng control mi t nhng control ca asp.net, bn c
th d dng m rng ASPNET Framework t nhng control do mnh to ra.
Vic thao tc vi webcontrol th hu ht l ging vi aspx, s dng webcontrol trn trang aspx
bn phi ng k n trc khi s dng vi ch dn <%@ Register %> v d
<%@ Register TagPrefix="main" TagName="cal" Src="~/Caculator.ascx" %>

TagPrefix: Ch nh khng gian tn m bn mun kt hp usercontrol v trang hin ti


TagName: Ch nh tn m bn mun kt hp usercontrol v trang hin ti
Src: ch n ng dn ca control(.ascs)
V d 1: to mt webcontrol thc hin php tnh ton v s dng n trong 1 trang aspx

Code 1: Caculator.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Caculator.ascx.cs"
Inherits="Caculator" %>
<asp:Label ID="Label1" runat="server" Text="Nhp a:"></asp:Label>
<asp:TextBox ID="txta" runat="server"></asp:TextBox>
&nbsp;<asp:Label ID="Label2" runat="server" Text="Nhp b:"></asp:Label>
<asp:TextBox ID="txtb" runat="server"></asp:TextBox>
<hr />
<asp:Button ID="btnsum" OnCommand="Calculator" CommandName="cal"
CommandArgument="sum" runat="server" Text="+" Width="45px" />

http://www.ebook.edu.vn

136

<asp:Button ID="btnsub" OnCommand="Calculator" CommandName="cal"


CommandArgument="sub" runat="server" Text="-" Width="45px" />
<asp:Button ID="btnmul" OnCommand="Calculator" CommandName="cal"
CommandArgument="mul" runat="server" Text="X" Width="45px" />
<asp:Button ID="btndiv" OnCommand="Calculator" CommandName="cal"
CommandArgument="div" runat="server" Text="/" Width="45px" />
<hr />
<asp:Label ID="lblresult" runat="server" Text="Label"></asp:Label>
<hr />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txta" ErrorMessage="Bn phi nhp a"
Visible="False"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="txta" ErrorMessage="a phi l kiu nguyn"
MaximumValue="9999999" MinimumValue="0" Type="Integer"
Visible="False"></asp:RangeValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="txtb" ErrorMessage="Bn phi nhp b"
Visible="False"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="RangeValidator2" runat="server"
ControlToValidate="txtb" ErrorMessage="a phi l kiu nguyn"
MaximumValue="9999999" MinimumValue="0" Type="Integer"
Visible="False"></asp:RangeValidator>
<p>
&nbsp;</p>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />

Code 2 Caculator.ascx.cs
using System;
public partial class Caculator : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)

http://www.ebook.edu.vn

137

{
}
protected void Calculator(object sender, CommandEventArgs e)
{
if (e.CommandName == "cal")
{
switch (e.CommandArgument.ToString())
{
case "sum":
lblresult.Text = Convert.ToString(int.Parse(txta.Text) +
int.Parse(txtb.Text));
break;
case "sub":
lblresult.Text = Convert.ToString(int.Parse(txta.Text) int.Parse(txtb.Text));
break;
case "mul":
lblresult.Text = Convert.ToString(int.Parse(txta.Text) *
int.Parse(txtb.Text));
break;
case "div":
{
if (int.Parse(txtb.Text) != 0)
lblresult.Text =
Convert.ToString(int.Parse(txta.Text) / int.Parse(txtb.Text));
}
break;
default:
//
break;

http://www.ebook.edu.vn

138

}
}
}
}

Code 3: Default.aspx
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="_Default" %>

CodeFile="Default.aspx.cs"

<%@ Register TagPrefix="main" TagName="cal" Src="~/Caculator.ascx" %>

<!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>Su dung Webcontrol</title>
<style type="text/css">
html{ background-color:#e5e5e5}
.divmain{ background-color:White; margin:15px; padding:15px; top:30px;
left:150px; position:absolute;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<div class="divmain">
<main:cal ID="maincal" runat="server" />
</div>
</div>
</form>
</body>

http://www.ebook.edu.vn

139

</html>

S dng ch dn Reference
Khi bn load 1 Usercontrol vi phng thc Page.LoadControl(), UserControl c tr v nh
mt thc th ca lp System.Web.UI.WebControl. c ngha l bao gm tt c cc thuc tnh tu
bin, thuc tnh ny khng c sn nh vi trng hp Load UserControl ng.
Nu bn s dng Load UserControl ng bn cn p kiu ca UserControl v ng kiu trc khi
s dng cc thuc tn. ly mt tham chiu ti mt Usercontrol bn cn phi s dng ch dn
<%@ Reference %>
V d: bn mun thm d kin ca mi ngi xem h tng s dng ngn ng asp c bn hay
ngn ng asp.net ? V tu thuc vo mi ngi h s chn asp hay aspnet a ra hin th mt
UserControl.

Chng 8 iu khin ADO.NET


Hu ht ng dng hay cc website u cn phi c c s d liu, lu tr d liu, x
l thng tin v a ra cc bo co, h tr tm kim
Khi d liu tr thnh trung tm ca ng dng th cung cp cc chc nng ti ngi
dng ph thuc vo kh nng thao tc d liu, vn m ngi thit k v ngi xy dng
ng dng quan tm khi s dng d liu l:

Lu d liu tp trung

m bo ton vn d liu

m bo kh nng truy xut ng thi ca nhiu ngi dng trn d liu

m bo thi gian hi p ngn cho mi ngi dng

Bo mt d liu

Trao i d liu gia cc h thng khc nhau

Nhng vn ny c gii quyt da vo kh nng ca cc h qun tr c s d


liu(HQT CSDL) v cc phn mm x l d liu do HQL CSDL cung cp. Net truy xut d liu
qua ADO.NET, c im chnh ca ADO.NET l kh nng lm vic vi d liu khng kt ni,
d liu c lu tr trong b nh nh mt csdl thu nh gi l dataset, nhm tng tc tnh
ton, x l tnh ton v hn ch s dng ti nguyn trn Database Server. c im quan
trng th 2 l kh nng x l d liu chun XML, d liu dng XMl c th trao i gia bt

http://www.ebook.edu.vn

140

k h thng no nn ng dng ca bn s c nhiu kh nng lm vic vi nhiu ng dng


khc.

I. Kin trc ADO .Net

Hnh 1

Kin trc ADO.NET c th chia lm 2 phn chnh:

- Managed Provider Component: bao gm cc i tng nh


DataAdapter, DataReader, gi nhim v lm vic trc tip vi d
liu nh database, file,
- Content Component: bao gm cc i tng nh DataSet,
DataTable, i din cho d liu thc s cn lm vic. DataReader l
i tng mi, gip truy cp d liu nhanh chng nhng forward-only
v read-only ging nh ADO RecordSet s dng Server cursor,
OpenFowardOnly v LockReadOnly.
DataSet cng l mt i tng mi, khng ch l d liu, DataSet c
th coi l mt bn sao gn nh ca CSDL trong b nh vi nhiu bng
v cc mi quan h.
DataAdapter l i tng kt ni gia DataSet v CSDL, n bao gm 2
i tng Connection v Command cung cp d liu cho DataSet
cng nh cp nht d liu t DataSet xung CSDL.

Trc khi i vo hc c th cc i tng ca ADO.NET chng ta cng xem qua mt v


d HelloWorld vi ADO.NET qua bn s thy c cng vic cn thc hin khi thao tc vi
database( v d ny mnh dng vi SQLExpress).

http://www.ebook.edu.vn

141

lm v d ny bn thc hin theo cc bc sau:

bc 1. Nhn chut phi vo th mc App_Data chn new Item, Ca s Add New


Item hin ra bn chn SqlDatabase nh hnh 1 sau

Hnh 2

bc 2. Nhp tn Database vo hp Name sau nhn Add.


Trong Solution Explorer s thm vo Database trong th mc App_Data.

Hnh 3

bc 3. to bng d liu cho Database.mdf


o

bc 3.1 bn click p chut vo Datatabase.mdf -> Server Explorer hin ra


nh sau:

http://www.ebook.edu.vn

142

Hnh 4
o

bc 3.2 bn nhn chut phi vo Tables v chn Add New Table

Hnh 5
Trong mn hnh ca VS s hin ra nh hnh 6 v bn thao tc to cc trng d liu
nh thao tc vi Access hay MSSQL 2000/2005

http://www.ebook.edu.vn

143

Hnh 6

bc 4.Vit code cho Hello.aspx.cs

using System;
using System.Data;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
//chui kt ni n ngun d liu

http://www.ebook.edu.vn

144

string driver = "Data


Source=(local)\\SQLEXPRESS;AttachDbFilename=|DataDirectory|Database.mdf;Integr
ated Security=True;User Instance=True";
//i tng kt ni ti c s d liu
SqlConnection sqlconn = new SqlConnection(driver);
//Command iu khin truy vn sql
SqlCommand sqlcom = sqlconn.CreateCommand();
sqlcom.CommandText = "select sTitle from tblHello where pkHelloID=1";
//m kt ni d liu
sqlconn.Open();
//ly v chui gi tr trong c s d liu
string result = (string)sqlcom.ExecuteScalar();
//ng kt ni
sqlconn.Close();
//in gi tr ra mn hnh
Response.Write(result);
}
}
C bn cc bc thc hin vi database

bc 1: Ti kt ni

bc 2: To lnh iu khin truy vn SQL

bc 3:M kt ni d liu

bc 4: thc thi lnh

bc 5: ng kt ni

bc 6: in kt qu

II. i tng Connection


Kt ni c s d liu SQLServer
Bn cn nhp khu lp SqlClient
using System.Data.SqlClient;

http://www.ebook.edu.vn

145

Khai bo v khi to:


SqlConnection sqlcon;
string driver="server=localhost; UID=sa; PWD=; database=name_database";
sqlcon=new Sqlconnection();
sqlcon.ConnectionString=driver;
Driver l chui kt ni n c s d liu trong trng hp ny mnh kt ni vi
sqlserver 2000/2005
Kt ni vi c s d liu Access
Bn cn nhp khu lp OleDb
using System.Data.OleDb;
OleDbConnection oleconn;
string driver = "Provider=Microsoft.jet.OLEDB.4.0; Data
Source=duongdan_tendata";
oleconn = new OleDbConnection();
oleconn.ConnectionString = driver;

1. Thuc tnh:
ConnectString: cha ng chui kt ni ti c s d liu
Database: Cha ng tn c s d liu trong chui kt ni ConnectString trn v bn
c th thay i c s d liu trong lc thc thi bng phng thc ChangeDataBase:

Sqlconn.ChangeDatabase(name_database_thaydoi);
Server: tn my ch bn tr ti
Connect Timeout: s thi gian(tnh bng giy) ch kt ni d liu mc nh l 15giy,
nu trong khong thi gian ny m vn cha kt ni xong mt li Connect Timeout c a
ra.
State: tr v trng thi ca i tng SqlConnection: bn c th kim tra trng thi
ca State nh sau
Response.Write(sqlconn.State)

2. Phng thc ca i tng Connection

http://www.ebook.edu.vn

146

Cc phng thc ca i tng Connection


Open: cho php m d liu vi cc thuc tnh khai bo trong ConnectString
Close: ng c s d liu ang m
CreateCommand: phng thc cho php gn hay tr v mt i tng Command ng
vi i tng Connection, nh v d HelloWorld
SqlConnection sqlconn = new SqlConnection(driver);
SqlCommand sqlcom = sqlconn.CreateCommand();
sqlcom.CommandText = "select sTitle from tblHello where pkHelloID=1";
BeginTransaction: Phng thc ny khai bo bt u mt chuyn tc, kt thc
chuyn tc bn dng Table Commit
Rollback: trong trng hp c li trong qu trnh thc thi bn c th s dng phng
thc Rollback hu b cc chuyn tc thc hin.
Dispose: dng hu b hay gii phng i tng Connection ang s dng

III. i tng SqlCommand


Khai bo v khi to i tng
Cch 1:
SqlCommand sqlcom;
sqlcom=new SqlCommand(ssql,sqlconn)
cch 2:
SqlCommand sqlcom = new SqlCommand();
sqlcom.Connection = sqlconn;
sqlcom.CommandType = CommandType.Text;
sqlcom.CommandText = "select sTitle from tblHello where pkHelloID=1";
Phng thc
- ExcuteReader: dng thc thi c c s d liu t bng c s d liu
- ExcuteNoneQuery: Dng thc thi cc pht biu T-Sql nh: Insert, Update, Delete,
Create,

http://www.ebook.edu.vn

147

- ExcuteScalar: tr v t pht bit SQL dng Select ch c mt ct mt hng.

IV. i tng SqlDataReader


i tng ny c net cung cp c d liu t bng c s d liu, n l i tng ch
phc v thao tc c d liu(Read only). Trong khi truy xut d liu n s gi kt ni lin tc vi
database(hng kt ni)
Khai bo v khi to i tng
SqlDataReader sqlreader;
sqlreader = sqlcom.ExecuteReader();

V. i tng DataAdapter
OleDataAdapter c xem nh b c d liu t c s dliu ngun v in chng vo i
tng DataSet hay DataTable
Khai bo, khi to v gii phng i tng.
string ssql;
Khai bo i tng
Dim sqlcom As SqlCommand
Dim sqlconn As SqlConnection
Dim sqladapter As SqlDataAdapter
sqlconn.Open();
cch 1.
sqladapter = New OleDbDataAdapter(ssql, sqlconn)
sqlcom = New SqlCommand(ssql, sqlconn)
cch 2.
sqladapter = new SqlDataAdapter(sqlcom);
Gii phng i tng
sqladapter.Dispose();

Thuc tnh:

http://www.ebook.edu.vn

148

Cc thuc tnh bao gm SelectCommand, InsertCommand, UpdateCommand,


DeleteCommand: thc hin cc thao tc select, insert, update, delete d liu
Phng thc:
Fill: Phng thc thc thi cu lnh select trong sql ri in kt qu cho DataSet hoc
Datatable.
Update: gi lnh cph nht cc thay i vo d liu ln cc d liu ngun
in d liu t Adapter vo DataSet
Dataset l mt thng cha d liu khng kt ni
public static DataSet Filldataset(string ssql)
{
DataSet dataset = new DataSet();
opendata();
try
{
sqladapter = new SqlDataAdapter(ssql, sqlconn);
sqladapter.Fill(dataset);
sqladapter.Dispose();
}
catch (Exception exp)
{
closedata();
System.Web.HttpContext.Current.Response.Write(exp.ToString());
}
closedata();
return dataset;
}

in d liu vo DataTable
public static DataTable FillDatatable(string ssql)

http://www.ebook.edu.vn

149

{
opendata();
DataTable datatable = new DataTable();
try
{
sqladapter = new SqlDataAdapter(ssql, sqlconn);
sqladapter.Fill(datatable);
sqladapter.Dispose();
}
finally
{
closedata();
}
closedata();
return datatable;
}

VI. i tng Dataset v DataTable


L thnh phn chnh ca kin trc khng kt ni c s d liu, c dng nm gi d
liu ca mi c s d liu v cho php thay i d liu bn trong i tng ny sau cp
nht tr li c s d liu ngun bng phng thc Update ca i tng DataAdapter
Khi to
DataSet dataset = new DataSet();
DataSet dataset = new DataSet("Mydataset");

Thuc tnh Tables, dataset c dng cha danh sch cc i tng DataTable
V d:
private void button1_Click(object sender, EventArgs e)
{

http://www.ebook.edu.vn

150

string strQuery = "select * from tblEmployees";


DataSet dataSet = new DataSet("Employees");
try
{
SqlDataAdapter sqlDataAdapter = new
SqlDataAdapter(strQuery, Connection.sqlConnection);
sqlDataAdapter.Fill(dataSet);
sqlDataAdapter.Dispose();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
this.dataGridView1.DataSource = dataSet.Tables[0];
//lay ve ten cua doi tuong dataset
label1.Text ="DataSetName: " + dataSet.DataSetName ;
}
private void button2_Click(object sender, EventArgs e)
{
//khai bao phat bieu sql 1
string strQuery = "select * from tblEmployees";
DataSet dataSet = new DataSet("Employees");
try
{
SqlDataAdapter sqlDataAdapter = new
SqlDataAdapter(strQuery, Connection.sqlConnection);
sqlDataAdapter.Fill(dataSet);
//khai bao phat bieu sql 2

http://www.ebook.edu.vn

151

strQuery = "select * from tblContracts";


sqlDataAdapter = new
SqlDataAdapter(strQuery, Connection.sqlConnection);
DataTable dataTable = new DataTable();
sqlDataAdapter.Fill(dataTable);
dataSet.Tables.Add(dataTable);
sqlDataAdapter.Dispose();
string dataTableName="";
foreach(DataTable dt in dataSet.Tables)
{
dataTableName += dt.TableName + " ";
}
label1.Text = "Number of tables: " + dataTableName ;
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
this.dataGridView1.DataSource = dataSet.Tables[1] ;
}

Phuong thuc Add, Remove


DataSet dataset=new DataSet();
DataTable datatable=new DataTable(datatablename);
dataset.Tables.Add(datatable);
dataset.Tables.Remove(datatable);
xoa voi datatable duoc dat tn
dataset.Tables.Remove(datatablename);
http://www.ebook.edu.vn

152

dataset.Tables.RemoveAt(0);
phng thc Clear loi b tt c cc i tng trong DataTable
dataset.Tables.Clear();
De dem so dong du lieu trong bang ta co the thuc hien
int sodong=dataset.Tables[0].Rows.Count;

2. i tng DataTable
private void button1_Click(object sender, EventArgs e)
{
string strQuery = "select top 10 * from tblEmployees";
//khoi tao doi tuong DataTable
dataTable = new DataTable("Employees");
try
{
SqlDataAdapter sqlDataAdapter = new
SqlDataAdapter(strQuery, Connection.sqlConnection);
//dien du lieu vao datatable
sqlDataAdapter.Fill(dataTable);
sqlDataAdapter.Dispose();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
//gan du lieu va dataGrid voi thuoc tinh DataSource
this.dataGridView1.DataSource = dataTable;
label1.Text= dataTable.TableName ;
}

http://www.ebook.edu.vn

153

// thuoc tinh DataRow tra ve cac mau tin dang chua trong doi tuong DataTable
private void button2_Click(object sender, EventArgs e)
{
if (dataTable != null)
{
string name = "";
foreach (DataRow dataRow in dataTable.Rows)
{
name += Convert.ToString(dataRow[1]) + "\n";
}
label1.Text = name;
}
}
//thuoc tinh Columns tra ve tap doi tuong DataColumn bao gom danh sach cot du
lieu cua bang chua trong doi tuong DataTable
private void button3_Click(object sender, EventArgs e)
{
if (dataTable != null)
{
string name = "";
foreach (DataColumn dataColumn in dataTable.Columns)
{
name += Convert.ToString(dataColumn.ColumnName) + "\n";
}
label1.Text = name;
}
}

V d chng ta s ng dng 3 di tng trn vo vic, cp nht v hin th d liu cho


bng sn phm
http://www.ebook.edu.vn

154

Bc 1: to bng c s d liu
V d chng ta c mt bng d liu tblIntrodure gm cc trng:
pkIntrodureID

(int)

sTitle

(nvarchar(300)

sSummary

(nText)

iContent

(nText)

iPosition

(int)

Bc 2: to th tc StoreProcedure

ta to ra 3 th tc sql cho bng gii thiu ca ta nh sau


spIntrodure_insert - Th tc thm mi d liu
Create PROCEDURE spIntrodure_insert
@sTitle nvarchar(100),
@sSummary ntext,
@sContent ntext,
@iPosition int
AS
insert into tblIntrodure(sTitle, sSummary, sContent, iPosition)
values(@sTitle, @sSummary, @sContent, @iPosition)
GO
spIntrodure_edit - Th tc sa d liu
Create PROCEDURE spIntrodure_edit
@pkIntrodureID int,
@sTitle nvarchar(100),
@sSummary ntext,
@sContent ntext,

http://www.ebook.edu.vn

155

@iPosition int
AS
update tblIntrodure set
sTitle=@sTitle, sSummary=@sSummary, sContent=@sContent,
iPosition=@iPosition
where pkIntrodureID=@pkIntrodureID
GO
spIntrodure_deletebyID - Th tc xo d liu
Create PROCEDURE spIntrodure_deletebyID
@pkIntrodureID int
AS
delete from tblIntrodure where pkIntrodureID=@pkIntrodureID
GO

Ch : trn l cch to 3 th tc theo c php ca MSSQL nu bn to th tc SQL trong


VS th t kho Create s chuyn thnh Alter v GO chuyn thnh Return
Bc 3: To cc lp(nm trong th mc App_Code)
IntrodureInfo.cs
using System;

namespace iTechPro.Modules.Introdure
{
public class IntrodureInfo
{
int _pkIntrodureID;
public int pkIntrodureID
{
get { return _pkIntrodureID; }
set { _pkIntrodureID = value; }

http://www.ebook.edu.vn

156

}
string _sTitle;
public string sTitle
{
get { return _sTitle; }
set { _sTitle = value; }
}
string _sImage;
public string sImage
{
get { return _sImage; }
set { _sImage = value; }
}

string _sSumary;
public string sSumary
{
get { return _sSumary; }
set { _sSumary = value; }
}
string _sComment;
public string sComment
{
get { return _sComment; }
set { _sComment = value; }
}
int _iPosition;
public int iPosition

http://www.ebook.edu.vn

157

{
get { return _iPosition; }
set { _iPosition = value; }
}
}
}
IntrodureDB.cs (cha tt c phng thc x l v ly d liu cho bng tblIntrodure)
using System;
using System.Data;
using System.Data.SqlClient;
using iTechPro.Library;
namespace iTechPro.Modules.Introdure
{
public class IntrodureDB : ExcuteDataHelper
{
public IntrodureDB()
{
//
// TODO: Add constructor logic here
//
}
public static void Delete(string _pkIntrodureID)
{
string[] parameters = new string[] { "@pkIntrodureID"};
string[] values = new string[] { _pkIntrodureID};
executeData("spIntrodure_deletebyID", parameters, values);
}

http://www.ebook.edu.vn

158

public static void Insert(IntrodureInfo _introdure)


{
string[] parameters = new string[7] { "@sTitle", "@sImage",
"@sSumary", "@sComment", "@sPage", "@sLang", "@iPosition" };
string[] values = new string[7] { _introdure.sTitle,
_introdure.sImage, _introdure.sSumary, _introdure.sComment, _introdure.sPage,
_introdure.sLang, _introdure.iPosition.ToString() };
executeData("spIntrodure_insert", parameters, values);
}
public static void Update(IntrodureInfo _introdure)
{
string[] parameters = new string[7] { "@pkIntrodureID" ,"@sTitle",
"@sImage", "@sSumary", "@sComment", "@sPage", "@iPosition" };
string[] values = new string[7] {
_introdure.pkIntrodureID.ToString(), _introdure.sTitle, _introdure.sImage,
_introdure.sSumary, _introdure.sComment, _introdure.sPage,
_introdure.iPosition.ToString() };
executeData("spIntrodure_edit", parameters, values);
}
public static void UpdateIndex(string _pkIntrodureID, string _giatri)
{
string ssql = "update tblIntrodure set iPosition=" + _giatri + "
where pkIntrodureID=" + _pkIntrodureID;
executeData(ssql);
}
public static IntrodureInfo Getinfo(string _pkIntrodureID)
{
DataTable mydata =
iTechProData.FillDatatable("spIntrodure_selectbyID", "@pkIntrodureID",
_pkIntrodureID);
IntrodureInfo _introdure = new IntrodureInfo(); ;
_introdure.sTitle = mydata.Rows[0]["sTitle"].ToString();
_introdure.sImage = mydata.Rows[0]["sImage"].ToString();

http://www.ebook.edu.vn

159

_introdure.sSumary = mydata.Rows[0]["sSumary"].ToString();
_introdure.sComment = mydata.Rows[0]["sComment"].ToString();
_introdure.sPage = mydata.Rows[0]["sPage"].ToString();
_introdure.sLang = mydata.Rows[0]["sLang"].ToString();
_introdure.iPosition =
int.Parse(mydata.Rows[0]["iPosition"].ToString());
return _introdure;
}
}
}

Ti lp IntrodureDB ny chng ta s k tha cc phng thc thc thi d liu t lp


ExcuteDataHelper.cs
Lp ExcuteDataHelper.cs
using System;
using System.Data;
using System.Data.SqlClient;

namespace iTechPro.Library
{
public class ExcuteDataHelper : iTechProData
{
//phuong thuc thuc thi du lieu(them moi, chinh sua, xoa) khi dua vao
mot tham so sql
#region executeData(string sql)"Thc thi d liu"
public static void executeData(string sql)
{
opendata();
sqlcom = new SqlCommand(sql, sqlconn);
try

http://www.ebook.edu.vn

160

{
sqlcom.ExecuteNonQuery();
closedata();
}
catch (Exception exp)
{
closedata();
HttpContext.Current.Response.Write(sql + "<br/>");
HttpContext.Current.Response.Write("C li trong qu trnh
thc thi " + exp.ToString());
}
}
#endregion
//phuong thuc thuc thi du lieu voi tham so dua vao
#region executeData(string store, string[] Parameter, string[] Values)
public static void executeData(string store, string[] Parameter,
string[] Values)
{
opendata();
sqlcom = new SqlCommand();
sqlcom.CommandText = store;
sqlcom.Connection = sqlconn;
sqlcom.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < Parameter.Length; i++)
{
sqlcom.Parameters.AddWithValue(Parameter[i], Values[i]);
}
try
{

http://www.ebook.edu.vn

161

sqlcom.ExecuteNonQuery();
closedata();
}
catch (DataException exp)
{
sqlconn.Close();
HttpContext.Current.Response.Write(exp.ToString());
}
}
#endregion
}
}

Trong lp ny chng ta c 2 phng thc thc thi d liu c th l thm mi, chnh sa
hay xo d liu void executeData(string sql) cho php bn thc thi d liu vi mt chui sql a
vo cn executeData(string store, string[] Parameter, string[] Values) s thc thi d liu vi hm
th tc t SQL truyn vo vi hai mng gi tr v tham s v lp ny ny tha k t lp dn xut
iTechProData.cs
Lp iTechProData.cs
using System;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;

namespace iTechPro.Library
{
public class iTechProData
{
#region khai bao bien
protected string ssql;

http://www.ebook.edu.vn

162

protected static SqlConnection sqlconn;


protected static SqlCommand sqlcom;
protected static SqlDataAdapter sqladapter;
protected static DataSet mydata;
protected static SqlDataReader sqlreader;
#endregion
//phuong thuc mo du lieu
#region opendata() "M d liu"
public static void opendata()
{
//c chui kt ni t trong file web.config
System.Configuration.AppSettingsReader settingsReader = new
AppSettingsReader();
string driver = (string)settingsReader.GetValue("hcubiudata",
typeof(String));
try
{
sqlconn = new SqlConnection(driver);
if (sqlconn.State != ConnectionState.Open)
{
sqlconn.Open();
}
}
catch (Exception exp)
{
HttpContext.Current.Response.Write("Li m d liu" +
exp.ToString());
}
}
#endregion

http://www.ebook.edu.vn

163

//phuong thuc dong du lieu


#region closedata() "ng d liu"
public static void closedata()
{
if (sqlconn.State != ConnectionState.Closed)
{
sqlconn.Close();
sqlconn.Dispose();
}
}
#endregion
// in d liu vo DataTable t mt th tc trong Database
public static DataTable FillDatatable(string store,string _thamso,
string _giatri)
{
opendata();
DataTable datatable = new DataTable();
sqlcom = new SqlCommand();
sqlcom.CommandText = store;
sqlcom.Connection = sqlconn;
sqlcom.Parameters.AddWithValue(_thamso, _giatri);
sqlcom.CommandType = CommandType.StoredProcedure;
try
{
sqladapter = new SqlDataAdapter(sqlcom);
sqladapter.Fill(datatable);
sqladapter.Dispose();
}

http://www.ebook.edu.vn

164

finally
{
closedata();
}
return datatable;
}
}
}

Trong lp trn bn thy c 2 i tng data mi l DataAdapter v DataTable chng ta


s hc k hn trong phn sau trong v d ny cc bn ch cn hiu qua l DataAdapter l b c
d liu t ngun d liu, v DataTable l i tng lu tr d liu khng kt ni, n nh mt
bng tm cha d liu v n ko cn bit d liu t ngun no.
Bc 4: To giao din s dng

Code: adminIntrodure.aspx
<%@ Page Language="C#" MasterPageFile="~/admin.master" AutoEventWireup="true"
CodeFile="adminIntrodure.aspx.cs" Inherits="Desktop_Introdure_adminIntrodure"
Title="Admin - Introdure" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
<!--Trinh bay du lieu-->
<table cellpadding="0" cellspacing="0" width="100%" style="padding-right:3px;
height:390px">
<tr>
<td style="padding:15px 15px 15px 15px" valign="top">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="left" class="hcubiufontlarger">Gii thiu</td>
</tr>
<tr><td style="height:15px;"></td></tr>
<!--start them moi-->
<tr>

http://www.ebook.edu.vn

165

<td align="left">
<asp:Panel ID="panelupdate" Width="100%" runat="Server"
Visible="false">
<table width="100%" style="padding-left:20px;">
<tr>
<td colspan="2"><b>Cp nht thng tin gii thiu</b></td>
</tr>
<tr><td style="width: 78px; height:15px;"></td></tr>
<tr>
<td align="left" style="width: 78px">Tiu </td>
<td align="left"><input type="text" name="txtTitle"
id="txtTitle" runat="server" style="width: 329px" /></td>
</tr>
<tr>
<td valign="middle" align="left" style="width: 78px">Tm
tt</td>
<td align="left">
<asp:TextBox ID="txtTomtat" runat="server"
TextMode="MultiLine"></asp:TextBox>
</td>
</tr>
<tr>
<td align="left" style="height: 88px; width: 78px;">Ni
dung</td>
<td align="left" style="height: 88px">
<asp:TextBox ID="txtNoidung" runat="server"
TextMode="MultiLine" />
</td>
</tr>
<tr>
<td align="left">V tr</td>

http://www.ebook.edu.vn

166

<td align="left">
<asp:TextBox ID="txtvitri" runat="server"
Text="1"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="txtvitri"
ErrorMessage="V tr phi l kiu s" MaximumValue="100"
MinimumValue="0" Type="Integer"></asp:RangeValidator></td>
</tr>
<tr><td style="width: 78px; height:15px;"></td></tr>
<tr>
<td colspan="2" align="left">
<asp:Button ID="btnaccept" runat="server" Text="Ghi"
Width="100px" OnClick="btnaccept_Click"/>
<asp:Button ID="btcancel" runat="server" Text="B qua"
Width="100px" OnClick="btcancel_Click" />
<asp:Label ID="lblidintro" runat="server" Text=""
Visible="false"></asp:Label></td>
</tr>
</table>
</asp:Panel>
<!--End them moi-->
</td>
</tr>
<tr>
<td

style="height:5px;"></td>

</tr>
<asp:Panel ID="panelview" runat="server">
<tr>
<td align="left" style="padding-bottom:3px;"><asp:LinkButton
ID="btnaddnew" CssClass="linkbutton" runat="server" Text="Thm mi"
OnClick="btnaddnew_Click" /></td>
</tr>

http://www.ebook.edu.vn

167

<tr>
<td valign="top" align="left">
<asp:DataGrid id="gridintro" runat="server"
BorderColor="black"
Width="100%"
BorderWidth="1"
CellPadding="3"
Font-Size="10pt"
HeaderStyle-BackColor="#aaaadd"
OnItemCommand="gridintro_OnItemCommand"
AutoGenerateColumns="false">
<HeaderStyle BackColor="#AAAADD"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderStyle-HorizontalAlign="Center" ItemStyleHorizontalAlign="Center" HeaderStyle-Width="80px" HeaderText="STT">
<ItemTemplate>
<%#Container.ItemIndex +1 %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn HeaderStyle-HorizontalAlign="Left" ItemStyleHorizontalAlign="Left" DataField="sTitle" ReadOnly="true" HeaderText="Tiu
"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="V tr" ItemStyleHorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" HeaderStyleWidth="100px" ItemStyle-Width="100px" ItemStyle-Height="24px" >
<ItemTemplate>
<asp:TextBox ID="txtVitri" Width="39px" runat="server"
Text='<%#Eval("iPosition") %>' />
</ItemTemplate>
</asp:TemplateColumn>

http://www.ebook.edu.vn

168

<asp:TemplateColumn HeaderText="Chnh sa" ItemStyleHorizontalAlign="Center" HeaderStyle-Width="80px" HeaderStyleHorizontalAlign="Center" ItemStyle-Width="100px" ItemStyle-Height="24px" >


<ItemTemplate>
<asp:LinkButton ID ="Edit" CommandArgument
='<%#DataBinder.Eval(Container,"DataItem.pkIntrodureID")%>' runat ="server"
CommandName="Edit" Text ="Edit"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Xa" HeaderStyleHorizontalAlign="Center" HeaderStyle-Width="80px" ItemStyleHorizontalAlign="Center" ItemStyle-Width="100px" ItemStyle-Height="24px" >
<ItemTemplate>
<asp:LinkButton ID ="Delete" CommandArgument
='<%#DataBinder.Eval(Container,"DataItem.pkIntrodureID")%>' runat ="server"
CommandName="Delete" Text ="Delete"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</td>
</tr>
<tr>
<td align="right" style="padding-top:3px;">
<asp:Label ID="lblthongbao" runat="server"></asp:Label>
<asp:LinkButton ID="lbncapnhatvitri" CssClass="linkbutton" runat="server"
Text="Cp nht v tr" OnClick="lbncapnhatvitri_Click" />
</td>
</tr>
</asp:Panel>
</table>
</td>
</tr>

http://www.ebook.edu.vn

169

<tr><td style="height:30px;"></td></tr>
</table>
</asp:Content>

Code adminIntrodure.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using iTechPro.Library;
using iTechPro.Modules.Introdure;
public partial class Desktop_Introdure_adminIntrodure : System.Web.UI.Page
{
string ssql;
void Loaddatagrid()
{
ssql = "select pkIntrodureID,sTitle,iPosition from tblIntrodure";
DatagridHelper.fill_datagrid(gridintro, ssql, "pkIntrodureID");
foreach (DataGridItem item in this.gridintro.Items)
{
LinkButton lbn =
(LinkButton)this.gridintro.Items[item.ItemIndex].FindControl("Delete");
lbn.Attributes.Add("onclick", "javascript:return confirm('Bn c
chc chn xo mc gii thiu ny')");
}

http://www.ebook.edu.vn

170

}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Loaddatagrid();
}
}
private IntrodureInfo Getcontent()
{
IntrodureInfo intro = new IntrodureInfo();
try
{
intro.pkIntrodureID = int.Parse(lblidintro.Text);
}
catch
{
}
intro.sTitle = txtTitle.Value;
intro.sSumary = txtTomtat.Text;
intro.sContent = txtNoidung.Text;
intro.iPosition = int.Parse(txtvitri.Text);
return intro;
}
protected void btnaddnew_Click(object sender, EventArgs e)
{
panelupdate.Visible = true;
panelview.Visible = false;

http://www.ebook.edu.vn

171

txtNoidung.Text = "";
txtTitle.Value = "";
this.txtTomtat.Text = "";
txtvitri.Text = "1";
btnaccept.Text = "Ghi";
}
protected void gridintro_OnItemCommand(object sender,
DataGridCommandEventArgs e)
{
lblidintro.Text = e.CommandArgument.ToString();
if (e.CommandName == "Edit")
{
IntrodureInfo introdure = IntrodureDB.Getinfo(lblidintro.Text);
txtTitle.Value = introdure.sTitle;
txtTomtat.Text = introdure.sSumary;
txtvitri.Text = introdure.iPosition.ToString();
txtNoidung.Text = introdure.sContent;
btnaccept.Text = "Cp nht";
panelupdate.Visible = true;
panelview.Visible = false;
}
else
{
IntrodureDB.Delete(lblidintro.Text);
Loaddatagrid();
}
}
protected void btnaccept_Click(object sender, EventArgs e)

http://www.ebook.edu.vn

172

{
IntrodureInfo introdure = Getcontent();
if (btnaccept.Text == "Ghi")
{
IntrodureDB.Insert(introdure);
}
else
{
IntrodureDB.Update(introdure);
}
panelupdate.Visible = false;
panelview.Visible = true;
Loaddatagrid();
}
protected void btcancel_Click(object sender, EventArgs e)
{
panelview.Visible = true;
panelupdate.Visible = false;
Loaddatagrid();
}
protected void lbncapnhatvitri_Click(object sender, EventArgs e)
{
foreach (DataGridItem item in gridintro.Items)
{
TextBox txt =
(TextBox)this.gridintro.Items[item.ItemIndex].FindControl("txtVitri");

IntrodureDB.UpdateIndex(gridintro.DataKeys[item.ItemIndex].ToString(),
txt.Text);

http://www.ebook.edu.vn

173

}
}
}

Trong on m trn c s dng DataGrid bn s c hc n k hn trong phn sau, by


gi bn c coi n nh l mt cng c hin th d liu.

Chng 9. S dng ListControl


Trong chng ny cc bn s c hc cc iu khin trnh by danh sch nh
DropDownList, RadioButtonList v kt thc chng cc bn s c hc 1 cch chi tit
s dng cc List Control ny to mt Module bnh chn cho trang web ca bn
im chung cho tt c cc iu khin danh sch l n gm 3 thuc tnh chnh
Bn c th a d liu vo DropDownList t mt mng danh sch hoc d liu t mt
c s d liu:

Thuc tnh quan trng


DataSource: ch n ngun d liu
DataTextField: trng d liu c hin th
DataValueField: trng d liu thit lp gi tr vi tng ng vi Text hin th
Phng thc OnSelectedIndexChanged
Xy ra khi ngi dng thay i la chn phn t trn DropDownList

I. iu khin DropdownList
ln

Cho php hin th mt danh sch cc la chn, ngui s dng ch chn mt la chn 1

V d:
Bn to mt lp phc v a d liu vo DropDownList nh sau:
s dng lp ny bn to 1 trang aspx v trong phn code behind bn nhp khu gi
iTechPro.Library, trong trong s kin Load ca trang bn gi nh sau

http://www.ebook.edu.vn

174

Code 9.1
protected void Page_Load(object sender, EventArgs e)
{
DropdownListHelper.Fillcombobox(DropDownList1, "tblIntrodure",
"sTitle", "pkIntrodureID");
}
Kt qu ca chng trnh s nh sau:

Hnh 1
s dng s kin OnSelectedIndexchanged bn cn thm vo cho DropDownList
thuc tnh AutoPostBack v thit lp cho n gi tr l true
Code chi tit

Trang dropdownlist.aspx
Code 9.2
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="_Default" %>

CodeFile="dropdownlist.aspx.cs"

<!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>DropDownList</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList AutoPostBack="true"
OnSelectedIndexChanged="DropDownList1_Changed" ID="DropDownList1"
runat="server">

http://www.ebook.edu.vn

175

</asp:DropDownList><hr />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>

Trang dropdownlist.aspx.cs
Code 9.3
using System;
using iTechPro.Library;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DropdownListHelper.Fillcombobox(DropDownList1, "tblIntrodure",
"sTitle", "pkIntrodureID");
}
}
protected void DropDownList1_Changed(object sender, EventArgs e)
{
Label1.Text = "Text:" + DropDownList1.SelectedItem.Text + "<br>gi
tri:" + DropDownList1.SelectedValue.ToString();
}
}

II. S dng iu khin RadiobuttonList

http://www.ebook.edu.vn

176

iu khin RadioButtonList cho php hin th mt danh sch cc RadioButton m c th


sp xp theo hng ngang hay dc, ngi s dng c th chn mt trong cc Radiobutton
.
V d: khi chng ta cn thm d kin khch hng v mt vn g chng ta cn
to mt module bnh chn cho website ca chng ta.
Chng ta s thit lp 1 bng sau
bng tblSurveyAnswer
pkAnswerID

(int)

sContent

(nvarchar(100))

iVote

(int)

iPosition

(int)

chng ta s to mt trang radiobuttonlist.aspx


Code 9.4
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="radiobuttonlist.aspx.cs" Inherits="radiobuttonlist" %>

<!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>RadioButtonList</title>
<style type="Text/css">
body{background-color:#e5e5e5}
#navcontain{width:399px;Height:299px;Background-color:white;margin:0px
auto; padding:15px 15px 15px 15px;}
A:link{COLOR: #31659C; TEXT-DECORATION: none;}
A:visited{COLOR: #31659C; TEXT-DECORATION: none;}
A:active{COLOR: #FC8800; TEXT-DECORATION: none;}
A:hover{COLOR: #FC8800; TEXT-DECORATION: none;}

http://www.ebook.edu.vn

177

</style>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<b>Bn bit n iTechPro qua:</b><br />
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
</asp:RadioButtonList><hr />
<asp:LinkButton ID="lbnVote" OnClick="lbnVote_Click" Text="Vote"
runat="server" />
<hr />
Bn chn: <asp:Label runat="server" ID="lblResult" />
</div>
</form>
</body>
</html>

Trang radiobuttonlist.aspx.cs
Code 9.5
using System;
using iTechPro.Library;
public partial class radiobuttonlist : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ListControlHelper.fillRadioButtonList(RadioButtonList1,
"tblSurveyAnswer", "sContent", "pkAnswerID");

http://www.ebook.edu.vn

178

}
}
protected void lbnVote_Click(object sender, EventArgs e)
{
this.lblResult.Text = RadioButtonList1.SelectedItem.Text + "<br> v
gi tr ca n l:" + RadioButtonList1.SelectedItem.Value;
}
}
Bn thy Code 9.6 lp radiobuttonlist.aspx.cs c nhp khu gi iTechPro.Library c s
dng phng thc fillRadioButtonList t lp ListControlHelper vi 4 i s tng ng nh
code cui chng trnh
Kt xut ca chng trnh

Hnh 3

III. S dng iu khin ListBox


N l mt iu khin ging vi DropDownList nhng n s hin th mt danh sch trn
trang v chng ta c th la chn nhiu phn t mt lc vi thuc tnh selectionMode vi hai
gi tr l Singer v Multiple.
V d sau mnh s a ra vi mt ListBox nhiu la chn

Code 9.6 ListBox.aspx


http://www.ebook.edu.vn

179

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ListBox.aspx.cs"


Inherits="ListBox" %>

<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
iu khin ListBox<br />
<asp:ListBox SelectionMode="Multiple" ID="listbox1" runat="server"
/><br />
<asp:Button ID="btnChon" runat="server" Text="Chn"
OnClick="btnChon_Click" /><hr />
Bn chn: <asp:Label ID="lblresult" runat="server" />
</div>
</form>
</body>
</html>

Code 9.7 ListBox.aspx.cs


using System;
using System.Collections;
using System.Web;
using System.Web.UI.WebControls;
using iTechPro.Library;
public partial class ListBox : System.Web.UI.Page
{

http://www.ebook.edu.vn

180

protected void Page_Load(object sender, EventArgs e)


{
if(!IsPostBack)
ListControlHelper.fillListBox(listbox1, "tblSurveyAnswer",
"sContent", "pkAnswerID");
}
protected void btnChon_Click(object sender, EventArgs e)
{
lblresult.Text = "";
foreach (ListItem item in listbox1.Items)
{
if (item.Selected)
lblresult.Text += "<li>" + item.Text;
}
}
}
Trong code 9.8 ta c s dng mt hm fillListBox in d liu vo ListBox bn xem
code cui chng.
Kt xut ca chng trnh

http://www.ebook.edu.vn

181

Hnh 4
IV. S dng iu khin CheckBoxList
Ging vi iu khin RadioButtonList nhng n cho php ngi s dng chn la nhiu
phn t.

Code 9.9
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="checkBoxList.aspx.cs"
Inherits="checkBoxList" %>

<!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>CheckBoxList</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<b>Bn bit n iTechPro qua</b><br />
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
</asp:CheckBoxList><br />
<asp:Button ID="btnVote" OnClick="btnVote_Click" runat="server" Text="
Vote " /><hr />
Bn chn: <asp:Label ID="lblresult" runat="server" />
</div>
</form>
</body>
</html>

Code 9.10
using System;

http://www.ebook.edu.vn

182

using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using iTechPro.Library;
public partial class checkBoxList : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ListControlHelper.fillCheckBoxList(CheckBoxList1,
"tblSurveyAnswer", "sContent", "pkAnswerID");
}
}
protected void btnVote_Click(object sender, EventArgs e)
{
lblresult.Text = "";
for(int i = 0 ;i<CheckBoxList1.Items.Count;i++)
{
if (CheckBoxList1.Items[i].Selected == true)
{
lblresult.Text += "<li>" + CheckBoxList1.Items[i].Text +

"</li>";
}
}
}
}

Trong code 9.10 c s dng hm fillCheckBoxList l phng thc ca lp


ListControlHelper(xem cui chng) a d liu vo CheckBoxList, trong hm

http://www.ebook.edu.vn

183

btnVote_Click c thc hin khi bn nhn vo nt Vote trn trang, phng thc ny s
duyt t Item u n ht trong CheckBoxList v kim tra nu Item c chn th chng
ta s ly gi tr
Kt xut ca chng trnh

V. S dng iu khin BulletedList


iu khin ny cho php bn hin th ra kiu danh sch hay lit k, mi phn t ca n
c th a ra l Text, linkButton hay mt ng dn ti mt trang web khc
V d: cng vi bng d liu trn bn mun lit k tt c cu hi ra

Code 9.11
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="BulletList.aspx.cs"
Inherits="BulletListItem" %>

<!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>BulletList Control</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">

http://www.ebook.edu.vn

184

<asp:BulletedList ID="BulletedList1" runat="server">


</asp:BulletedList>
</div>
</form>
</body>
</html>

Code 9.12
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using iTechPro.Library;
public partial class BulletListItem : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ListControlHelper.fillBulletList(BulletedList1, "tblSurveyAnswer",
"sContent", "pkAnswerID");
}
}
}
Kt xut ca chng trnh

http://www.ebook.edu.vn

185

Bn c th iu chnh s xut hin ca bullet trong BulletList vi thuc tnh BulletStyle


vi cc gi tr c th c sau:
Circle, CustomImage, Disc, LowerAlpha, LowerRoman, NotSet, Numbered, Square,
UpperAlpha, UpperRoman,
Vi thuc tnh c gi tr l CustomImage bn cn ch n ng dn ca nh trong
thuc tnh BulletImageURL
V d trong Code 9.11 bn thm vo thuc tnh Bulletstyle vi gi tr l Circle bn s
thy kt xut ca chng trnh nh sau:

Chng 10. S dng iu khin GridView


GridView trnh by d liu nh th Table ca HTML m mi mc d liu nh vi th TR
Chng ta cng i vo xy dng mt lp gridViewHelper gip vic in d liu vo
gridView trong cc v d ca chng ta.
Trong chng ny ngoi iu khin ngoi iu khin GridView cc bn s c gii
thiu thm v iu khin sqlDatasource.
Ta i vo mt v d n gin: Bn hin th d liu t bng Gii thiu ra 1 GridView
Trong file web.config: bn thm vo
<connectionStrings>
<add
name="Gridview"
connectionString="Data
AttachDbFilename=|DataDirectory|Database.mdf;Integrated
Instance=True" />

Source=.\SQLEXPRESS;
Security=True;user

</connectionStrings>
Bn to mt trang SimpleGridview.aspx v a vo mt iu khin SqlDataSource v
in vo n cc thuc tnh nh sau:

http://www.ebook.edu.vn

186

Code 10.1
<%@
Page
Language="C#"
AutoEventWireup="true"
CodeFile="SimpleGridview.aspx.cs" Inherits="_Default" %>

<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Transitional//EN"

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>GridView</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:GridView AllowSorting="true" DataSourceID="SqlDataSource1"
ID="GridView1" runat="server">
</asp:GridView>
<asp:SqlDataSource

ConnectionString="<%$

ConnectionStrings:Gridview

%>"
SelectCommand="select
*
runat="server"></asp:SqlDataSource>

from

tblIntrodure"

ID="SqlDataSource1"

</div>
</form>
</body>
</html>
Nh bn thy trong v d trn i tng SqlDatasource cha chi kt ni String c
ly ra t file web.config v thuc tnh selectCommand s a vo mt chui sql dng select
ly tt c d liu trong bng tblIntrodure
V
iu
khin
GridView
DataSourceID=_tn_sqlDatasource.

ca

V kt xut ca chng trnh s nh sau:

http://www.ebook.edu.vn

187

ta

in

vo

thuc

tnh

Sorting Data
Bn c th trnh by sp xp d liu trong GridView vi thuc tnh AllowSorting
V d: cng vi v d 1 bn thm vo thuc tnh AllowSorting="true" khi ny bn s
thy trn dng Header ca Gridview s xut hin nh LinkButton v khi bn nhn vo n, n
cho php bn sp xp thng tin theo th t gim dn v tng dn ca d liu
Kt xut ca chng trnh

Paging Data
Khi s trng d liu ln bn c th thc hin phn trang cho d liu vi vic thit t
thuc tnh AllowPaging="true"
cng vi v d trn bn thm vo thuc tnh AllowPaging,
cho n gi tr bng true v thit lp thuc tnh PageSize(s dng trn mt trang) bng 3 bn
s thy s thay i

Kt xut ca n nh sau:

Bn c th chnh sa trnh by xut hin phn trang theo mnh thay v mc nh n


s trnh by bi nhng con s cui ca GridView vi thuc tnh PagerSetting

V d bn thm vo 1 s thuc tnh cho GridView ca chng ta nh sau


<asp:GridView AllowSorting="true" PageSize="3"

http://www.ebook.edu.vn

188

PagerSettings-Mode="NextPreviousFirstLast"
Position="TopAndBottom" PagerStyle-HorizontalAlign="Center"

PagerSettings-

AllowPaging="true" DataSourceID="SqlDataSource1"
ID="GridView1" runat="server">
</asp:GridView>

V bn thy kt xut ca n nh sau:

Lp PagingSetting h tr cc thuc tnh sau:

FirtPageImageURL: cho php hin th nh ca lin kt ti trang u tin

FirstPageText: Cho php hin th Text ca lin kt n trang u tin

LastPageImageUrl: cho php hin th nh ca lin kt ti trang cui cng.

LastPageTex: Cho php hin th Text ca lin kt n trang cui cng.

Mode: cho php bn la chn hin th kiu cho giao din phn trang, n c th c cc
gi tr sau:

NextPrevious, NextPreviousFirstLast, Numeric, and NumericFirstLast.

NextPageImageUrl: Cho php hin th nh lin kt ti trang tip theo.

NextPageText: Text hin th cho lin kt n trang tip theo .

PageButtonCount: hin th tng s trang.

Position: ch nh v tr hin th phn trang. Gi tr ca n c th l: Bottom, Top, and


TopAndBottom.

PreviousPageImageUrl: nh hin th cho lin kt ti trang trc .

PreviousPageText: Text hin th cho lin kt ti trang trc .

Visible: Cho php hin th hay n giao din phn trang.

http://www.ebook.edu.vn

189

V d tip theo chng ta cng customize phn trang 1 GridView vi PagerTemplate


GridView nh sau:

Code 10.2 trang GridViewpage.aspx


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewpage.aspx.cs"
Inherits="GridViewpage" %>
<script runat="server">
protected void GridView1_DataBound(object sender, EventArgs e)
{
Menu
menuPager
(Menu)this.GridView1.BottomPagerRow.FindControl("menuPager");

for (int i = 0; i < GridView1.PageCount; i++)


{
MenuItem item = new MenuItem();
item.Text = Convert.ToString(i+1);
item.Value = i.ToString();
if (GridView1.PageIndex == i)
item.Selected = true;
menuPager.Items.Add(item);
menuPager.DataBind();
}
}
protected void menuPager_MenuItemClick(object sender, MenuEventArgs e)
{
GridView1.PageIndex = Int32.Parse(e.Item.Value);
}
</script>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">

http://www.ebook.edu.vn

190

Transitional//EN"

<title>Gridview</title>
<style type="text/css">
.menu td{padding:5px 0px;}
.selectedPage a{font-weight:bold;color:red;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" AllowPaging="true" PageSize="3"
DataSourceID="SqlDataSource1"
runat="server">

OnDataBound="GridView1_DataBound"

<PagerTemplate>
<table>
<tr>
<td>
<asp:LinkButton id="lnkPrevious" Text="&lt;
CommandArgument="Prev"
ToolTip="Previous

CommandName="Page"
Runat="server" />

Prev"
Page"

</td>
<td>
<asp:Menu
id="menuPager"
Orientation="Horizontal"
OnMenuItemClick="menuPager_MenuItemClick"
StaticSelectedStyleCssClass="selectedPage" CssClass="menu" Runat="server" />
</td>
<td>

CommandName="Page"
/>

<asp:LinkButton
CommandArgument="Next"

</td>
</tr>
</table>

http://www.ebook.edu.vn

191

id="lnkNext"
Text="Next
&gt;"
ToolTip="Next Page" Runat="server"

</PagerTemplate>
</asp:GridView>
<asp:SqlDataSource
ConnectionString="<%$ConnectionStrings:Gridview %>"
SelectCommand="select
runat="server"></asp:SqlDataSource>

ID="SqlDataSource1"

from

tblIntrodure"

</div>
</form>
</body>
</html>
y trong PagerTemple bn thm vo 2 iu khin Linkbutton v 1 iu khin Menu
thc hin phn trang. 2 iu khin Linkbutton vi cc thuc tnh Command v
CommandArgument c GridView h tr ln ta khng phi vit cc phng thc thc thi
cn vi iu menu trong s kin DataBound ca GridView bn cung cp mt phng thc
GridView1_DataBound in d liu cho Menu.
Thay i d liu trong GridView
iu khin GridView ch cho php bn thay i hoc xo d liu trong Database c
in vo n.
V d sau s hng dn bn cch chnh sa d liu v xo d liu trong iu khin
GridView.
V d trang GridviewEdit.aspx
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="_Default" %>

CodeFile="GridviewEdit.aspx.cs"

<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridView</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:GridView AllowSorting="true" PageSize="10"

http://www.ebook.edu.vn

192

Transitional//EN"

PagerSettings-Mode="NextPreviousFirstLast"
Position="TopAndBottom" PagerStyle-HorizontalAlign="Center"

PagerSettings-

AutoGenerateDeleteButton="true"
AutoGenerateEditButton="true"
DataKeyNames="pkIntrodureID"
AllowPaging="true" DataSourceID="SqlDataSource1"
ID="GridView1" runat="server">
</asp:GridView>
<asp:SqlDataSource

ConnectionString="<%$

ConnectionStrings:Gridview

%>"
SelectCommand="select
pkIntrodureID,sTitle,sSummary,sContent,iPosition from tblIntrodure"
UpdateCommand="Update
tblIntrodure
set
sTitle=@sTitle,
sSummary=@sSummary,
sContent=@sContent,iPosition=@iPosition
where
pkIntrodureID=@pkIntrodureID"
DeleteCommand="Delete
pkIntrodureID=@pkIntrodureID"

from

tblIntrodure

ID="SqlDataSource1" runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>

Kt xut ca chng trnh khi bn nhn vo nt Edit trn GridView

http://www.ebook.edu.vn

193

where

Khi nhn vo nt Edit bn s thy cc TextBox s hin ra tng ng vi dng c


nhn v chng ta c th thay i d liu trong xc nhn thay i d liu bn nhn
Update.
Ch rng GridView s t ng a ra CheckBox nu c trng trong bng d liu l
Boolean. thay i hay xo d liu bn phi thit lp thuc tnh DataKeyNames vi gi tr
l kho chnh trong bng c s d liu ca bn.
Hin th d liu trng:
GridView bao gm hai thuc tnh cho php bn hin th ni dung cho GridView khi
khng c d liu, bn c th s dng EmptyDataText hoc thuc tnh EmptyDataTemplate
hin th ni dung khi d liu rng.

V d trang GridviewdataNull.aspx
<%@
Page
Language="C#"
AutoEventWireup="true"
CodeFile="GridviewdataNull.aspx.cs" Inherits="_Default" %>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Transitional//EN"

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>GridView</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:GridView AllowSorting="true" PageSize="10"
PagerSettings-Mode="NextPreviousFirstLast"
Position="TopAndBottom" PagerStyle-HorizontalAlign="Center"

PagerSettings-

EmptyDataText="trong bng khng c d liu"


DataKeyNames="pkIntrodureID"
AllowPaging="true" DataSourceID="SqlDataSource1"
ID="GridView1" runat="server">
</asp:GridView>
<asp:SqlDataSource

ConnectionString="<%$

%>"
SelectCommand="select * from tblHello"

http://www.ebook.edu.vn

194

ConnectionStrings:Gridview

ID="SqlDataSource1" runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>

Kt xut ca chng trnh

S dng Fields vi iu khin GridView

BoundField: cho php bn hin th gi tr ca cc mc d liu dng Text


CheckBoxField: cho php bn hin th gi tr ca d liu di dng CheckBox.
CammandField: hin th 1 lin kt cho php chnh sa, xo hay chn dng d liu
ButtonField: Cho php hin th d liu nh mt Button(Button, ImageButton,
linkButton, Push Button)
HyperLinkButton: Cho php hin th d liu nh mt lin kt n mt trang web khc.
ImagesField: Cho php bn hin th d liu nh mt nh
TemplateField: cho php bn hin th d liu mt cch tu bin vi cc th HTML hoc
ASP.NET

Chng 11 S dng DetailView v FormView


Hai iu khin ny cho php bn lm vic vi mt trng d liu n ti mi thi im
C hai iu khin ny cho php bn thay i, thm mi hay xo d liu nh mt bn
ghi c s d liu, v n cho php bn chuyn sang trang tip theo hay quay li trang trc
thng qua thit lp d liu.

I. DetailView
1. Hin th d liu vi DetailView
DetailView c a ra hin th nh mt bng(<Table>) trong HTML hin th d liu
mt bn ghi.
V d: Trang DetailView.aspx
Code 11.1
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="_DetailView" %>

CodeFile="DetailView.aspx.cs"

<!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" >

http://www.ebook.edu.vn

195

<head runat="server">
<title>Detail View</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:DetailsView ID="DetailsView1"
DataSourceID="SqlDataSource1" runat="server" Height="50px"
Width="125px">
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select * from tblIntrodure"
runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
Vn vi c s d liu t chng trc bn a d liu ca bng tblIntrodure vo
SqlDataSource v in n vo DetailView1 vi thuc tnh DataSourceID ca n
Kt xut ca chng trnh s nh sau:

Bn cng c th a d liu vo DetailView t mt mng hay danh sch d liu

http://www.ebook.edu.vn

196

V d:
Bn to mt lp Employee.cs
Code 11.2
using System;
public class Employee
{
private int _PersonID;
public int PersonID
{
get { return _PersonID; }
set { _PersonID = value; }
}
private string _Hoten;
public string Hoten
{
get { return _Hoten; }
set { _Hoten = value; }
}
private int _Tuoi;
public int Tuoi
{
get { return _Tuoi; }
set { _Tuoi = value; }
}
public Employee()
{
}

http://www.ebook.edu.vn

197

public Employee(int _PersonID, string _Hoten, int _Tuoi)


{
this._PersonID = _PersonID;
this._Hoten = _Hoten;
this._Tuoi = _Tuoi;
}
}

Code 11.3 DetailViewPerson.aspx


<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="DetailViewPerson.aspx.cs" Inherits="DetailViewPerson" %>
<!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>Detail View</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px"
Width="125px">
</asp:DetailsView>
</div>
</form>
</body>
</html>

Code 11.4 DetailViewPerson.aspx.cs


using System;
using System.Collections;

http://www.ebook.edu.vn

198

using System.Collections.Generic;
using System.Data;
public partial class DetailViewPerson : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Employee newEmploy=new Employee(1,"HCUBIU",25);
List<Employee> listEmploy=new List<Employee>();
listEmploy.Add(newEmploy);
DetailsView1.DataSource = listEmploy;
DetailsView1.DataBind();
}
}
}
Trong v d ny chng ta to ra mt lp Employee v chng ta a d liu vo
DetailView1 vi thuc tnh DataSource v phng thc DataBind in d liu vo.
2. S dng Fields vi iu khin DetailView
DetailView h tr tt c cc Field nh GridView

BoundField: cho php bn hin th gi tr ca d liu nh Text

CheckBoxField: hin th d liu di dng mt CheckBox

CommandField: hin th lin kt cho php chnh sa, thm mi, xo d liu ca
dng.

ButtonField: hin th d liu nh mt button(ImageButton, )

HyperLinkField: hin th mt lin kt

ImageField: hin th nh

http://www.ebook.edu.vn

199

TemplateFile: cho php hin th cc u khin tu bin.

V d:
Code 11.5
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="DetailViewfield.aspx.cs" Inherits="DetailViewfield" %>
<!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>Fields</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:DetailsView ID="DetailsView1" AutoGenerateRows="false"
DataSourceID="SqlDataSource1" runat="server" Height="50px"
Width="125px">
<Fields>
<asp:BoundField DataField="pkIntrodureID" HeaderText="ID" />
<asp:BoundField DataField="sTitle" HeaderText="Tiu " />
<asp:BoundField DataField="iPosition" HeaderText="V tr" />
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select * from tblIntrodure"
runat="server"></asp:SqlDataSource>
</div>
</form>

http://www.ebook.edu.vn

200

</body>
</html>
Trong v d trn bn a vo 3 BoundField v in vo d liu vi thuc tnh DataField
v thit t cho n tiu d vi HeaderText, a ra d liu nh th ny bn cn thit lp
thuc tnh AutoGenerateRows=false.
Kt xut ca chng trnh

3. Hin th DetailView vi d liu rng


V d
Code 11.6
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="DetailViewDatanull.aspx.cs" Inherits="DetailViewDatanull" %>
<!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>Null Data</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:DetailsView ID="DetailsView1"
DataSourceID="SqlDataSource1" EmptyDataText="D liu khng c"
runat="server" Height="50px" Width="125px">
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"

http://www.ebook.edu.vn

201

SelectCommand="select * from tblProduct"


runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
Kt xut ca chng trnh

Trong v d trn ta a d liu vo DetailView1 vi d liu t bng tblProduct(cha


c np d liu), trong DetailView1 ta thm vo thuc tnh EmptyDataText="D liu khng
c" khi trong bng khng c d liu chui Text nm trong thuc tnh EmptyDataText s
c a ra.
Bn cng c th Customize chui text hin th ra khi cha c ni dung
EmptyDataTemple nh v d sau:

bng

V d: DetailViewDatanull.aspx
Code 11.7
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="DetailViewDatanull.aspx.cs" Inherits="DetailViewDatanull" %>
<!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>Null Data</title>
<style type="text/css">
.noMatch{background-color:#ffff66;padding:10px;font-family:Arial,SansSerif;}
.noMatch h1{color:red;font-size:16px;font-weight:bold;}
</style>
</head>
<body>

http://www.ebook.edu.vn

202

<form id="form1" runat="server">


<div id="navcontain">
<asp:DetailsView ID="DetailsView1"
DataSourceID="SqlDataSource1" runat="server" Height="50px"
Width="125px">
<EmptyDataTemplate>
<div class="noMatch">
<h1>No Matching Results!</h1>
Please select a different record.
</div>
</EmptyDataTemplate>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select * from tblProduct"
runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
Kt xut ca chng trnh s nh sau:

4. Phn trang vi DetailView


V d DetailViewPaging.aspx
Bn thm vo thuc tnh AllowPaging=true cho iu khin DetailView

http://www.ebook.edu.vn

203

Code 11.8
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="DetailViewPaging.aspx.cs" Inherits="DetailViewPaging" %>
<!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>Paging</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:DetailsView ID="DetailsView1" AllowPaging="true"
DataSourceID="SqlDataSource1" runat="server" Height="50px"
Width="300px">
</asp:DetailsView>

Chuong 12. S dng Repeater v DataList


C hai iu khin ny u cho php hin th tp hp cc mc d liu ti mt thi im,
ni cch khc l c th hin th tt c cc dng trong bng d liu.

I. s dng iu khin Repeater


1. Hin th d liu vi Repeater
hin th d liu vi Repeater bn phi to mt ItemTemplate
V d: trang Repeater.aspx
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="_Default" %>

CodeFile="Repeater.aspx.cs"

<!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">

http://www.ebook.edu.vn

204

<title>Repeater</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:Repeater DataSourceID="SqlDataSource1" ID="Repeater1"
runat="server">
<ItemTemplate>
<div class="navpage">
<h3><%#Eval("sTitle") %></h3>
Tm tt<br /> <%#Eval("sSummary")%><br /><br />
Ni dung<br />
<%#Eval("sContent") %>
</div>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select sTitle,sSummary,sContent from tblIntrodure"
runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
Bn
a
iu
khin
Repeater
vo
Form
v
t
thuc
tnh
DataSourceID=SqlDataSource1 v thm vo mt ItemTemplate trong ny bn c th iu
chnh cch hin th d liu theo mun ca bn vi cc th ca Asp.Net hoc HTML.
Kt xut ca on Code trn s nh sau:

http://www.ebook.edu.vn

205

2. S dng Template vi iu khin Repeater


iu khin Repeater h tr 5 kiu ca Templates

ItemTemplate: nh dng mi item t ngun d liu

AlternatingItemTemplate: nh dng tt c cc item d liu khc t ngun d liu

SeparatorTemplate: nh dng gia hai item t ngun c s d liu

HeaderTemplate: nh dng header cho tt c cc item

FooterTemplate: nh dn Footer cho tt c cc item.

V d: trang RepeaterDP.aspx
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="_Default" %>

CodeFile="RepeaterDP.aspx.cs"

<!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>Repeater</title>
<style type="text/css">
html{background-color:silver;}

http://www.ebook.edu.vn

206

.content{width:600px;border:solid 1px black;background-color:white;}


.intro{border-collapse:collapse;}
.intro th,.intro td{padding:10px;border-bottom:1px solid black;}
.alternating{background-color:#eeeeee;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:Repeater DataSourceID="SqlDataSource1" ID="Repeater1"
runat="server">
<HeaderTemplate>
<table class="intro">
<tr>
<th>Tiu </th>
<td>Tm tt</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("sTitle") %></td>
<td><%#Eval("sSummary")%></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="alternating">
<td><%#Eval("sTitle") %></td>
<td><%#Eval("sSummary") %></td>

http://www.ebook.edu.vn

207

</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select sTitle,sSummary,sContent from tblIntrodure"
runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
Kt xut ca chng trnh:

3. iu khin Repeater vi cc s kin


iu khin Repeater h tr cc s kin sau:

DataBinding: xy ra khi Repeater c rng buc n d liu

ItemCommand: xy ra khi bn trong Repeater cha ng iu khin Command v


iu khin ny a ra s kin.

ItemCreate: xy ra khi mi RepeaterItem c to

ItemDataBound: xy ra khi mi item ca Repeater c rng buc

V d trang RepeaterEvent.aspx

http://www.ebook.edu.vn

208

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="RepeaterEvent.aspx.cs" Inherits="_Default" %>
<script runat="server">
void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Response.Write("<li>D liu ang c to</li>");
}
void repeater1_DataBinding(object sender, EventArgs e)
{
Response.Write("Rng buc d liu cho Repeater");
}
void Repeater1_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "insert":
Response.Write(e.CommandArgument.ToString() + ": Bn chn xo
d liu");
break;
case "update":
Response.Write(e.CommandArgument.ToString() + ": Bn chn cp
nht d liu");
break;
case "delete":
Response.Write(e.CommandArgument.ToString() + ": Bn chn xo
d liu");
break;
}
}
</script>

http://www.ebook.edu.vn

209

<!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>Repeater</title>
<style type="text/css">
html{background-color:silver;}
.content{width:600px;border:solid 1px black;background-color:white;}
.intro{border-collapse:collapse;}
.intro th,.intro td{padding:10px;border-bottom:1px solid black;}
.alternating{background-color:#eeeeee;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:Repeater OnItemDataBound="Repeater1_ItemDataBound"
OnDataBinding="repeater1_DataBinding" OnItemCommand="Repeater1_ItemCommand"
DataSourceID="SqlDataSource1" ID="Repeater1" runat="server">
<HeaderTemplate>
<table class="intro">
<tr>
<th>Tiu </th>
<td>Tm tt</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("sTitle") %></td>

http://www.ebook.edu.vn

210

<td><%#Eval("sSummary")%></td>
</tr>
<tr>
<td colspan="2">
<asp:LinkButton ID="lbninsert" CommandName="insert"
CommandArgument="insert" runat="server">Insert</asp:LinkButton> |
<asp:LinkButton ID="lbnupdate" CommandName="update"
CommandArgument="update" runat="server">Update</asp:LinkButton> |
<asp:LinkButton ID="lbndelete" CommandName="delete"
CommandArgument="delete" runat="server">Delete</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="alternating">
<td><%#Eval("sTitle") %></td>
<td><%#Eval("sSummary") %></td>
</tr>
<tr>
<td colspan="2">
<asp:LinkButton ID="lbninsert" CommandName="insert"
CommandArgument="insert" runat="server">Insert</asp:LinkButton> |
<asp:LinkButton ID="lbnupdate" CommandName="update"
CommandArgument="update" runat="server">Update</asp:LinkButton> |
<asp:LinkButton ID="lbndelete" CommandName="delete"
CommandArgument="delete" runat="server">Delete</asp:LinkButton>
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>

http://www.ebook.edu.vn

211

</FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select sTitle,sSummary,sContent from tblIntrodure"
runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
V d trn bn a vo 3 s kin cho iu khin Repeater, tng ng vi n l 3 s
kin c kch hot: s kin
Repeater1_ItemDataBound c a ra lm v n c thc hin mi khi d liu hay
mt item c a vo Repeater vi v d trn n s in ra d liu ang c to x(s hng
trong bng d liu) ln.
repeater1_DataBinding

thc hin cng vic khi d liu c in vo Repeater.

Repeater1_ItemCommand: ph thuc vo tn CommandName a ra cng vic


thch hp(nu cha r CommandName bn xem li phn Cc iu khin c bn ca ASP.NET)

II. S dng iu khin DataList


1. Hin th d liu vi DataList
V d: trang DataList.aspx
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="_Default" %>

CodeFile="DataList.aspx.cs"

<!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>Repeater</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">

http://www.ebook.edu.vn

212

<asp:DataList ID="DataList1" DataSourceID="SqlDataSource1"


runat="server">
<ItemTemplate>
<h3><%#Eval("sTitle") %></h3>
Tm tt: <%#Eval("sSummary") %>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select sTitle,sSummary,sContent from tblIntrodure"
runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>

2. Hin th d liu trong nhiu ct


Bn c th hin th d liu trong iu khin DataList trong nhiu ct ging nh mi
item nm trong mt Cells vi 2 thuc tnh ca Repeater l:

RepeaterColumns: s ct hin th

RepeateDirection: hng hin th cc . C th gi tr l Horizontal hoc Verical


V d sau y s hin th d liu trong DataList vi 3 ct

V d trang DataListMutilColumn.aspx
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="DataListMutilColumn.aspx.cs" Inherits="_Default" %>
<!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>Repeater</title>
</head>
<body>

http://www.ebook.edu.vn

213

<form id="form1" runat="server">


<div id="navcontain">
<asp:DataList ID="DataList1" GridLines="Both" RepeatColumns="3"
DataSourceID="SqlDataSource1" runat="server">
<ItemTemplate>
<h3><%#Eval("sTitle") %></h3>
Tm tt: <%#Eval("sSummary") %>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select sTitle,sSummary,sContent from tblIntrodure"
runat="server"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
y bn ch cn thm vo hai thuc tnh RepeaterColumns=3 v GridLines=Both
kt xut ca chng trnh sau:

http://www.ebook.edu.vn

214

3. S dng Template vi iu khin DataList


DataList h tr tt c cc templates ging vi Repeater v n c thm vo hai
templates:

EditItemTemplate: hin th khi dng c chn chnh sa

SelectedItemTemplate: c hin th khi 1 dng c la chn

4. Chn d liu vi iu khin DataList


Bn c th s dng DataList nh mt menu bng vic thm vo thuc tnh
SelectedValue

V d: trang DataListselect.aspx
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="DataListselect.aspx.cs" Inherits="_Default" %>
<!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>Repeater</title>
</head>
<body>
<form id="form1" runat="server">
<div id="navcontain">
<asp:DataList ID="DataList1" DataKeyField="pkIntrodureID"
DataSourceID="SqlDataSource1" runat="server">
<ItemTemplate>
<asp:LinkButton ID="lbnselect" CommandName="Select"
runat="server" Text='<%#Eval("sTitle") %>' />
</ItemTemplate>
</asp:DataList>
<asp:DataList ID="datalist2" runat="server"
DataSourceID="SqlDataSource2">
<ItemTemplate>
<h3><%#Eval("sTitle") %></h3>

http://www.ebook.edu.vn

215

Tm tt: <%#Eval("sSummary") %><br /><br />


Ni dung: <%#Eval("sContent") %>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select pkIntrodureID,sTitle,sSummary,sContent from
tblIntrodure" runat="server"></asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
SelectCommand="select pkIntrodureID,sTitle,sSummary,sContent from
tblIntrodure where pkIntrodureID=@pkIntrodureID" runat="server">
<SelectParameters>
<asp:ControlParameter Name="pkIntrodureID"
ControlID="DataList1" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
Trong v d trn Datalist1 dng lm menu trong ItemTemplate chng ta a vo mt
LinkButton v cung cp cho n thuc tnh CommandName=Select. Ta tip tc a thm
vo mt SqlDataSource2 vi vic a vo mt tham s nhn gi tr v t Datalist1 vi tham
s truyn pkIntrodureID, v chng ta a thm vo mt Datalist2 vi
DataSourceID=SqlDataSource2. Nh vy khi chy chng trnh bn nhn vo mi mc
trong Datalist1 th d liu y tng ng s hin trong trong DataList2
Thay i d liu vi iu khin DataList
Bn c th s dng DataList thay i d liu bn ghi. Tuy nhin chnh sa d liu
ca bn ghi n yu cu nhiu phi vit nhiu code hn so vi cc iu khin rng buc d
liu khc nh GridView, FormView hay DetailView.
V d sau y s hng dn bn cch thay i v xo d liu t DataList.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Repeateredit.aspx.cs"
Inherits="Repeateredit" %>
<script runat="server">

http://www.ebook.edu.vn

216

void DataList1_EditCommand(object sender, DataListCommandEventArgs e)


{
DataList1.EditItemIndex = e.Item.ItemIndex;
DataList1.DataBind();
}
void DataList1_DeleteCommand(object sender, DataListCommandEventArgs e)
{
SqlDataSource1.DeleteParameters["pkIntrodureID"].DefaultValue =
DataList1.DataKeys[e.Item.ItemIndex].ToString();
SqlDataSource1.Delete();
}
void DataList1_UpdateCommand(object sender, DataListCommandEventArgs e)
{
TextBox txtTitle = (TextBox)e.Item.FindControl("txtTitle");
TextBox txtSummary = (TextBox)e.Item.FindControl("txtSummary");
SqlDataSource1.UpdateParameters["pkIntrodureID"].DefaultValue =
DataList1.DataKeys[e.Item.ItemIndex].ToString();
SqlDataSource1.UpdateParameters["sTitle"].DefaultValue =
txtTitle.Text;
SqlDataSource1.UpdateParameters["sSummary"].DefaultValue =
txtSummary.Text;
SqlDataSource1.Update();
DataList1.EditItemIndex = -1;
}
void DataList1_CancelCommand(object sender, DataListCommandEventArgs e)
{
DataList1.EditItemIndex = -1;
DataList1.DataBind();
}
</script>

http://www.ebook.edu.vn

217

<!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>Repeater</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="DataList1" DataSourceID="SqlDataSource1"
DataKeyField="pkIntrodureID" GridLines="None"
OnEditCommand="DataList1_EditCommand"
OnDeleteCommand="DataList1_DeleteCommand"
OnUpdateCommand="DataList1_UpdateCommand"
OnCancelCommand="DataList1_CancelCommand"
runat="server">
<ItemTemplate>
<h3><%#Eval("sTitle") %></h3>
<%#Eval("sSummary") %><br /><br />
<asp:LinkButton ID="lbnedit" runat="server" Text="Edit"
CommandName="Edit" /> |
<asp:LinkButton ID="lbndelete" runat="server" Text="Delete"
OnClientClick="return confirm('Bn c chc chn xo mc ny khng?');"
CommandName="Delete" />
</ItemTemplate>
<EditItemTemplate>
Tiu :<br />
<asp:TextBox ID="txtTitle" runat="server"
%>'/><br /><br />
Tm tt:<br />

http://www.ebook.edu.vn

218

Text='<%#Eval("sTitle")

<asp:TextBox ID="txtSummary" runat="server"


Text='<%#Eval("sSummary") %>' /><br /><br />
<asp:LinkButton ID="lbnUpdate" runat="server" CommandName="Update"
Text="Update" /> |
<asp:LinkButton ID="lbncancel" runat="server" CommandName="Cancel"
Text="Cancel" />
</EditItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ConnectionStrings:hcubiuData %>"
UpdateCommand="Update tblIntrodure set sTitle=@sTitle,
sSummary=@sSummary where pkIntrodureID=@pkIntrodureID"
DeleteCommand="Delete from tblIntrodure where
pkIntrodureID=@pkIntrodureID"
SelectCommand="select * from tblIntrodure" runat="server">
<UpdateParameters>
<asp:Parameter Name="pkIntrodureID" />
<asp:Parameter Name="sTitle" />
<asp:Parameter Name="sSummary" />
</UpdateParameters>
<DeleteParameters>
<asp:Parameter Name="pkIntrodureID" />
</DeleteParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
Cch thao tc d liu vi DataList gn ging vi FormView.
lm c vic ny bn cn cung cp cc button c CommandName ng vi cc phng
thc m c DataList h tr . cng vi vic a vo cc tham s tng ng trong thnh
phn UpdateParameter v DeleteParameter ca SqlDataSource.

http://www.ebook.edu.vn

219

Chng 13.Trng Thi


I. S dng Cookie
Cookie lm vic nh th no?
Khi trnh duyt web to mt Cookie, mt ni dung s c lu vo header ca trang
web vi ni dung ging nh sau:
Set-Cookie: Message=Hello
Phn tiu Set-Cookie ny gy ra cho trnh duyt web to mt Cookie c tn l
Message v gi tr ca n l Hello.
Sau khi mt Cookie c to trn trnh duyt, Mi khi trnh duyt yu cu mt trang
web trong ng dng, trnh duyt s gi mt header c dng ging nh sau:
Cookie: Message=Hello
Tiu Cookie cha ng tt c cc Cookie m c to trn Web Server. Cookie c
gi tr li mi khi mt yu cu c a ra trn trnh duyt web.
Bn c th to hai kiu ca Cookie, Session Cookies v Persistent Cookies. Session
cookies ch tn ti trong b nh khi trnh duyt web b ng li th n cng b xa i.
Cn Persistent Cookies c th tn ti hng thng hoc hng nm. Khi bn to mt
Persistent Cookies, n s c lu tr trn web browse trn my tnh ca bn. vi IE v d
n s c lu tr trong mt file Text theo th mc
\Documents and Settings\[user]\Cookies
Cn vi FireFox n lu tr trong th mc theo ng dn sau:
\Documents and Settings\[user]\Application Data\Mozilla\Firefox\Profiles\[random
folder name]\Cookies.txt
bi v s lu tr cookies trn cc trnh duyt khc nhau cc th mc khc nhau ln
khi bn to Cookies trn IE th n s khng tn ti trn FireFox v ngc li.
Bo mt vi Cookie
To Cookies
Bn c th to cookies vi cu lnh Response.Cookies, tt c cc Cookies s c gi
t Web Server n Web Browser.

Form

V d sau y s to ra mt Cookies Message vi gi tr c ly t hp TextBox trn

V d 1: Trang setCookies.aspx

http://www.ebook.edu.vn

220

<%@ Page Language="C#" AutoEventWireup="true"


Inherits="_Default" %>

CodeFile="Default.aspx.cs"

<script runat="server">
protected void Add_Click(object sender, EventArgs e)
{
Response.Cookies["Message"].Value = txtCookies.Text;
}
</script>
<!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>Create Cookies</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Cookie Value"></asp:Label>
<asp:TextBox ID="txtCookies" runat="server"></asp:TextBox>
<asp:Button ID="Add" runat="server" OnClick"Add_Click" Text="Button"
/>
</div>
</form>
</body>
</html>
Trong v d mt l chng ta to ra mt Session Cookies, cn nu bn mun to mt
Persistent Cookies bn cn ch nh thi hn kt thc cho Cookies .
V d 2 trang setPersistentCookies.aspx
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="setPersistentCookies.aspx.cs" Inherits="setPersistentCookies" %>
<script runat="server">

http://www.ebook.edu.vn

221

protected void Page_Load(object sender, EventArgs e)


{
int counter=0;
if (Request.Cookies["counter"] != null)
counter = Int32.Parse(Request.Cookies["counter"].Value);
counter++;
Response.Cookies["counter"].Value = counter.ToString();
Response.Cookies["counter"].Expires = DateTime.Now.AddYears(2);
this.Label1.Text = Response.Cookies["counter"].Value;
}
</script>
<!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>Set Persitent Cookies</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
Trong v d trn khi chy chng trnh mi ln bn Refresh li trang th gi tr ca
Label1
s
tng
ln
mt.
V
vi
cu
lnh
Response.Cookies[counter].Expires=Datetime.Now.AddYears(2), c ngha l thi gian tn
ti ca Cookie ny s l 2 nm.

c d liu t Cookies

http://www.ebook.edu.vn

222

Bn s dng ln Request.Cookies ly d liu t Cookies, bn xem li v d 2 trang


setPersistentCookies.aspx.
Khi bn c mt tp hp cc Cookies bn c th ly tt c gi tr ca cc Cookies trn
website ca mnh, v d sau y s hng dn bn lm vic .
V d 3 trang GetallCookies
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetAllCookies.aspx.cs"
Inherits="GetAllCookies" %>
<script runat="server">
void Page_Load()
{
ArrayList colCookies = new ArrayList();
for (int i = 0; i < Request.Cookies.Count; i++)
colCookies.Add(Request.Cookies[i]);
grdCookies.DataSource = colCookies;
grdCookies.DataBind();
}
</script>
<!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>Get All Cookies</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="grdCookies" runat="server">
</asp:GridView>
</div>
</form>

http://www.ebook.edu.vn

223

</body>
</html>

Thit lp thuc tnh cho Cookies


Cookies c a ra vi lp HttpCookie, khi bn to hoc ly gi tr t mt Cookie c
th bn s s dng mt vi thuc tnh ca lp ny:
- Domain: cho php bn ch nh Domain kt hp vi Cookie. Gi tr mc nh l Domain
hin ti.
- Expires: Cho php to Persistent Cookies vi thi hn c ch nh
- HasKeys: Cho php bn nh r Cookies c nhiu gi tr hay khng.
- HttpOnly: Cho php a ra mt Cookies t JavaScript.
- Name: ch nh tn cho Cookies.
+- Path: Cho php ch nh ng dn kt hp vi Cookies. Gi tr mc nh l /.
- Secure: Cho php mt Cookie c chuyn tc ngang ti kt ni Sercure Sockets
Layer (SSL).
- Value: Cho php ly hoc thit lp gi tr cho Cooki
- Values: Cho php bn ly hoc thit lp gi tr ring khi lm vic vi Cookies c nhiu gi
tr.

Xa Cookies
xa mt Cookie bn thit lp ngy ht hn cho Cookies l -1
V d nh cu lnh di y:
Response.Cookies[Message].Expires = DateTime.Now.AddDays(-1);
Trn v d trn chng ta s xa Cookie vi tn l Message.

Lm vic vi Cookies nhiu gi tr:


Trong trnh duyt khng ln lu trc hn 20 Cookies t mt Domain, thay vo bn
c th lm vic vi mt Cookie nhiu gi tr.
Mt Cookies nhiu gi tr l mt Cookies n cha ng nhiu kha con, bn c th to
nhiu kha con nh bn mun.
Nh v d di y bn to ra mt Cookies Person nhiu gi tr, Cookie Person lu tr
cc gi tr H tn, Ngy sinh v mu sc yu thch.

V d 4 trang SetCookieValues.aspx

http://www.ebook.edu.vn

224

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="SetCookieValues.aspx.cs" Inherits="SetCookieValues" %>
<script runat="server">
protected void btnsubmit_Click(object sender, EventArgs e)
{
Response.Cookies["Person"]["Hoten"] = txtHoten.Text;
Response.Cookies["Person"]["Ngaysinh"] = txtNgaysinh.Text;
Response.Cookies["Person"]["Color"] = txtColor.Text;
Response.Cookies["Person"].Expires = DateTime.MaxValue;
}
</script>
<!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>Set Cookie MutilValues</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>H tn</td>
<td><asp:TextBox ID="txtHoten" runat="server" /></td>
</tr>
<tr>
<td>Ngy sinh</td>
<td><asp:TextBox ID="txtNgaysinh" runat="server" /></td>
</tr>

http://www.ebook.edu.vn

225

<tr>
<td>Mu yu thch</td>
<td><asp:TextBox ID="txtColor" runat="server" /></td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnsubmit" runat="server" Text="Submit"
OnClick="btnsubmit_Click" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Vic ly gi tr ca Cookie nhiu gi tr tng t nh cc phn trn, hc vin v nh
hon thin nt.

II. Lm vic vi Session


Bn c th cha thc s dng Cookies lu tr Shoping Cart. Mt Cookie va qu
nh v qu n gin. lm vic ngoi gii hn ca Cookie ASP.NET Framework h tr mt
chc nng mi c gi l Session State
Ging vi Cookie Session lu tr d liu trong phm vi ring vi tng ngi s dng.
Nhng khng ging vi Cookie Session khng gii hn dung lng, nu bn cn bn c th
lu tr hng Gigabyte d liu, hn th na Session c th a ra iu i tng phc tp
hn l chui Text. Bn c th lu tr mt vi i tng trong Session. V d bn c th lu
tr mt Dataset hay mt Shoping cart trong Session.

1. thm d liu vo Session


Bn thm d liu vo trng thi Session bng vic s dng i tng Session, V d
sau y s thm mt d liu vo Session c tn l Message v gi tr ca n l Hello World
V d 1: Trang Sessionset.aspx
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="_Default" %>
<script runat="server">

http://www.ebook.edu.vn

226

CodeFile="Sessionset.aspx.cs"

protected void Page_Load(object sender, EventArgs e)


{
Session["Message"] = "Hello World";
}
</script>
<!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>Session set</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Session state item added!</h1>
</div>
</form>
</body>
</html>

2. Ly d liu t mt Session
V d: Trang Sessionset.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sessionget.aspx.cs"
Inherits="Sessionget" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
lblsession.Text = Session["Message"].ToString();
}
</script>

http://www.ebook.edu.vn

227

<!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>Session get</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblsession" runat="server" />
</div>
</form>
</body>
</html>
Bn lu rng cng nh Cookie khi mt Session c to ra, mt trng thi session c tn
ASP.NET_SessionID c t ng thm vo trnh duyt ca bn v Session ny c lu tr
trn web server v khng lu tr trn webClient. V khi bn tt trnh duyt i th Session
ny ca bn vn tn ti trong khong thi gian quy nh, m ASP.NET Framework quy nh
thi gian mc nh ca Session l 20 pht. bn c th thit lp thi gian nhiu hn.

3. Lu tr c s d liu trong Session


Bn c th to Session state to mt vng nh cho ngi s dng. v d bn c th
ti d liu cho mt ngi s dng v cho php ngi s dng sp xp hay lc d liu.

4. S dng i tng Session


Chng trnh ng dng chnh giao tip v lm vic vi Session State l lp
HttpSessionState. i tng ny c th hin bi cc thuc tnh Page.Session,
Context.Session, UserControl.Session, Webservice.Session v Application.Session. c ngha
l bn c th lm vic vi Session bt k u trong ng dng web.
Lp HttpSessionState h tr cc thuc tnh sau:

CookieMode: c cho php Cookie Session hay khng?

Count: cho php ly s d liu trong Session State

IsCookieless: Cho php ch r c cho php Cookieless hay khng?

IsNewSessionEnables you to determine whether a new user session was created

with the current request.

IsReadOnlyEnables you to determine whether the Session state is read-only.

http://www.ebook.edu.vn

228

KeysEnables you to retrieve a list of item names stored in Session state.

ModeEnables you to determine the current Session state store provider. Possible

values are Custom, InProc, Off, SqlServer, and StateServer.

SessionIDEnables you to retrieve the unique session identifier.

TimeoutEnables you to specify the amount of time in minutes before the web

server assumes that the user has left and discards the session. The maximum value
is 525,600 (1 year).

i tng HttpSessionState h tr cc phng thc sau:

Abandon: Cho php kt thc Session ca mt ngi s dng.

Clear: Cho php xo ton b d liu trong Session State.

Remove: cho php bn xo tng phn t trong Session State

5. iu khin s kin Session


C hai s kin c lin quan vi Session State m bn c th iu khin n trong file
Global.asax l s kin Session_Start v Session_End.
Session_Start xy ra khi mt Sesion mi ca ngi s dng c to ra. Bn c th s
dng s kin ny load thng tin ca ngi s dng ra t c s d liu. V d bn c th
ti d liu v Shoping cart ca ngi s dng trong s kin ny .
Session_End xy ra khi kt thc Session, mt Session kt thc khi thi hn ca Session
ht hoc bi vicj ch nh ca phng thc Session.Abadon. V d Khi bn mun t ng ghi
gi hng ca ngi s dng vo bng d liu trong c s d liu khi Session_End xy ra.

6. iu khin khi Session qu hn


Mc nh ASP.NET Framework quy nh thi gian qu hn ca Session l 20 pht, trong
nhiu trng hp bn thy nh vy l qu t, v bn ngh rng bn cn thay i thi gian
ny.
V d trong trng hp bn to mt trang qun tr ca website, khi cp nht d liu
bn c mt bi vit di, v thi hn 20 pht khng th thi gian cho bn cp nht tin ,
v hon thnh bi c th bn phi mt 1 gi.
S bt li l nu tng thi gian qu hn ca Session ln th b nh ca ng dng cng
phi s dng nhiu, v vy khi bn tng thi hn ca Session th b nh ca Server s phi
dng cng nhiu.
Tuy nhin nu cn bn vn c th tng thi hn ca Session bng cch bn c th ch
nh thi gian qu hn ca Session trong file web.config
V d:
<configuration>
<system.web>

http://www.ebook.edu.vn

229

<sessionState timeout="60" />


</system.web>
</configuration>

7. s dng Cookieless Session State


Mc nh Session State da trn Cookie. ASPNET Framework s dng
ASP.NET_SessionId Cookie nh danh ngi s dng trn website m d liu c th c
kt hp vi ngi s dng, nu ngi s dng v hiu ha Cookie trn trnh duyt th
Session State s khng lm vic.
Session c th lm vic khi trnh duyt v hiu ha Cookie bn cn thm vo
Cookieless Session. Khi Cookieless Session c cho php, th Session ID ca ngi s dng
s c thm vo trang URL.
y l mt v d ca trang URL nhn ging vi khi Cookieless Session c cho php.
http://localhost:4945/Original/(S(5pnh11553sszre45oevthxnn))/SomePage.aspx
Bn cho php Cookieless Session bng vic chnh sa cc thnh phn SessionState
trong file web.config. Thnh phn SessionState bao gm cc mt c tnh cookieless m n
chp nhn cc gi tr sau:

AutoDetect: SessionID c lu tr trong mt cookie khi trnh duyt c cho php


Cookie. Ngc li th n lu tr vo a ch URL.

UseCookies: Session ID lun lun lu tr trong cookie

UseDeviceProfile: Session ID lu tr trong cookie khi trnh duyt h tr Cookie,


trng hp ngc li n lu tr trong a ch URL.

UseUri: Session ID lun lun c thm vo URL.

Trong v d sau y chng ta thit lp cookieless l AutoDetect nh vy ASP.NET


Framework s kim tra s tn ti cu HTTP Cookie header, nu Cookie header c tm thy
th Framework s lu tr Session trong mt cookie v ngc li th n s thm vo URL.
V d:
<configuration>
<system.web>
<sessionState cookieless="AutoDetect"
regenerateExpiredSessionId="true"/>
</system.web>
</configuration>

III. S dng Profiles


ASP.NET Framework cung cp cho bn mt thay th cho Session hay cookie lu tr
thng tin ca ngi s dng l i tng Profile

http://www.ebook.edu.vn

230

Bn to mt Profile bng cch nh ngha mt danh sch cc thuc tnh Profile trong
ng dng file web.config trong th mc root. ASP.NET Framework t ng bin dch mt
lp cha ng cc thuc tnh ny.
V d sau y s a ra mt Profile vi ba thuc tnh: firstName, lastName v
NumberOfVisits:
Trang web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<profile>
<properties>
<add name="firstName" />
<add name="lastName"/>
<add name="NumberOfVisits" type="Int32" defaultValue="0"/>
</properties>
</profile>
</system.web>
</configuration>
Khi lm vic vi Profile bn ch mt s thuc tnh sau:

Name: ch nh tn ca thuc tnh.

Type: cho php ch nh kiu d liu ca thuc tnh

Defaultvalue: cho php ch nh gi tr mc nh ca thuc tnh

ReadOnly: cho php to thuc tnh ch c

serializeAs: Enables you to specify how a property is persisted into a static repre-

sentation. Possible values are Binary, ProviderSpecific, String, and Xml.

allowAnonnyMous: cho php ngi s dng nc danh c v thit lp thuc tnh

Provider: Cho php bn kt hp thuc tnh vi mt Profile Provider ring bit.

customeProviderData:Enables you to pass custom data to a Profile provider.

Sau khi nh ngha mt Profile trong web.config, bn c th s dng i tng Provider


chnh sa cc thuc tnh Profile. Nh v d sau y bn s chnh sa hai thuc tnh
firstName v lastName trn Form, hn th na chng ta s thy mi ln trang web c load
li th gi tr ca NumberOfVisit s tng ln mt.
V d: trang showProfile.aspx

http://www.ebook.edu.vn

231

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="showProfile.aspx.cs"


Inherits="showProfile" %>
<script runat="server">
void Page_PreRender()
{
firstName.Text = Profile.firstName;
lastName.Text = Profile.lastName;

Profile.NumberOfVisits++;
numbervisit.Text = Profile.NumberOfVisits.ToString();
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
Profile.firstName = txtFirstName.Text;
Profile.lastName = txtLastName.Text;
}
</script>
<!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>show Profile</title>
</head>
<body>
<form id="form1" runat="server">
<div>
FirstName: <asp:Label ID="firstName" runat="server" /><br />
LastName: <asp:Label ID="lastName" runat="server" /><br />
Number of Visit: <asp:Label ID="numbervisit" runat="server" /><hr />

http://www.ebook.edu.vn

232

<asp:Label ID="lblfistname" runat="server" Text="FirstName:" />


<asp:TextBox ID="txtFirstName" runat="server" /><br />
<asp:Label ID="lbllastName" runat="server" Text="LastName:" />
<asp:TextBox ID="txtLastName" runat="server" /><br />
<asp:Button ID="btnUpdate" Text="Update" runat="server"
OnClick="btnUpdate_Click" />
</div>
</form>
</body>
</html>
V kt xut ca chng trnh nh sau:

Ch rng thuc tnh ca Profile c trnh by vi kiu d liu quy nh trong


thuc tnh type m ta nh ngha trong Profile.
Mt thuc tnh quan trng ca Profile n l n c kh nng gi li gi tr ca thuc tnh
khi ngi s dng ri khi trang web, v d nu bn gn thuc tnh Profile cho mt ngi s
dng, ngi s dng khng quay li website trong 500 nm th gi tr vn c gi li
cho ngi s dng.
i tng Profile s dng models Provider. mc nh Profile Provider l
SqlProfileProvider, Mc nh Provider lu tr d liu Profile trong c s d liu MS SQL Server
2005 Express c t tn l ASPNETDB.mdf, c nh v trong th mc App_Data. Nu c
s d liu khng tn ti th n s c to t ng khi chy chng trnh c s dng Profile.
Mc nh bn khng th lu tr thng tin Profile cho mt ngi s dng nc danh.
ASP.NET Framework tnh ng nht authenticate ca bn kt hp vi thng tin Profile, bn
c th s dng i tng Profile vi cc kiu chun m authentication h tr bi ASP.NET
Framework, bao gm c hai kim chng Forms v Windows
Creating Profile Groups
Nu bn cn nh ngha nhiu thuc tnh ca Profile, bn c th to cc thuc tnh bng
qun l bi vic t chc cc thuc tnh trong Groups. V d trong file web.config sau nh
ngha hai nhm thuc tnh Preferences v ContactInfo.
V d Trang web.config

http://www.ebook.edu.vn

233

<?xml version="1.0"?>
<configuration>
<system.web>
<profile>
<properties>
<group name="Preferences">
<add name="BackColor" defaultValue="lightblue"/>
<add name="font" defaultValue="Arial"/>
</group>
<group name="ContactInfo">
<add name="Email" defaultValue="hung.le.uh@itechpro.com.vn"/>
<add name="phone" defaultValue="0936302728"/>
</group>
</properties>
</profile>
</system.web>
</configuration>

V d sau y s hng dn bn cch to


<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="showProfilegoups.aspx.cs" Inherits="showProfilegoups" %>
<%@ Import Namespace="System.Drawing" %>
<script runat="server">
protected void Page_Load()
{
lblEmail.Text = Profile.ContactInfo.Email;
lblPhone.Text = Profile.ContactInfo.phone;
Style pagestyle = new Style();
pagestyle.BackColor =
ColorTranslator.FromHtml(Profile.Preferences.BackColor);

http://www.ebook.edu.vn

234

pagestyle.Font.Name = Profile.Preferences.font;
Header.StyleSheet.CreateStyleRule(pagestyle, null,"html");
}
</script>
<!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>show profile group</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Email: <asp:Label ID="lblEmail" runat="server" /><br />
Phone: <asp:Label ID="lblPhone" runat="server" />
</div>
</form>
</body>
</html>

H tr ngi s dng nc danh


Mc nh ngi s dng nc danh khng th chnh sa cc thuc tnh ca Profile, vn
l ASPNET Framework khng c phng thc kt hp d liu Profile vi ngi s dng
ring bit tr khi ngi s dng c kim chng.
Nu bn mun cho php ngi s dng nc danh chnh sa cc thuc tnh Profile, bn
c phi cho php c tnh ca ASP.NET Framework c gi l nh danh nc danh. Khi nh
danh nc danh c cho php, khi nh danh duy nht c gn n ngi s dng nc danh
v c lu tr trong trnh duyt cookie n nh.
Hn th na, bn phi nh du tt c cc thuc tnh Profile m bn mun cho php
ngi s dng nc danh vi cc c tnh cho php nc danh. V d trang web.config sau cho
php nh danh nc danh v nh ngha mt thuc tnh Profile m c th chnh sa c bi
ngi s dng nc danh.
<?xml version="1.0"?>

http://www.ebook.edu.vn

235

<configuration>
<system.web>
<authentication mode="Windows" />
<anonymousIdentification enabled="true"/>
<profile>
<properties>
<add name="NumberOfVisits" type="Int32" defaultValue="0"
allowAnonymous="true"/>
</properties>
</profile>
</system.web>
</configuration>
thuc tnh NumberOfVisits bao gm thuc tnh allowAnonymous. Ch rng file
web.config v ch cho php Form Authencation. Khi Form Authentication c cho php v
bn khng login, v khi bn l ngi s dng nc danh.
Trong v d sau s hng dn cch bn sa thuc tnh nh danh khi nh danh nc
danh c cho php.
Trang ShowAnonymousIdentification.aspx;
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="ShowAnonymousIdentification.aspx.cs"
Inherits="ShowAnonymousIdentification" %>
<script runat="server">
void Page_PreRender()
{
lblName.Text = Profile.UserName;
lblanonymous.Text = Profile.IsAnonymous.ToString();
Profile.NumberOfVisits++;
lblnumbetofanonymous.Text = Profile.NumberOfVisits.ToString();
}
protected void btnLogin_Click(object sender, EventArgs e)
{

http://www.ebook.edu.vn

236

FormsAuthentication.SetAuthCookie("Bob", false);
Response.Redirect(Request.Path);
}
protected void btnLogout_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Response.Redirect(Request.Path);
}
</script>
<!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>Show Anonymous Identification</title>
</head>
<body>
<form id="form1" runat="server">
<div>
UseName: <asp:Label ID="lblName" runat="server" /><br />
Is Anonymous: <asp:Label ID="lblanonymous" runat="server" />
Number of Visits: <asp:Label ID="lblnumbetofanonymous" runat="server"
/><br /><hr />
<asp:Button ID="btnReload" Text="Reload" runat="server" />
<asp:Button ID="btnLogin" Text="Login" OnClick="btnLogin_Click"
runat="server" />
<asp:Button ID="btnLogout" Text="Logout" OnClick="btnLogout_Click"
runat="server" />
</div>
</form>
</body>

http://www.ebook.edu.vn

237

</html>

http://www.ebook.edu.vn

238

You might also like