You are on page 1of 120

MICROSOFT .

NET (C#)
PROFESSIONAL PROGRAMMING FOR REAL LIFE

Tc gi:
Email:
Cng ty:

Phm Tun Anh


tuan.savi@live.com
Xa L Thng Tin (iNGA Co.,Ltd.)

LI NG
Ton tp gio trnh ny l kt qu ca s c ng nhng kin thc cn thit gip
bn lm ch nn tng .NET cho cng vic. Chng ti c kt nhng kinh nghim
thc t, rt gn nhng im cn lu , nhng k thut m hu ht cc cng ty
phn mm pht trin ng dng trn nn tng .NET u yu cu thc hin. Hn na
y cn l ti liu m bn c th s dng n tp li nhng kin thc sau
nhng gi ln lp v c bit trong cng vic ca cc bn.
Xut thn t mt nh pht trin, chuyn gia phn tch h thng, ti gi nhng
kin thc ct li v cn thit nht trong lp trnh trn cng ngh .NET vo ti
liu ny. Nhng v d trong ti liu l nhng v d thc t c ti trch lc
t nhng d n m ti v ng s thc hin trong sut thi gian tham gia lm
vic ti nhiu cng ty phn mm ln, l cc tnh hung c th m chng ti
gp phi, v gi y ti tng kt li gii thiu n cc bn nh mt s chia
s kinh nghim.
Sau thi gian lm vic v hot ng trn mng thng tin Vit Nam www.itgate.com.vn - c nhiu ngi bn lm vic ti cc cng ty tin hc trong
nc cng nh cc bn b ca ti trn mng gi email, hi p v yu cu ti
vit mt ti liu y v lp trnh .NET, chia s nhng kinh nghim thc t
trong cng vic mi ngi cng tham kho, phi ngn gn v tht s thc t
nhng li phi chuyn su v th hin nhng k thut cao trong lp trnh. Ti
ngh v nhng yu cu , v quyt nh vit ti liu ny vo mi bui ti sau
gi lm vic. y nh mt mn qu p li s tn nhim, yu mn m cc bn ,
ang v s dnh cho ti.
Ti rt mong nhn c nhiu kin ng gp ca cc bn cho ti liu ny, v
ti s tng hp li cp nht cho ti liu mt tt hn.
Ti mong rng ti liu ny s ng hnh cng cc bn trong cng vic.

Tc gi

Phm Tun Anh

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

BN QUYN TC GI
Ti liu ny c Phm Tun Anh thc hin nhm phc v mc ch o to nhn lc
trong chng trnh o to cng ngh .NET do Cng Cng ngh thng tin Vit Nam
thc hin, v c lu hnh ni b trong phm vi khng gian o to ca chng
trnh.
Ti liu ny c xy dng t kin thc v kinh nghim c c trong thi gian
di hot ng ca ng Phm Tun Anh, c tham kho mt s ti liu nc ngoi
c lit k ti mc THAM KHO cui ti liu ny.
Mi s sao chp, sao lu, xut bn, chuyn giao khng c s cho php ca ng
Phm Tun Anh l khng hp php.

Tc gi

Phm Tun Anh

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

MC LC
LP TRNH .NET (C#) ..................................... 8
Cu trc lp trnh C# cn bn------------------------------------------------ 9
ng dng C# Hello World................................................ 9
Tip cn C#----------------------------------------------------------------- 10
Khai bo bin trong C#.................................................. 11
Kiu d liu trong C#................................................... 11

Input/Output trong C# cn bn ...................................... 11


Cu trc iu khin trong lp trnh C# ............................. 12
Cu trc if............................................................. 12
Cu trc switch case.................................................. 12

Cu trc vng lp trong lp trnh C# ............................... 13


Vng
Vng
Vng
Vng

lp
lp
lp
lp

While......................................................
do.........................................................
for........................................................
foreach....................................................

13
14
14
14

Arrays - Mng trong C# ............................................. 15


Chng ta hc .................................................... 15
Bi tp t thc hin ............................................... 16
Hin thc khi nim hng i tng (OOP) trong C#-------------------------- 17

Lp (class) trong C# ............................................... 17


Class................................................................... 18
i tng (Objects)..................................................... 18
u im ca vic s dng Class v i tng............................. 18

Hm to (Constructors) v hm hy (Destructors) trong C# ........... 18


Constructors............................................................ 18
Destructors............................................................. 19

Fuction Overloading ................................................ 19


Tha k trong C# ................................................... 20
Overriding, Polymorphism trong C# .................................. 21
Overriding.............................................................. 21
Polymorphism............................................................ 22

Abstract Class trong C# ............................................ 24


Namespaces ......................................................... 24
Khi nim Namespace..................................................... 24
Khai bo mt Namespace.................................................. 24

Enumerator trong C# ................................................ 25


BI TP C HNG DN ............................................... 25

C S D LIU .......................................... 27
Thao tc vi h qun tr d liu MSSQL Server ...................... 28
Khi to mt h c s d liu...........................................
To bng................................................................
Truy vn d liu t mt bng............................................
Truy vn d liu c iu kin...........................................
Truy vn d liu t nhiu bng..........................................
Thm d liu vo bng...................................................
Cp nht d liu trong bng.............................................
Xa d liu t bng.....................................................

28
28
28
29
29
31
31
31

LP TRNH DNH CHO CNG VIC ........................... 32


ADO.NET v thao tc vi c s d liu--------------------------------------- 33

Gii thiu v ADO.NET .............................................. 34


M hnh ADO.NET .................................................... 34
Data Provider...........................................................
Kt ni.................................................................
Data Adapter............................................................
Thuc tnh v phng thc ca Data Adapter..............................
Data Command............................................................
Data Reader.............................................................
DataSet.................................................................
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

34
35
35
35
36
36
37

BI TP C HNG DN ............................................... 38
BI TP T RN LUYN ............................................... 38
Data Binding ....................................................... 38
Khi nim Data Binding.................................................. 38
Thc hin Data Binding thng qua cu lnh truy vn...................... 39

Lc v sp xp d liu ............................................. 39
Lc mt Dataset......................................................... 39
S dng cu lnh SQL c tham s......................................... 39

Thm, cp nht, xa d liu trong c s d liu .................... 40


Thm mi d liu vo c s d liu...................................... 40
Cp nht, xa d liu trong c s d liu............................... 40

Xy dng mt lp CSDL dng chung ................................... 42


Xy dng lp giao tip vi CSDL - DBClass............................... 42
S dng lp giao tip vi CSDL - DBClass................................ 45
Xy dng ng dng Windows Form---------------------------------------------- 45

Xy dng Windows Forms ............................................. 45


Visual Studio .NET Integrated Development Environment (IDE)............. 45
To mt d n trong Visual Studio .Net.................................. 46

Window Form Controls ............................................... 50


Windows Form............................................................
Thuc tnh Windows Form.................................................
S kin trong Windows Form..............................................
TextBox Control.........................................................
Label Control...........................................................
LinkLabel Control.......................................................
ListBox Control.........................................................
ComboBox Control........................................................
CheckBox Control........................................................
RadioButton Control.....................................................
GroupBox Control........................................................
Button Control..........................................................

50
51
51
52
52
53
53
55
55
56
56
56

To control ng trong Windows Form ................................ 56


S dng nhng lp tha k CommonDialog ............................. 56
Lp ColorDialog......................................................... 56
Lp FontDialog.......................................................... 58

Lm vic vi Menus v xy dng ng dng MDI ........................ 59


Xy dng ng dng MDI .............................................. 61
Bi tp c hng dn ............................................... 62
Bi tp t luyn ................................................... 62
Qun l li trong lp trnh C# ..................................... 63
Xy dng h thng ng dng trn nn tng Web - ASP.NET---------------------- 65

Xy dng ng dng Hello ASP.NET s dng Visual Studio .NET IDE ..... 66
S kin Page_Load()..................................................... 70

Cc i tng ASP.NET .............................................. 71


i tng Request....................................................... 71
i tng Response...................................................... 72
i tng Session....................................................... 72

Xy dng ng dng Web s dng Server Controls ...................... 73


Server Controls.........................................................
HTML Server Controls....................................................
HtmlAnchor..............................................................
HtmlInputText...........................................................
HtmlInputCheckBox.......................................................
HtmlInputRadioButton....................................................
HtmlSelect Control......................................................

73
73
74
74
75
75
75

Web Server Controls ................................................ 75


TextBox Control.........................................................
Literal Control.........................................................
FileUpload Control......................................................
Panel Control...........................................................
View & MultiView Control................................................
Calendar Control........................................................
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

76
76
76
76
77
77

DropDownList Control.................................................... 77

iu khin cc Server Controls ..................................... 78


Kt ni c s d liu trong ASP.NET ................................ 80
DataBinding trong ASP.NET...............................................
Binding d liu vo mt DropDownList Control............................
Thuc tnh IsPostBack...................................................
Web Server Control Template.............................................
Repeater Control........................................................
Gn iu khin vo Repeater.............................................

80
81
82
82
83
89

UserControl v ng dng trong xy dng WebPortal ................... 91


To v s dng UserControl..............................................
ng dng UserControl trong xy dng ng dng WebPortal..................
Hin thc kin trc WebPortal...........................................
Kin trc ti UserControl ng s dng PlaceHolder......................
Bi tp t n luyn.....................................................

91
94
95
96
97

Cu hnh cho ng dng Web ASP.NET .................................. 97


Mc <appSettings>....................................................... 98
c gi tr t th appSettings.......................................... 98
Th <customErrors>...................................................... 98

Xut bn mt ng dng Web ASP.NET .................................. 99


Trin khai mt ng dng Website ASP.NET trn IIS .................. 100
Pht trin h thng ng dng doanh nghip vi .NET------------------------- 105

Web Services. ..................................................... 106


Khi to v gi mt Web Services....................................... 106

D N ................................................. 113
Project 1.----------------------------------------------------------------- 113

D n: Website thng tin v bn hng trc tuyn ................... 113


Project 2.----------------------------------------------------------------- 113

D n: H thng qun tr kho hng ................................. 113

C THM .............................................. 113


ASP.NET & AJAX Framework--------------------------------------------------- 114
H c s d liu MySQL Server 5.0 & lp trnh thao tc d liu vi MySQL
Server.-------------------------------------------------------------------- 114

Kt ni n c s d liu MySQL ................................... 114


Regular Expressions ...................... Error! Bookmark not defined.
Gi Email t mt trang ASP.NET .................................... 118
Upload file hnh nh vo c s d liu SQL ........................ 118

THAM KHO ............................................. 121

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

LP TRNH .NET (C#)


.NET l nn tng cho php pht trin nhng ng dng mi hon ton trn c hai
mi trng Win v Web. Khi s dng .NET, i hi phi s dng mt ngn ng
khai thc ht sc mnh ca n. C# l ngn ng chng ti la chn s dng v
gii thiu n bn. C# c pht trin t C/C++ v gi nguyn tn trong gia nh
C, k t # c s dng nh mt s khng nh v tnh sc bn ca ngn ng ny,
do C# c pht m l C sharp

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

Cu trc lp trnh C# cn bn
ng dng C# Hello World
Hellow World l chng trnh u tin m u cho vic hc mt ngn ng lp
trnh no , vi C# cng th, hy bt u vi C# Hello World
V d 1:
Sau y l chng trnh C# Hello World, m ngun nh sau:
/*This is Hellow World C# Program*/
using System;
using System.Collections.Generic;
using System.Text;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Welcome to C# World");
}
}
}

Kt qu xut hin ca chng trnh nh sau

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

Tip cn C#
Nhng ch chnh
Ti phn ny, bn s hc:

Bin trong lp trnh C#.


Kiu d liu
Cu trc iu kin
Cu trc vng lp
Mng trong C#

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

10

Khai bo bin trong C#


Cc bin trong C# c khai bo theo cng thc nh sau:
AccessModifier

DataType

VariableName;

Trong ,
AccessModifier: xc nh u tin truy xut ti bin
Datatype: nh ngha kiu lu tr d liu ca bin
VariableName: l tn bin
Cp truy xut ti bin c m t nh bng di y
Access Modifier

M t

public

Truy cp ti bt k ni u

protected

Cho php truy xut bn trong mt lp ni bin ny c nh


ngha, hoc t cc lp con ca lp .

private

Ch truy xut bn trong lp ni m bin c nh ngha.

Kiu d liu trong C#


Cc kiu d liu c s dng trong ngn ng C# c m t theo bng di y
C# Data Type

M t

V d

object

kiu d liu c bn ca tt c cc
kiu khc

object obj = null;

string

c s dng lu tr nhng gi
tr kiu ch cho bin

string str = "Welcome";

int

S dng lu tr gi tr kiu s
nguyn

int ival = 12;

byte

s dng lu tr gi byte

byte val = 12;

float

S dng lu tr gi tr s thc

float val = 1.23F;

bool

Cho php mt bin lu tr gi tr


ng hoc sai

char

Cho php mt bin lu tr mt k


t

bool val1 = false;


bool val2 = true;
char cval = 'a';

Input/Output trong C# cn bn
Input /output trong C# c thc hin thng qua vic s dng hm ca lp Console
trong namespace System.
Hai hm thng s dng nht cho thao tc Input/Output l:
Console.WriteLine();
Console.ReadLine();
Trong d,
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

11

Console.WriteLine(): c s dng xut hin kt qu


Console.ReadLine(): c s dng c kt qu nhn vo.
Xem ti m ngun HelloWorld km theo ti liu ny

Cu trc iu khin trong lp trnh C#


C# cung cp hai cu trc iu khin thc hin vic la chn iu kin thc thi
chng trnh

Cu trc if
Cu trc if trong C# c m t nh sau:
if (biu thc iu kin)
{
// cu lnh thc thi nu biu thc iu kin ng
}
[else
{
// cu lnh thc thi nu biu thc iu kin sai
}]
V d:
if (20 % 4 > 0)
{
Console.WriteLine("S 20 khng chia ht cho 4");
}
else
{
Console.WriteLine("S 20 chia ht cho s 4");
}

Cu trc switch case


Cu trc swtich.case c cu trc nh sau:
// switch ... case
switch (variable)
{
case value:
Cu lnh
break;
case value:
Cu lnh
break;
case value:
Cu lnh
break;
default:
Cu lnh
break;

thc thi
thc thi
thc thi
thc thi

}
V d:
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

12

int x = 20 % 4;
switch (x)
{
case 1:
Console.WriteLine("20 chia cho 4 c s d l 1");
break;
case 0:
Console.WriteLine("20 chia ht cho 4");
break;
default:
Console.WriteLine("Khng thuc tt c cc trng hp trn");
break;
}

Cu trc vng lp trong lp trnh C#


C# cung cp cc cu trc vng lp chng trnh

While
Do while
For
Foreach

Sau y, ti xin gii thiu cng thc v v d s dng cc vn lp trn

Vng lp While
Cu trc vng lp while
while

(condition)

{
// cu lnh
}
Thc thi cu lnh hoc mt lot nhng cu lnh n khi iu kin khng c
tha mn.
V d:
using System;
class WhileTest
{
public static void Main()
{
int n = 1;
while (n < 6)
{
Console.WriteLine("Current value of n is {0}", n);
n++;
}
}
}
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

13

Vng lp do
Cu trc vng lp while
do
{
// cu lnh
}
white

(condition)

Thc thi cu lnh t nht mt ln n khi iu kin khng c tha mn.


V d:
using System;
public class TestDoWhile
{
public static void Main ()
{
int x;
int y = 0;
do
{
x = y++;
Console.WriteLine(x);
}
while(y < 5);
}
}

Vng lp for
Cu trc vng lp for
for (initialization; condition; increment / decrement)
{
// thc thi cu lnh
}

V d:
using System;
public class ForLoopTest
{
public static void Main()
{
for (int i = 1; i <= 5; i++)
Console.WriteLine(i);
}
}

Vng lp foreach
Cu trc vng lp foreach

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

14

for (initialization; condition; increment / decrement)


{
// thc thi cu lnh
}

Arrays - Mng trong C#


Mng l mt nhm nhng bin c cng mt kiu d liu. Nhng bin ny c lu
tr trong b nhng vng b nh k tip do mng cho php truy xut v thc thi
n tng phn t trong mng.
Cng thc khai bo mt mng nh sau:
Datatype [] variableName = new Datatype [number of elements];
Trong ,
number of elements: l s phn t ca mng
Datatype: kiu d liu m mng lu tr
variableName: l tn mng.
V d:
// mng kiu int
int[] iarray = new int[5];
// mng kiu string
string[] sarray = new string[6];
V d: cch khai bo khc
string[] sarray2 = { "Welcome", "to", "C# Array" };
Khi lp trnh, ty theo iu kin chng trnh m bn c th chn la mt trong
hai cch trn.

Chng ta hc
Ti y, bn tm hiu v lm quen vi lp trnh trn nn tng .NET vi ngn
ng C#. Nhng kin thc sau bn cn nm vng:

C# l mt ngn ng mnh, c bin dch v thc thi da trn nn tng .NET


ca Microsoft.
Nhng kiu d liu c bn trong C#, cch khai bo bin, mng trong C#

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

15

Cu trc iu kin, la chn if else v switch case


Cu trc vng lp while, dowhile, for, foreach

Bi tp t thc hin
cng c kin thc hc, Nhng bi tp sau y c yu cu thc hin
1. Vit chng trnh cho php nht vo 1 s nguyn dng N, v hin th gi tr
t 0 n N ra mn hnh
2. Vit chng trnh my tnh c nhn cho php nhp vo hai s v thc hin tnh
ton: nhn, chia, cng, tr, l tha
3. Vit chng trnh gii bi ton phng trnh bc hai: aX2 + bX + c = 0 vi
a,b,c l cc tham s

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

16

Hin thc khi nim hng i tng (OOP) trong C#


Chng ta s hc
Nhng ni dung trong phn ny tng kt ha nhng im quan trng nht v khi
nim OOP trong C#. Ni dung bao gm

nh ngha lp, i tng


Hm to (Constructor), hm hy (Destructor)
Function Overloading.
Tha k trong lp trnh C#.
Overriding Method.
Polymorphism
Abstract Class trong C#
Namespaces
Enumerators

Lp (class) trong C#
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

17

Class
Mt Class l mt khi nim m t cho nhng thc th c chung tnh cht v hnh
vi. Class nh ngha nhng thuc tnh v hnh vi c dng cho nhng i tng
ca lp . Do c th ni Class l mt khun mu cho cc i tng.
Cng thc to mt class
AccessModifier class className
{
// thn class
}

i tng (Objects)
i tng l mt i din, hay c th ni l mt sn phm ca mt class. Tt c
cc i tng u c chung nhng thuc tnh v hnh vi m class nh ngha. Cch
to i tng ging nh cch to mt bin c kiu d liu l Class.
AccessModifier

ClassName

ObjectName = new ClassName();

u im ca vic s dng Class v i tng


C mt s nhng u im ca vic s dng Class v i tng trong pht trin
phn mm. Nhng u im ni bt nht c lit k nh sau:

Duy tr code bng vic m hnh ha


ng gi nhng s phc tp trong m lnh t ngi dng
Kh nng s dng li
Cung cp n k tha thc thi nhiu phng thc.

Hm to (Constructors) v hm hy (Destructors) trong C#


Constructors
Constructors l nhng hm c bit cho php thc thi, iu khin chng trnh
ngay khi khi to i tng. Trong C#, Constructors c tn ging nh tn ca
Class v khng tr li gi tr.
V d
class Library
{
private int ibooktypes;
//Constructor
public Library()
{
ibooktypes = 7;
}
public Library(int value)
{
ibooktypes = value;
}
}
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

18

Destructors
L mt hm c bit c s dng lm sch b nh. Cch khai bo ging nh
Constructor nhng khng c tham s v c bt u bng du ~.
V d
class Library
{
private int ibooktypes;
//Constructor
public Library()
{
ibooktypes = 7;
}
public Library(int value)
{
ibooktypes = value;
}
~ Library()
{
//thc thi cu lnh
}
}

Fuction Overloading
Method Overloading xut hin khi trong mt class c t hai hm c cng tn. C
hai kiu Method Overloading:

Function Overloading da trn s lng tham s truyn vo


Function Overloading da trn kiu gi tr tham s truyn vo.

V d
class Library
{
// Function Overloading
public void insertbooks(int id)
{
//
}
public void insertbooks(int id, int type)
{
//
}
public void insertbooks(string id, int type)
{
//
}
}
Ba hm insertbooks trn l mt v d v function overloading trong lp trnh
C#. Trong khi hm th nht v th 2 l overloading theo s lng tham s, v hm
th 3 vi hm th 2 l overloading theo kiu tham s truyn vo.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

19

Tha k trong C#
Mt trong nhng u im ni bt ca lp trnh hng i tng l tha k,
l s s dng li nhng thuc tnh v hnh vi ca mt lp. C hai kiu k tha
trong lp trnh, n k tha v a k tha.
C# cung cp m hnh n k tha.
V d v k tha trong C#.
/* V
using
using
using

d v tha k trong l trnh C# */


System;
System.Collections.Generic;
System.Text;

namespace __OOP_Inheritance
{
class Program
{
static void Main(string[] args)
{
Dog objDog = new Dog(4);
objDog.displayProperties();
Chicken objChicken = new Chicken(2);
objChicken.displayProperties();
Console.Read();
}
}
class Animal
{
protected int ifoots;
protected string sName;
protected void setFoot(int ival)
{
ifoots = ival;
}
protected void setName(string sVal)
{
sName = sVal;
}
public void displayProperties()
{
Console.WriteLine(sName + " have " + ifoots.ToString()+ "
foots");
}
}
class Dog : Animal
{
public Dog(int ival)
{
setName("Dog");
ifoots = ival;
}
}
class Chicken : Animal
{
public Chicken(int ival)
{
setName("Chicken");
setFoot(ival);
}
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

20

}
}
Kt qu khi thc thi chng trnh

v d trn, Dog v Chicken l hai lp k tha t lp Animal, do cc thuc


tnh nh s chn, ifoots v tn sName ng nhin xut hin trong hai lp ny v
cho
php
s
dng.
Tng
t,
cc
hm
nh
setName(),
setFoot(),
displayProperties()
ti lp Animal cng c k tha xung hai lp Dog v
Chicken. Do ta c th gi nhng hm ny, v kt qu hin th khi gi hm
displayProperties()
theo i tng objDog v objChicken khc nhau nh hnh
trn.

Overriding, Polymorphism trong C#


Overriding
V d
/* V
using
using
using

d v tha k,overrding trong lp trnh C# */


System;
System.Collections.Generic;
System.Text;

namespace __OOP_Inheritance
{
class Program
{
static void Main(string[] args)
{
Dog objDog = new Dog(4);
objDog.displayProperties();
Chicken objChicken = new Chicken(2);
objChicken.displayProperties();
Tiger objTiger = new Tiger(4);
objTiger.displayProperties();
Console.Read();
}
}
class Animal
{
protected int ifoots;
protected string sName;
protected void setFoot(int ival)
{
ifoots = ival;
}
protected void setName(string sVal)
{
sName = sVal;
}
public virtual void displayProperties() // ch hm ny
{
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

21

Console.WriteLine(sName + " has " + ifoots.ToString()+ " foots");


}
}
class Dog : Animal
{
public Dog(int ival)
{
setName("Dog");
ifoots = ival;
}
}
class Chicken : Animal
{
public Chicken(int ival)
{
setName("Chicken");
setFoot(ival);
}
public void displayProperties()
{
base.displayProperties();
Console.WriteLine(sName + " have " + ifoots.ToString() + " foots
(from Chicken class)");
}
}
class Tiger : Animal
{
public Tiger(int ival)
{
setFoot(ival);
}
public override void displayProperties() // ch hm ny
{
Console.WriteLine("Tiger has " + ifoots.ToString()+ " foots");
}
}
}
Kt qu thc hin chng trnh

Hm displayProperties() trong lp Tiger overrides hm displayProperties() trong


lp Animal
Nu mt hm c nh ngha trong lp con c cng tn, kiu vi hm trong lp
cha, khi y hm trong lp con s overrides (lm n) hm trong lp cha. c
gi l overriding.

Polymorphism
V d

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

22

using System;
using System.Collections.Generic;
using System.Text;
namespace __OOP_polymorphism
{
class Program
{
static void Main(string[] args)
{
Child objchild = new Child();
Console.WriteLine("Result is " + objchild.methodA().ToString());
Console.Read();
}
}
class Parent
{
public int methodA()
{
return methodB() * methodC();
}
public virtual int methodB()
{
return 1;
}
public int methodC()
{
return 2;
}
}
class Child : Parent
{
public override int methodB()
{
return 3;
}
}
}
Kt qu chy trng trnh

Nh bnh thng ca m hnh k tha, kt qu tr v khi gi hm methodA() t i


tng ca lp Child phi l Result is 2. Nhng trong kt qu trn, kt qu l
Result is 6. Kt qu ny do hm methodB() ti lp Child override hm
methodB() ti lp Parent.
Vy ta c th khi qut Polymorphism nh sau:

Polymorphism khng ch n gin l overriding, m n l overrding thng


minh.
Khc bit gi Overriding v Polymorphism l trong Polymorphism, s
quyt nh gi hm c thc hin khi chng trnh chy.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

23

Abstract Class trong C#


Abstract Class l lp dng nh ngha nhng thuc tnh v hnh vi
nhng lp khc. Mt Abstract class c dng nh mt lp cha ca cc
T kha abstract c dng nh ngha mt abstract class. Nhng lp
ngha bng cch dng t kha abstract th khng cho php khi to i
lp y.

chung ca
lp khc.
c nh
tng ca

abstract class Shape


{
public abstract float calculateArea();
public void displaySomething()
{
Console.WriteLine("Something is displayed");
}
}
class Circle:Shape
{
float radius;
public override float calculateArea()
{
return radius * 22 / 7;
}
}
Khi thc thi chng trnh, bn khng th to i tng cho lp Shape, v n l
abstract class.

Namespaces
Khi nim Namespace
ng mang tn v tng danh ting Trn Hng o u c ti Si Gn v H Ni,
vy lm sao phn bit khi ngi nc ngoi mun hi v ng Trn Hng o.
Cch n gin nht l khi mun gi tn ng Trn Hng o ti H Ni th ta
gi ng Trn Hng o ti H Ni v tng t ti Si Gn l ng Trn Hng
o ti Si Gn v chc chn chng ta s c cu tr li cho v khch .
H Ni, Si Gn trong v d trn l mt v d cho Namespace.
Vy c th hiu Namespace l mt gi nhng thc th c thuc tnh v hnh vi c
lp vi bn ngoi. Nhng u im ca namespace c lit k nh sau:

Trnh c s trng lp tn gia cc class.


Cho php t chc m ngun mt cch c khoa hc v hp l.

Khai bo mt Namespace
namespace NamespaceName
{
// ni cha ng tt c cc class
}
Trong ,
Namespace: l t kha khai bo mt NameSpace
NamespaceName: l tn ca mt Namespace
V d
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

24

namespace CSharpProgram
{
class Basic
{
}
class Advance
{
}
}

Enumerator trong C#
Enums l mt lot tn ca nhng hng s. c s dng nh ngha nhng kiu
d liu c mt lot nhng gi tr xc nh.
V d sau m t v Enumerator
using System;
using System.Collections.Generic;
using System.Text;
namespace __OOP_polymorphism
{
class Program
{
static void Main(string[] args)
{
// Enummerator
EnumDemo eobj = newEnumDemo();
eobj.getWeekDay(DayinWeek.Saturday);
Console.Read();
}
}
public enum DayinWeek
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
public class EnumDemo
{
public void getWeekDay(DayinWeek dayoff)
{
Console.WriteLine("My weekday is " + dayoff.ToString());
}
}
}
BI TP C HNG DN
Namespace System.IO

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

25

IO Namespace cha nhng lp cho php thao tc c v ghi d liu n nhng


lung d liu v file. Mt s lp ca System.IO c lit k nh sau:

BinaryReader
Binary Writer
Stream
TextReader
TextWriter
Directory
File
FileSystemInfo

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

26

C S D LIU
Mc tiu kha hc ny
Sau phn ny, bn c th

Hiu v cc h c s d liu
Thao tc d liu vi CSDL MSSQL Server bng cc cu lnh insert, update,
delete, select c bn
Truy vn d liu t nhiu bng cng lc.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

27

C s d liu
C s d liu l tp hp nhng dng d liu c sp xp theo mt cu trc nht
nh.

H qun tr c s d liu
L phn mm c s dng qun tr cc c s d liu.

Bng (Table)
Bng c th c hiu l ni thc s cha d liu mc vt l. Bng l tp
hp nhng dng d liu c cng cu trc c nh ngha bi nhng ct (Column),
mi dng d liu trong bng cha nhng kiu d liu c qui nh bi nhng ct
ca bng.

Thao tc vi h qun tr d liu MSSQL Server


Chng ta s cng i thng vo vn thao tc vi mt h c s d
liu s dng m lnh chng trnh.
Khi to mt h c s d liu
Cu trc cu lnh n gin khi to mt h c s d liu nh sau:
CREATE DATABASE database_name

Trong
-

CREATE DATABASE

l t kha to c s d liu

database_name l tn c s d liu.

V d: to c s d liu hc tp .NET c tn _NETDB


CREATE DATABASE _NETDB

To bng
Cu trc cu lnh n gin khi to mt bng trong mt CSDL nh sau
CREATE TABLE
(
Tn ct 1
Tn ct 2

Kiu d liu,
Kiu d liu,
..

V d: to bng MyTable trong c s d liu _NETDB


CREATE TABLE MyTable
(
id int PRIMARY KEY,
vName
varchar(150),
dbirthday datetime,
igender tinyint
)

Truy vn d liu t mt bng


PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

28

Cu lnh truy vn d liu (SELECT) tr v d liu c trong bng. Cu trc cu


lnh n gin truy vn d liu t mt bng nh sau:
SELECT * | [Ct 1], [Ct 2], FROM [Table Name]
V d:
SELECT * FROM MyTable
SELECT vname FROM MyTable.

Truy vn d liu c iu kin


Nh cu lnh truy vn d liu, nhng cu truy vn d liu t bng cho php chng
ta ch ly nhng d liu cn thit theo mt iu kin no
Cu trc cu truy vn d liu c iu kin nh sau:
SELECT * | [Ct 1], [Ct 2], FROM [Table Name]
WHERE [iu kin 1] AND | OR [iu kin 2]

V d:
SELECT * FROM MyTable where vName = Phm Tun Anh
Select * from MyTable where igender = 1

Truy vn d liu t nhiu bng


MSSQL cung cp cho chng ta kh nng truy vn d liu cng lc t nhiu bng
khc nhau c chung iu kin. truy vn d liu t nhiu bng chng ta s s
dng t kha JOIN.
V d: Chng ta c hai bng d liu nh sau
Category:
icid
1
2
3
4

vname
A
B
C
D

Items

iid
1
2
3
4
5

icid
1
1
2
3
5

vvalue
V1
V2
V1
V1
V1

Chng ta c th thy hai bng ny u c trng icid, v chng ta c th ly d


liu t hai bng da vo vic so snh d gi tr trong trng icid hai bng.
Cu lnh nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

29

select
c.*,
i.iid,
vvalue
from category c
JOIN
Items i
ON c.icid = i.icid
Kt qu t c nh bng sau
1
1
2
3

A
A
B
C

1
2
3
4

V1
V2
V1
V1

Chng ta c th thy trong bng items c dng d liu vi icid = 5, v dng ny


khng tha iu kin so snh (khng tn ti trong bng category) do b loi
khi kt qu.
Chng ta tip tc thc hin cu truy vn th hai.
select
c.*,
i.iid,
vvalue
from category c
LEFT JOIN items i
ON c.icid = i.icid
Kt qu t c l
icid
1
1
2
3
4

vname
A
A
B
C
D

iid
1
2
3
4
NULL

vvalue
V1
V2
V1
V1
NULL

Chng ta c c 5 dng kt qu vi dng th 5 c gi tr l NULL, nh th cu


lnh trn, vic so snh ch da trn cc gi tr ca ct icid trn bng category
hay ni cch khc cu truy vn trn ly tt c cc dng ca bng category (bng
bn tri). Ngi ta nh ngha l LEFT JOIN
Ngc vi LEFT JOIN l RIGHT JOIN. Chng ta cng xt v d
select
c.*,
i.iid,
vvalue
from category c
RIGHT JOIN items i
ON c.icid = i.icid
Kt qu t c ngc li so vi khi dng LEFT JOIN nh sau.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

30

icid
1
1
2
3
NULL

vname
A
A
B
C
NULL

iid
1
2
3
4
5

vvalue
V1
V2
V1
V1
V1

Thm d liu vo bng


Cu trc cu lnh thm d liu vo bng nh sau
INSERT [INTO] TableName [(column_list)] VALUES data_values
V d
insert into category values('A')
insert into items values(1,'V1')
Trong hai cu lnh trn, chng ta c th thy, khng c d liu thm cho ct m
chnh, iu ny xy ra khi ct m chnh l ct t tng, khi y h thng t gn
gi tr ng vi dng c thm.

Cp nht d liu trong bng


Cu trc cu lnh cp nht d liu trong bng nh sau
UPDATE TableName SET [Ct 1]=[Gi tr 1], [Ct 2]=[Gi tr 2],
KIN]]

[WHERE [IU

V d
update items set vvalue='V5' where iid=5
Lu , khi s dng cu lnh UPDATE, nn s dng iu kin pha sau m bo
rng ch c nhng dng tha iu kin mi c cp nht.

Xa d liu t bng
Cu trc cu lnh cp nht d liu trong bng nh sau
DELETE TableName [WHERE [IU KIN]]
V d
DELETE items where iid=5
Lu , khi s dng cu lnh DELETE, nn s dng iu kin pha sau m bo
rng ch c nhng dng tha iu kin mi c xa.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

31

LP TRNH DNH CHO CNG VIC


Mc tiu kha hc ny
Sau phn ny, bn c th

Thao tc trn cng c pht trin Visual Studio .NET (IDE)


S dng nhng iu khin c bn ca ng dng Window
S dng cc lp ca lp CommonDialog
Gia tng tin ch cho ng dng bng thanh thc n
To h thng ng dng vi MDI Form.
Xy dng website, h thng ng dng trn nn tng web.
Thc hin ng dng phn tn vi Webservices.
Thc hin h thng ng dng theo yu cu ca doanh nghip.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

32

ADO.NET v thao tc vi c s d liu


Sau khi hon thnh, bn c th

Nm vng kin trc ADO.NET


Hiu r nhng i tng thuc ADO.NET
Kt ni c s d liu s dng cc hm thuc th vin OleDb
Thc hin thm, cp nht, xa d liu

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

33

Gii thiu v ADO.NET


Ngy nay, nhng ng dng thng mi cn thit qun l khi lng d liu
khng l. D liu thng c lu tr trong nhng bng quan h trong c s d
liu. Nhn d liu v thao tc d liu trc tip t mt c s d liu i hi
kin thc v nhng cu lnh thao tc trn c s d liu truy cp n d liu.
V ng dng cn giao tip vi C s d liu thc hin nhng cng vic sau:

Nhn d liu c lu tr trong c s d liu v hin th chng ra giao din


ngi dng.
Cp nht d liu, thc hin thm, hiu chnh, v xa d liu.

ADO.NET l mt m hnh c nhng ng dng .NET s dng giao tip vi c s


d liu cho vic nhn, truy cp, v cp nht d liu.

M hnh ADO.NET

Data Provider
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

34

Mt data provider c s dng cho vic kt ni n c s d liu, nhn, lu tr


d liu trong dataset, c, nhn v cp nht d liu trong c s d liu.
C hai loi data provider:

Ole DB data provider - loi ny lm vic vi tt c OleDB Provider nh Sql


OleDB Provider, Oracle OleDb provider, v Jet OleDb Provider. c bit n
trong mi trng .NET vi namespace System.Data.OleDb.
Sql Server data provider - loi ny lm vic ch vi Microsoft SQL Server.
Cho php thao tc vi tc ti u vi h c s d liu MSSQL Server, c
bit n vi namespace System.Data.SqlClient.

Kt ni
Kt ni l mt component c s dng thit lp mt kt ni n c s d liu
t mt data source. C hai kiu i tng kt ni thng s dng nht l
OleDbConnection v SqlConnection. Bng sau y hin th nhng thuc tnh v
phng thc hay s dng nht ca mt i tng kt ni.
Tn

M t

ConnectionString

Cung cp thng tin nh datasource, tn c s d liu, c s


dng thit lp kt ni vi mt c s d liu

Open()

M
mt
kt
ni
ConnectionString

Close()

c s dng ng kt ni vi data source

State

c s dng kim tra trng thi ca mt kt ni. 0: kt


ni ang ng, 1: kt ni ang m.

vi

datasource

khai

bo

ti

V d v vic s dng i tng kt ni


string connectionstring
= "PROVIDER=SQLOLEDB;
server=(local);uid=_net;pwd=;database=_NET";
OleDbConnection conObj = new OleDbConnection(connectionstring);
conObj.Open();

Data Adapter
Data Adapter l thnh phn ca ADO.NET, c tc dng chuyn tip d liu t v
n c s d liu. data Adapter nhn d liu t c s d liu vo mt DataSet.
Khi bn thay i d liu trong dataset, cng l thay i trong c s d liu bi
dataadapter. C hai kiu data adapter thng dng cu hnh kt ni n c s
d liu trong Visual Studio .NET:

SqlDataAdapter - lm vic ch vi h c s d liu MS SQL Server


OleDbDataAdapter - kiu ny c cu hnh lm vic vi hu ht cc h c
s d liu c h tr bi OleDb data provider.

Data Adapter s dng i tng kt ni OleDbConnection v SqlConnection c


cung cp bi data provider giao tip vi c s d liu.

Thuc tnh v phng thc ca Data Adapter


PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

35

Data Adapter giao tip vi c s d liu trong khi nhn, thm mi, xa v cp
nht d liu. Nhng thuc tnh sau y c thit lp thc hin nhng tc v
khc nhau trn mt h c s d liu

SelectCommand - nhn d liu t CSDL thng qua mt cu truy vn hoc stored


procedures
InsertCommand - thm d liu vo CSDL qua cu lnh insert.
UpdateCommand - cp nht c s d liu vi cu lnh update
DeleteCommand - xa d liu khi c s d liu thng qua cu lnh delete
Fill() - l phng thc y d liu t CSDL vo mt dataset.
Update() - l phng thc thc thi InsertComand, Update Command, hoc
DeleteCommand cho mi cu lnh thm, hiu chnh hoc xa dng thc hin
thay i trong CSDL.

Data Command
DataCommand l i tng thc thi nhng cu lnh SQL hoc stored procedure c
s dng thao tc vi CSDL. Data Command l i tng ca lp SqlCommand v
OleDbCommand.
V d s dng Data Command

string connectionstring
= "PROVIDER=SQLOLEDB;
server=(local);uid=_net;pwd=;database=_NET";
OleDbConnection conObj = new OleDbConnection(connectionstring);
conObj.Open();
OleDbCommand cmd = new OleDbCommand("delete from books where
ibookid='003'",conObj);
int result = cmd.ExecuteNonQuery();
conObj.Close();

Data Reader
Data reader c s dng ch nhn d liu t mt data source. S dng data
reader nhn c kt qu nhanh hn v khng tn b nh ti mi thi im v ch
mt hng d liu thc s c lu tr trong b nh.
Cc thuc tnh ca i tng DataReader:
Tn

M t

Read()

Phng thc c s dng c mt dng.

Close()

c s dng ng i tng DataReader.

NextResult

c s dng di chuyn n hng d liu tip theo trong


trng hp cu lnh truy vn tr li nhiu dng kt qu

V d s dng Data Reader


private void button2_Click(object sender, EventArgs e)
{

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

36

string connectionstring = "PROVIDER=SQLOLEDB;


server=(local);uid=_net;pwd=;database=_NET";
OleDbConnection conObj = new OleDbConnection(connectionstring);
conObj.Open();
OleDbCommand cmd = new OleDbCommand("select * from books");
OleDbDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
lbltestdatareader.Text = dr["BookID"].ToString();
}
conObj.Close();
}

DataSet
L i tng nhn d liu t c s d liu thng qua DataAdapter, DataSet hot
ng nh mt c s d liu o cha nhng bng, dng, v ct.
M hnh DataSet nh sau

M hnh Dataset

Cc i tng thuc tnh cn quan tm vi i tng DataSet bao gm:


DatatableCollection,
DataRelationCollection,
ExtendedProperties,
DataTable,
DataRelation, DataRowCollection, DataView, PrimaryKey, DataColumnCollection. Chi
tit nhng i tng thuc tnh ny s c cp trong cc phn sau.
V d s dng DataAdapter y d liu t c s d liu vo DataSet.
private void button3_Click(object sender, EventArgs e)
{
string connectionstring =
"PROVIDER=SQLOLEDB;server=(local);uid=_net;pwd=;database=_NET";
OleDbConnection conObj = new OleDbConnection(connectionstring);
conObj.Open();
OleDbCommand cmd = new OleDbCommand("select * from books");
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

37

OleDbDataAdapter da = new OleDbDataAdapter(cmd);


DataSet ds = new DataSet();
da.Fill(ds, "books");
conObj.Close();
}

BI TP C HNG DN
Yu cu
ng dng qun l cuc gi cn cung cp kh nng xem chi tit khch hng cho b
phn Bn hng. Hy to mt ng dng hin th chi tit khch hng cho phng
Kinh doanh.

Gii quyt
Bn thc hin nhng bc sau
1.
2.
3.
4.

To mt
To mt
To mt
Nhn v

kt ni
Data Adapter
Dataset
hin th d liu t c s d liu.

BI TP T RN LUYN

Yu cu
Mt ng dng cn c xy dng cho php ngi qun l ca cng ty NetNam
Telecommunication xem nhng n t hng ca khch t c s d liu. Thm vo
, vi mi t hng, phn trm chi ph ca mt sn phm cn c lit k.

Hng dn
1. To mt data adapter
2. To mt Dataset
3. Nhn, xem d liu t c s d liu.

Data Binding
Khi nim Data Binding
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

38

Sau khi nhn d liu t c s d liu, d liu cn c hin th trn nhng


control ca Windows Form ngi s dng thy. Qu trnh gi l Data
Binding.

Thc hin Data Binding thng qua cu lnh truy vn


Yu cu
Gim c nhn s cng ty HHO cn xem danh sch nhn vin trong cc phng ban
ca cng ty. Mt ng dng c yu cu xy dng thc hin vic ny.
Hng dn:
Thc hin theo video hng dn. Tn video: PTA_NET_2_0_ADO_Databinding.WMV

Lc v sp xp d liu
D liu ly v t c s d liu bi cu lnh truy vn
dng d liu trong mt bng. Yu cu t ra l ch
tng ng vi mt m s no . gii quyt vn
cch thc thc hin: lc d liu trong DataSet v
thit qua cu lnh SQL c tham s.

select bao gm tt c cc
ly mt s dng xc nh
ny, ADO.NET cung cp hai
thc hin ly d liu cn

Lc mt Dataset
D liu t mt table trong c s d liu c lt ton b v vo Dataset, sau
tin hnh lc nhng dng d liu cn thit.
V d sau m t cch thc hin ny.
private void button4_Click(object sender, EventArgs e)
{
string connectionstring = "PROVIDER=SQLOLEDB;
server=(local);uid=_net;pwd=;database=_NET";
OleDbConnection conObj = new OleDbConnection(connectionstring);
conObj.Open();
OleDbCommand cmd = new OleDbCommand("select * from books",conObj);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "books");
MessageBox.Show( ds.Tables["books"].Rows.Count.ToString());
// filter data
DataView dv = new DataView(ds.Tables["books"]);
dv.RowFilter = "fprice>20000";
dv.Sort = "fprice DESC";
MessageBox.Show(dv.Table.Rows.Count.ToString());
conObj.Close();
}

S dng cu lnh SQL c tham s


V d sau s ly v danh sch nhng quyn sch c nh xut bn l cng ty pht
hnh sch nh xut bn tr. (m s inxb=2);
string connectionstring = "PROVIDER=SQLOLEDB;
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

39

server=(local);uid=_net;pwd=;database=_NET";
OleDbConnection conObj = new OleDbConnection(connectionstring);
conObj.Open();
OleDbCommand cmd = new OleDbCommand(" select * from books where
inxb=?", conObj);
cmd.CommandType = CommandType.Text;
// truyn tham s vo cu lnh SQL
cmd.Parameters.AddWithValue(@ibookid", 2);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "books");
MessageBox.Show(ds.Tables["books"].Rows.Count.ToString());
conObj.Close();
Bn lu vi dng lnh
cmd.Parameters.AddWithValue(@ibookid", 2);
y l cch s dng ngn gn khi truyn tham s m nhng chuyn gia pht trin
phn mm thc t thng s dng, nguyn mu cu lnh c cng thc nh sau:

OleDbParameter param = new


OleDbParameter("@paramname",OleDbType.VarChar);
param.Value = "value";
trong , OleDbType l th vin nhng kiu d liu tng ng vi nhng kiu d
liu lu tr trong h c s d liu.

Thm, cp nht, xa d liu trong c s d liu


Thm mi d liu vo c s d liu
V d
string connectionstring = "PROVIDER=SQLOLEDB;
server=(local);uid=_net;pwd=;database=_NET";
OleDbConnection conObj = new OleDbConnection(connectionstring);
conObj.Open();
OleDbCommand cmd = new OleDbCommand("insert books values(?,?,?,?)",
conObj);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue(@inxb", 2);// Nha xuat ban tre
cmd.Parameters.AddWithValue(@vmasach", "MS0002");
cmd.Parameters.AddWithValue(@vtensach", "Lp trnh .NET cho cuc
sng");
cmd.Parameters.AddWithValue(@fgia", 75000);
cmd.ExecuteNonQuery();
MessageBox.Show(" thm mt sch vo CSDL");
conObj.Close();
v d trn, cu lnh SQL insert c thc hin kt hp vi i tng tham s
Parameters y d liu vo c s d liu thng qua i tng Command.

Cp nht, xa d liu trong c s d liu


Qu trnh cp nht v xa d liu tng t nh vi thm mi c s d liu.
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

40

V d

private void button7_Click(object sender, EventArgs e)


{
string connectionstring = "PROVIDER=SQLOLEDB;
server=(local);uid=_net;pwd=;database=_NET";
OleDbConnection conObj = new OleDbConnection(connectionstring);
conObj.Open();
OleDbCommand cmd = new OleDbCommand("update books set
vtensach=?,fgia=? where vmasach=?",conObj);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue(@vtensach", ".NET for Real Life");
cmd.Parameters.AddWithValue(@fgia", 85000);
cmd.Parameters.AddWithValue(@vmasach", "MS0002");
cmd.ExecuteNonQuery();
MessageBox.Show(" sa i ni dung sch trong CSDL");
conObj.Close();
}
Xa d liu

private void button8_Click(object sender, EventArgs e)


{
string connectionstring = "PROVIDER=SQLOLEDB;
server=(local);uid=_net;pwd=;database=_NET";
OleDbConnection conObj = new OleDbConnection(connectionstring);
conObj.Open();
OleDbCommand cmd = new OleDbCommand("delete from books where
vmasach=?", conObj);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue(@vmasach", "MS0002");
cmd.ExecuteNonQuery();
MessageBox.Show(" sa i ni dung sch trong CSDL");
conObj.Close();
}

Chng ta hc
By gi, bn c th hon ton thao tc trn c s d liu t ng dng bn
pht trin. Mt s im sau bn cn lu ghi nh

Kt ni lun phi c ng li sau mi ln truy xut n c s d liu.


S dng i tng Data Adapter, DataSet v i tng Command trong thao
tc nhn d liu t CSDL

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

41

S dng Command thao tc cp nht, thm mi, xa d liu


S dng DataReader c tc truy xut (ch nhn) d liu nhanh nht.

i tng Parameters c s dng truyn gi tr cho tham s trong cu


lnh SQL

Xy dng mt lp CSDL dng chung


Khi thao tc vi CSDL, vic to kt ni, m kt ni, thc hin cu truy vn d
liu, v ng kt ni c thc hin rt nhiu ln, S l rt tt thi gian
nu chng ta c lp i lp li qu trnh ny.
Chng ta s cng xy dng mt lp chuyn bit thc hin vic giao tip vi
CSDL, v ngi lp trnh s khng phi mt cng thc hin li cc bc thao tc
vi cc i tng nh Connection, DataAdapter v cui cng l gip gim thiu
thi gian cho vic xy dng ng dng.

Xy dng lp giao tip vi CSDL - DBClass


M lnh ca lp DBClass nh sau
using System;
using System.Data;
using System.Data.OleDb;
public class OleDBClass
{
static string strConStr = "";
public static string ConnectingString
{
get
{
if (!strConStr.Equals(""))
return strConStr;
else
return null;
}
set
{
strConStr = value;
}
}
public static OleDbConnection GetConnection()
{
OleDbConnection con = new OleDbConnection(strConStr);
con.Open();
return con;
}
public static DataTable GetData(OleDbCommand cmd)
{
try
{
if (cmd.Connection != null)
{
using (DataSet ds = new DataSet())
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

42

{
using (OleDbDataAdapter da = new OleDbDataAdapter())
{
da.SelectCommand = cmd;
da.Fill(ds);
return ds.Tables[0];
}
}
}
else
{
using (OleDbConnection conn = GetConnection())
{
using (DataSet ds = new DataSet())
{
using (OleDbDataAdapter da = new OleDbDataAdapter())
{
da.SelectCommand = cmd;
da.SelectCommand.Connection = conn;
da.Fill(ds);
return ds.Tables[0];
}
}
}
}
}
finally
{
}
}
public static OleDbDataReader GetReadOnlyData(OleDbCommand cmd)
{
try
{
if (cmd.Connection != null)
{
return cmd.ExecuteReader();
}
else
{
using (OleDbConnection conn = GetConnection())
{
cmd.Connection = conn;
datareader = cmd.ExecuteReader();
return cmd.ExecuteReader();
}
}
}
finally
{
}
}
public static DataSet GetDsData(OleDbCommand cmd)
{
try
{
if (cmd.Connection != null)
{
using (DataSet ds = new DataSet())

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

43

{
using (OleDbDataAdapter da = new OleDbDataAdapter())
{
da.SelectCommand = cmd;
da.Fill(ds);
return ds;
}
}
}
else
{
using (OleDbConnection conn = GetConnection())
{
using (DataSet ds = new DataSet())
{
using (OleDbDataAdapter da = new OleDbDataAdapter())
{
da.SelectCommand = cmd;
da.SelectCommand.Connection = conn;
da.Fill(ds);
return ds;
}
}
}
}
}
finally { }
}
public static DataTable GetData(string sql)
{
try
{
using (OleDbConnection conn = GetConnection())
{
using (OleDbCommand cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
using (DataSet ds = new DataSet())
{
using (OleDbDataAdapter da = new OleDbDataAdapter())
{
da.SelectCommand = cmd;
da.SelectCommand.Connection = conn;
da.Fill(ds);
return ds.Tables[0];
}
}
}
}
}
finally
{
}
}
public static void ExecuteNonQuery(OleDbCommand cmd)
{
try
{
using (OleDbConnection conn = GetConnection())
{

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

44

cmd.Connection = conn;
cmd.ExecuteNonQuery();
}
}
finally
{
}
}
public static object ExecuteScalar(OleDbCommand cmd)
{
try
{
using (OleDbConnection conn = GetConnection())
{
cmd.Connection = conn;
return cmd.ExecuteScalar();
}
}
finally
{
}
}
}

S dng lp giao tip vi CSDL - DBClass


Vic by gi l chng ta s s dng lp CSDL nh th no. Sau y l m lnh mu
s dng.

DBClass.ConnectingString = "PROVIDER=SQLOLEDB;
server=(local);uid=_net;pwd=;database=_NET";
// vic gi mt cu truy vn by gi n gin l vic gi hm trong lp
DBClass
DataTable dt = DBClass.GetData("select * from items");
Chng ta c th thy l vic thc hin cu truy vn d liu t bng items
tr nn cc k n gin hn bao gi ht. Khng cn phi m kt ni Connection,
s dng DataAdapter bn vn c c d liu t bng items. Ni cho ng th
chng ta a nhng cng don ny vo trong lp OleDBClass v gi y chng ta
ch quan tm ti mc ch s dng cu truy vn m khng mt qu nhiu m lnh
thc hin cc bc chun b.

Xy dng ng dng Windows Form


Xy dng Windows Forms
Visual Studio .NET Integrated Development Environment (IDE).

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

45

Cung cp cho bn nhng giao din chung cho vic pht trin nhiu loi d n khc
nhau trn nn tng .NET. IDE cho php kh nng thit k giao din ngi dng cho
ng dng, vit m lnh, bin dch, v kim li cho ng dng. Visual Studio .NET
cung cp nhiu ngn ng pht trin ng dng trong b .NET ca Microsoft nh:
Visual Basic, Visual C#, Visual C++.

To mt d n trong Visual Studio .Net


Chy ng dng Visual Studio 2005 t thc n Start Program Microsoft Visual
Studio 2005 Microsoft Visual Studio 2005. To mi ng dng bng cch nhn vo
menu File New Project. Ca s to mi Project xut hin.

Trong ca s New Project, Project Types pane hin th danh mc nhng kiu
project m bn c th to trong VS. Chng ta quan tm ti hai loi project l
Visual C# v Setup and Deployment. Trong khi Visual C# l kiu d n cho php
to ra ng dng bng ngn ng C#, th Setup and Deployment l kiu project
trin khai d n n ngi dng cui.
Chn Visual C# Windows ti Project Types.
ca s Templates, mt s mu ng dng c sn gip ngi pht trin nhanh
chng to ra ng dng ph hp theo yu cu. C cc kiu project template sau cn
ch nht:

Windows Application: c dng to nhng ng dng Windows.


Class Library: s dng to ra nhng compnent s dng li trong cc d
n khc
Windows Controls Library: to nhng cng c cho mi trng ng dng Window
Console Application: to ra ng dng console chy t dng lnh, giao din
k t.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

46

Chn Windows Application


t tn cho d n u tin l HelloWindow ti Name
Chn th mc lu tr d n ti Location
Click OK
Mn hnh d n xut hin nh sau
Solution Exlorer

ToolBox

Error List

Window Form

Properties Window

Mn hnh Visual Studio .NET IDE

Chng ta quan tm n nhng ca s sau:


Window Form: ni s dng thit k giao din chng trnh.
ToolBox: cha ng nhng controls c xy dng sn. C nhiu tab trong ca s
ToolBox lit k nhng control theo nhng loi khc nhau.
Solution Explorer: lit k tn d n, nhng file thit k, m ngun, ca ng
dng
Properties Window: ca s cha ng nhng thuc tnh ca mt control no , v
d Form1 c cc thuc tnh nh Text, StartPosition, ShowinTaskBar
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

47

Erros List: ni xut hin nhng li ca chng trnh


Tip tc thc hin ng dng, ti Window Form, click chut phi, mt popup Menu
xut hin, trong c mc View Code, mc ny cho php xut hin ca s son
tho m lnh iu khin chng trnh

Ca s m lnh chng trnh hin th nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

48

Ca s m lnh cho php nh pht trin son tho m lnh iu khin chng trnh

Tip tc thc hin ng dng, tr li mn hnh Window Form, double click vo


Form1, v son tho m lnh nh sau vo hm Form_Load() do chng trnh khi
to.

private void Form1_Load(object sender, EventArgs e)


{
MessageBox.Show("Welcome to Window Form");
}
Chn menu Debug Start Debugging (hoc nhn F5) chy ng dng.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

49

Bn hon tt ng dng Window Form u tin vi C#. by gi, ti cng bn tip


cn n nhng iu khin trong th vin WindowsForm c cung c sn trong C#.

Window Form Controls


Windows Form
Mt Windows Form l mt ca s c xut hin trong mt ng dng. Mi Windows
Form
l
mt
lp
c
k
tha
t
lp
Form
nm
trong
Namespace
System.Windows.Forms

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

50

Windows Form

Thuc tnh Windows Form


Nhng thuc tnh chung ca Windows Form c lit k theo bng sau
Properties

M t

Name

L thuc tnh xc nh tn ca form, mc nh, thuc


tnh Name ca form u tin trong ng dng l Form1

Backcolor

Thuc tnh xc nh mu nn ca form

BackgroundImage

Thuc tnh xc nh hnh nn cho form

Font

Thuc tnh xc nh kiu, kch thc, v loi font c


hin th trn form v trong nhng controls trong form.

Size

Kch thc ca form bao gm: Width v Height

Start Position

Thuc tnh xc nh v tr mc nh xut hin ca Form trn


mn hnh my tnh ngi s dng, c cc thuc tnh sau:
-

Manual - v tr v kch thc ca form phc thuc vo v


tr xut hin ca n
CenterScreen - xut hin chnh gia mn hnh
WindowsDefaultLocation - form xut hin ti v tr mc
nh ca Windows theo kch thc ca form.
Windows DefaultBounds - form c hin th ti v tr
mc nh ca Windows v cc chiu ca chng ph thuc
vo h iu hnh Windows.
Center Parent - form c m nh mt ca s con ca mt
form khc v xut hin ti v tr chnh gia so vi form
cha.

Text

Xc nh tiu ca form ti Title Bar

WindowState

Xc nh trng thi xut hin ca form: normal, maximized,


hay minimized.

S kin trong Windows Form


Nhng s kin trong Windows Form c lit k nh bng sau
Events

M t

Click

S kin ny xy ra khi ngi dng click vo bt k ni no


trn Windows Form

Closed

S kin ny xy ra khi mt form c ng li

Deactivate

S kin xy ra khi mt form b mt trng thi s dng

Load

S kin xy ra khi mt form c ti trong b nh cho ln


u tin.

MouseMove

S kin ny xut hin khi chut c r trn mt form

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

51

Events

M t

MouseDown

S kin xy ra khi chut c nhn trn form

MouseUp

S kin xy ra khi chut c th trn form.

Hm thao tc vi Windows Form


Methods

M t

V d

c s dng xut hin


mt form bng cch set
thuc tnh Visible ca form
y l True
S dng kch hot trng
thi s dng ca Form v
a trng thi s dng v
Form y.

Show()

Activate()

Form1 frmObj = new Form1();


frmObj.Show();

frmObj.Activate();

Close()

Dng ng mt Form

frmObj.Close();

SetDesktopLocation()

Hm ny dng nh v tr
ca Form trn mn hnh

SetDesktopLocation(100,150)

TextBox Control
TextBox l iu khin cho php nhn gi tr t ngi dng trn mt Form. Mc
nh gi tr ln nht m TextBox nhn l 2048 k t.

TextBox Control
Property

M t

V d

Text

Xc nh gi tr hin th
bn trong TextBox

txtUserName.Text=pta30000;

Multiline

Cho php TextBox hin th


nhiu dng ch.

txtContent.Multiline = true;

PasswordChar

Thuc tnh ny cho php ly


mt k t lm i din cho
tt c cc k t khc c
nhp vo t ngi dng

txtPassword.PasswordChar=*;

Label Control
Control c s dng hin th ch trn form v khng cho php ngi dng thay
i. Label c s dng m t thng tin cho nhng control khc trn Form.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

52

Label Control
Dng ch xut hin bn trn TextBox l Label, c mc ch gii thch cho
TextBox.

LinkLabel Control
LinkLabel c s dng hin th mt chui nh mt lin kt. Khi bn nhn vo
lin kt, n s m ra mt form khc hoc mt Website.
m ra mt form khc, .NET cung cp s kin LinkClicked, bn thc hin nh
sau:
private void linkLabel1_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
Form1 frmobj = new Form1();
frmobj.Show();
}
m mt website, bn c th dng on m sau t bn trong s kin Link
private void linkLabel1_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start( "http://www.itgatevn.com.vn");
}

ListBox Control
ListBox c s dng hin th mt danh sch phn t n ngi dng. Mt ngi
dng c th chn mt trong nhng phn t ny.
Bn c th thm danh mc nhng phn t vo trong mt ListBox bng cch, chn
ListBox, ti ca s Properties Window, chn thuc tnh Items, nhn vo nt
v
ca s String Collection Editor xut hin nh hnh di.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

53

Nhp vo VietNam, g Enter, nhp vo USA, g Enter. Sau nhn OK. ListBox ca
bn s c hai phn t VietNam v USA.
Bn cng c th thm nhng phn t vo ListBox ti lc chy chng trnh bng
cch s dng phng thc Add() ca thuc tnh Items trong ListBox.
lstitems.Items.Add("German");
lstitems.Items.Add("China");
Nhng thuc tnh thng s dng nht ca ListBox c lit k theo bng di y
Property

M t

V d

SelectionMode

Xc nh cch thc m ngi


dng la chn nhng phn t
trong ListBox. C 4 gi tr
- None: ngi dng khng th
chn bt c phn t no
trong ListBox
- One: ngi s dng ch
chn mt gi tr t
ListBox
- MultiSimple: cho php
ngi s dng chn nhiu
phn t t ListBox.
- MultiExtended: ngi dng
c th chn nhiu phn t
v s dng phm SHIFT,
CTRL v phm mi tn
chn nhng phn t t
ListBox.

ListBox1.SelectionMode =
SelectionMode. MultiSimple;

Sorted

Thuc tnh xc nh khi no

ListBox1.Sorted = true;

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

54

Property

M t

V d

nhng phn t trong ListBox


c th c sp xp
SelectedIndex

Thuc tnh cho php gn hoc


nhn v tr c chn hin
ti trong ListBox.

ListBox1.SelectedIndex = 2;

SelectedItem

Thuc tnh ny c dng


gn hoc nhn phn t ang
c chn

MessageBox.Show(
ListBox1.SelectedItem)

ComboBox Control
ComboBox c s dng hin th danh sch nhng phn t th xung. ComboBox l
s kt hp ca TextBox cho php ngi dng nhp gi tr v mt danh sch th
xung cho php ngi s dng chn phn t.

ComboBox
Hu ht nhng thuc tnh ca ComboBox ging nh thuc tnh ca ListBox, nhng
ComboBox c th thuc tnh Text.
Thuc tnh Text: cho php gn hoc nhn gi tr c ngi s dng nhp vo t
ComboBox.
thm nhng phn t vo ComboBox, tng t nh vi ListBox, bng cch s dng
phng thc Add() ca thuc tnh Items.

ComboBox1.Items.Add(VietNam);
ComboBox1.Items.Add(Thailand);

CheckBox Control
Control ny c dng gn ty chn Yes/No hoc True/False. Nhng thuc tnh
thng s dng ca CheckBox
Property

M t

V d

Text

Thuc tnh ny s dng


nhn hoc gn chui k t l
tiu ca Checkbox

CheckBox1.Text = Yes;

Checked

L thuc tnh c s dng


xc nh checkbox c chn

checkBox1.Checked = true;

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

55

RadioButton Control
RadioButton c dng cung cp s la chn mt trong mt nhm tiu ch cho
ngi dng. Ch mt RadioButton c chn trong mt nhm. Nhng thuc tnh
thng s dng ca RadioButton ging nh CheckBox, bao gm: Text, Checked.

GroupBox Control
c s dng nhm nhng control lin quan li vi nhau. GroupBox thng c
s dng nhm hai hay nhiu RadioButton cung cp mt s la chn duy nht
gia chng.

Button Control
Button c s dng thc hin mt tc v khi ngi s dng nhn vo n.
private void button1_Click(object sender, EventArgs e)
{
this.button1.Text = this.Text;
}
on m lnh trn thc hin vic gn Caption ca button1 bi Caption ca Form.

To control ng trong Windows Form


Bn cnh vic to nhng control khi thit k, bn cng c th ti nhng iu
khin khi chng trnh ang thc thi. V d sau minh ha vic ti mt TextBox
vo Form.

TextBox txtBox = new TextBox();


txtBox.Text = "Dynamic TextBox";
this.Controls.Add(txtBox);

S dng nhng lp tha k CommonDialog


Lp ColorDialog
ColorDialog l lp cng c mu sc cho php ngi s dng la chn mu sc t
bng mu. S dng cng c ny bng cch ko th ColorDialog t ToolBox vo trong
Form.
Bn mong mun rng sau khi nhn Button Change Backgroud Color v la chn mu
sc th mu nn ca Form s thay i theo mu c chn, bn thc hin nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

56

Ko th ColorDialg vo Form
Ti s kin Click() ca Button, thc hin on m lnh

private void button1_Click(object sender, EventArgs e)


{
colorDialog1.ShowDialog();
this.BackColor = colorDialog1.Color;
}
Kt qu c hin th nh hnh sau

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

57

Mu nn ca Form c thay i khi la chn mu t bng mu

Lp FontDialog
Ging nh ColorDialog, FontDialog c s dng ngi dng la chn kiu hin
th, kch thc ca ch. s dng FontDialog, bn thc hin theo cc bc sau
y
Ko th FontDialog t ToolBox vo Form.
Thc hin on m lnh sau

private void button2_Click(object sender, EventArgs e){


fontDialog1.ShowDialog();
this.label1.Font = fontDialog1.Font;
}

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

58

La chn Font thay i vi FontDialog

Lm vic vi Menus v xy dng ng dng MDI


Trong mi trng Windows, bn c th s dng Menu tng s tin ch cho ngi
s dng ng dng. Menus c hai dng, Menu xut hin ti thanh Menu v menu xut
hin khi ngi s dng nhn chut phi, c gi l Context menus.
Menus xut hin ti Menu Bar c khi to bng cch ko th control MenuStrip
t ToolBox vo Form Design, khi y Menu xut hin cho php bn khi to danh mc
menu nh hnh sau

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

59

Khi to Menu bng cng c MenuStrip

Context Menus c xut hin khi ngi s dng nhn chut phi. to ra
context menu, bn c th thc hin nh sau:
Ko th iu khin ContextMenuStrip vo ca s thit k ng dng. ContextMenu
xut hin nh hnh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

60

ContextMenu xut hin khi c ko th t ToolBox

Xy dng ng dng MDI


ng dng Multiple Document Interface (MDI) l ng dng cho php hin th nhiu
ca s ng dng ti cng thi im. Mt v d v ng dng MDI l chng trnh
Microsoft Word, bn c th to cng lc nhiu ca s son tho trn cng mt ca
s chung ca ng dng.
Mt ng dng MDI c th c mt hoc nhiu form MDI cha, v mi form MDI cha ny
c th cha nhiu form MDI con. Mt MDI form cha c th cha nhiu MDI form con,
nhng mt MDI form con khng th thuc v nhiu MDI form cha.
MDI cha c th c khi ti ti thi im thit k ng dng hoc khi chng
trnh chy bng cch gn thuc tnh IsMdiContainer ca Form l true.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

61

ng dng MDI Form

Bi tp c hng dn
1. Xy dng ng dng my tnh c nhn thc hin cc php tnh cn bn: cng,
tr, nhn, chia, ly tha
2. To mt giao din cho ng dng son tho m phng ng dng Microsoft Word
s dng MDI Form bao gm cc Menu: File, Edit, View, Insert, Format,
Window, Help
3. Xy dng ng dng son tho vn bn (Word Pad) s dng MDI Form to
trn.

Bi tp t luyn
Xy dng tr chi Tp g bn phm cho php xut hin nhng k t trn bn phm
v so snh vi phm m ngi s dng nhp vo. Tnh kt qu s ln ngi chi g
ng phm v s ln ngi chi g sai.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

62

Qun l li trong lp trnh C#


Khi lp trnh, i khi ngi pht trin gp nhng trng hp li xy ra khi
chng trnh ang chy. qun l v iu khin nhng li ny, C# cung cp cho
ngi pht trin cch thc by li chng trnh ca bn chy xuyn sut thng
cc t kha try, catch v finally. V d sau m t cch s dng trycatch, v
finally

int SafeDivision(int x, int y)


{
try
{
return (x / y);
}
catch (System.DivideByZeroException dbz)
{
System.Console.WriteLine("Li khi chia mt s cho 0!");
return 0;
}
}

v d trn, bn c th thy vi hm SafeDivision nu truyn vo hai tham s x=2,


y=0 th chng trnh s gp li. Nhng khi chy chng trnh, nu bn gi hm
SafeDivision, v truyn vo hai tham s nh trn s xut hin dng ch Division
by zero attempted!!, nh th li ca on m lnh c qun l. S d li xy
ra c qun l l do chng ta s dng by li m C# cung cp thng qua t
kha trycatch. Cng thc ca trycatch nh sau:
try
{
// Cu lnh thc hin c th pht sinh li
}
catch(Type x)
{
// Cu lnh x l khi gp li
}
finally
{
// Cu lnh lun c thc thi
}

Vi cng thc trn, bn cn ch mt im, nhng cu lnh trong khi finally


c xem nh lun lun c thc thi.

Bi tp c hng dn
1. Xy dng ng dng cho php qun l danh sch nhn vin ca mt cng ty
theo phng ban. Chi tit nhn vin cng ty bao gm: m s, h v tn, ngy

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

63

sinh, gii tnh, a ch, in thoi, ngy vo lm, ngy kt thc, chi
tit phng ban bao gm: m s phng ban, tn phng ban.
2. Xy dng chng trnh qun l kho hng, sn xut ca cng ty chi
GlobalToys.
Video hng dn thc hin chng trnh PTA_NET_APP_ADO_NET.WMV

D n t n luyn
Xy dng chng trnh qun l kho hng vi nhng yu cu sau

Qun l danh mc sn phm hng ha trong kho


Qun l xut nhp kho
Bo co thng k: s lng hng ha trong kho, bo co xut kho, bo co nhp
kho.
Phn quyn s dng tnh nng ca chng trnh theo cc cp sau:
o
o

Nhn vin nhp/xut hng: s dng ca s nhp, xut hng


Qun tr vin: s dng tt c tnh nng ca chng trnh.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

64

Xy dng h thng ng dng trn nn tng Web - ASP.NET


Kha hc, xy dng h thng ng dng trn nn tng web , tp trung pht trin k
nng, k thut pht trin h thng ng dng Web s dng ASP.NET.
i ti y, bn thnh tho v lp trnh OOP vi C#, thao tc vi c s d
liu thng qua ADO.NET. Do vy, t phn ny, ti hng bn n nhng v d c
th l nhng tnh hung cn x l trong cng vic m khng ch trng nhiu n
l thuyt.
Mc tiu sau khi kt thc

Nm vng m hnh pht trin web ng vi ASP.NET.


Hin th, truy vn d liu trong CSDL t trang web
Xy dng Website phc v yu cu khch hng.
Xy dng ng dng doanh nghip trn nn tng web.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

65

Xy dng ng dng Hello ASP.NET s dng Visual Studio .NET IDE


M ng dng Visual Studio .NET 2005 bng cch vo menu Start All Programs
Visual Studio 2005 Visual Studio 2005. Sau chn Menu File New Website.

Ca s New Web Site xut hin cho php khi to cc loi webiste khc nhau

Visual Studio cung cp nhiu loi website mu, chng ta quan tm n cc kiu
mu website sau:

ASP.NET Webiste - y l kiu mc nh, kiu template ny cho php xy


dng mt ng dng website trn nn tng ASP.NET.
ASP.NET Web Service - kiu template ny cho php xy dng mt dch v x
l trc tuyn trn nn tng Internet.

khung ca s Templates, chn ASP.NET Web Site.


Khung Location, chn th mc lu tr website, bn c th thay i a ch th
mc lu tr bng cch nhn vo nt

khung Language, chn ngn ng lp trnh Visual C#.


Nhn OK bt u. Ca s thit k website xut hin:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

66

y l mn hnh son tho cu trc cho


Visual Studio cng cung cp mt mn hnh
Design mn hnh thit k xut hin, vi
php ko th cc control vo ca s thit

website cn xy dng (tab Source), v


thit k web hon chnh, click vo tab
cng c ti ToolBox v giao din cho
k web.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

67

Double click vo mn hnh thit k, hoc ti ca s Solution Explorer, chn File


Default.aspx, click chut phi v chn View Code, ca s son tho m lnh cho
trang web xut hin.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

68

Mc nh hm Page_Load() xut hin, trong thn hm ny, ta vit dng m lnh


sau.
Response.Write("Welcome to ASP.NET World");
Nhn F5 chy chng trnh. Kt qu nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

69

ng dng u tin ca chng ta hon tt.


Qua ng dng u tin chng ta c th rt ra c mt iu l, vic xy dng
cc ng dng website ASP.NET ging nh vic xy dng nhng ng dng Window c
xy dng bng Visual Studio .NET. v bn hy hnh dung vic xy dng website
cng ging nh vic xy dng mt ng dng Windows m chng ta hc phn
trc.

S kin Page_Load()
S kin Page_Load() cng ging nh hm Main() trong chng trnh Windows Form.
Hm Page_load c gi u tin khi mt trang c ti v trnh duyt ca ngi
s dng. S kin Page_Load nh sau
using
using
using
using
using
using
using
using
using

System;
System.Data;
System.Configuration;
System.Web;
System.Web.Security;
System.Web.UI;
System.Web.UI.WebControls;
System.Web.UI.WebControls.WebParts;
System.Web.UI.HtmlControls;

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


{
protected void Page_Load(object sender, EventArgs e)
{
// M lnh thc thi u tin khi trang c ti.
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

70

}
}
Page_Load c t ng sinh ra khi double click vo ca s thit k.

Cc i tng ASP.NET
ASP.NET c mt s i tng c bit cn quan tm c th hin nh sau
i tng Request
V d: khi bn truy cp website itgatevn.com.vn, bn s thy trn thanh a ch
web nh sau
http://www.itgatevn.com.vn
Khi bn vo mt bi tin no , thanh a ch c dng nh sau:
http://www.itgatevn.com.vn/index.aspx?u=nd&scid=14&nid=4442
Vic chuyn thnh dng th hai c ngha rng
mt tin vi m s nid=4442, v chng trnh s
cung cp cho ngi s dng, v ly m s
duyt, ASP.NET cung cp i tng Request. i
tnh
Thuc tnh
ApplicationPath
Url

ngi s dng ang xem chi tit


ly ng bn tin vi m s trn
ny t thanh a ch trn trnh
tng Request gm c cc thuc

M t
y l thuc tnh ch c, cung cp ng dn ca ng dng
ASP.NET trn my ch trin khai.
Thuc tnh ch c, tr li i tng URI cha ng a ch
hon chnh ca mt yu cu.

UserHostAddress

Tr li a ch IP ca my ngi s dng

Browser

Tr li i tng HttpBrowserCapabilities cha nhng thng


tin v kh nng ca browser trn my ngi dng.

Cookies

Tr v i tng HttpCookiecollection cung cp nhng bin


cookie ca client.

QueryString

Cung cp kh nng truy cp n nhng tham s trn thanh a


ch.

Form

Cung cp kh nng ly d liu c gi t Form d liu

V d v cch s dng cc thuc tnh ca i tng Request


protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Application Path: " + Request.ApplicationPath);
Response.Write("<br>Url: " + Request.Url.ToString());
Response.Write("<br>User Host Address: " + Request.UserHostAddress);
Response.Write("<br>Browser Name: " + Request.Browser.Browser);
Response.Write("<br>Browser Version: " + Request.Browser.Version);
}

V d v cch s dng thuc tnh Form ca i tng Request nhn d liu t


Form.
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

71

<input type="checkbox" id="chk" name="chk" value="1"/>


M lnh ly gi tr ca iu khin checkbo chk t Form.
protected void Button_Click(object sender, EventArgs e)
{
// Nhn gi tr ca checkbox trong form.
string checkvalue = Request.Form["chk"];
}

i tng Response
i tng Response c nhim v gi thng tin n trnh duyt ngi s dng
(Client). Nhng thuc tnh v hm thng s dng ca i tng Response c m
t nh bng sau
Tn
ApplicationPath
Cache
ContentType

M t
y l thuc tnh ch c, cung cp ng dn ca ng dng
ASP.NET trn my ch trin khai.
Cung cp nhng thuc tnh v kh nng lu tr nh thi gian
ht hn, ci t ring ca website. y l thuc tnh ch
c.
Cho php gn hoc nhn kiu d liu c truyn n trnh
duyt ngi s dng (Client) thng qua i tng Response.

Cookies

Cho php gn mt cookie vo trnh duyt ngi s dng

IsClientConnected

Tr li gi tr ng/sai xc nh khi no ngi dng kt


ni hoc khng kt ni n ng dng.

public void
Redirect(string)

Hm cho php chuyn n mt a ch c xc nh trong


tham s truyn vo n trnh duyt ngi s dng

public void
Write(string)

c s dng gi mt chui k t xut hin ra mn hnh.

i tng Session
i tng Session cho php ng dng ASP.NET lu tr trng
dng. Session bt u v kt thc khi ngi s dng kt ni
n mt trang web, session cng c t ng tt khi ngi
trang web trong mt thi gian xc nh, thi gian mc nh l

thi ca ngi s
v tt trnh duyt
dng khng s dng
20 pht.

Tn

M t

Count

Tr v s lng session trong Session-state

SessionID

Tr v mt session xc nh trong Session-state

Timeout

Cho php gn hoc nhn thi gian t ng hy b session


tnh bng pht.

public void
Add(string,object)

Hm cho php th mt item vo Session-state

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

72

Tn

M t

public void
Clear()

c s dng xa ton b gi tr c lu tr trong


Session-State.

public void
Remove(string)

c s dng loi b mt item trong Session-state

V d gn gi tr cho bin Session


// Gn gi tr kiu s cho Session
Session[intvalue] = 1;
// Gn gi tr kiu chui cho Session
Session[stringvalue] = Welcome to ASP.NET Session;
// gn gi tr kiu DataTable cho Session
DataTable dt = new DataTable();
dt.Columns.Add("col1");
dt.Columns.Add("col2");
dt.Columns.Add("col3");
Session["datatablevalue"] = dt;
V d ly gi tr t bin Session
// Ly gi tr kiu integer
int ivalue = Convert.ToInt32(Session["intvalue"]);
// Ly gi tr t Session
string svalue = Session["stringvalue"].ToString();
// Ly gi tr kiu DataTable t Session
DataTable dtvalue = new DataTable();
dtvalue = (DataTable)Session["datatablevalue"];

Xy dng ng dng Web s dng Server Controls


Server Controls
Ti s khng gii thch vi cc bn cn k th no l Server Controls, cc bn
c th tham kho khi nim ny ti nhng ti liu v ASP.NET khc, cc bn hy
hnh dung Server Control cng ging nh cc Control trong ng dng Windows Form.
Ti gii thiu vi cc bn cch thc s dng mt s loi Server Control sau y.

HTML Server Controls


Html Controls c gn km vo ASP.NET p ng kh nng chuyn i t ASP
thng thng sang nn tng ASP.NET. HtmlControls l nhng i tng thuc v
namespace System.Web.UI.HtmlControls. Sau y l mt s HtmlControls thng s
dng.
Html Server Control

M lnh

HtmlForm

<form runat=server></form>

HtmlInputText

<input type=text runat=server /> v


<input type=password runat=server />

HtmlInputCheckBox

<input type=checkbox runat=server />

HtmlInputRadioButton

<input type=radio runat=server />

HtmlInputImage

<input type=image runat=server />

HtmlAnchor

<a runat=server></a>

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

73

Html Server Control

M lnh

HtmlButton

<input type=button runat=server />

HtmlTable

<table id="table1" runat=server></table>

HtmlTableRow

<tr></tr>

HtmlTableCell

<td></td>

Bn c th tm thy nhng control ny trong ca s ToolBox ti HTML Tab.

HTML Tab trong ToolBox

Chng ta s bt u vi mt s HTML Control quan trng

HtmlAnchor
iu khin HtmlAnchor lm vic nh tag <a> ca HTML nhng chy ti my ch,
HtmlAnchor c s dng chuyn ngi dng t mt trang n mt trang khc.
V d: <a id=myanchor1 href="http://www.itgatevn.com.vn" runat=server></a>
Trong ,

id=myanchor1 - l tn duy nht ca mt control trn mt trang


href="http://www.itgatevn.com.vn"
- l a ch m anchor s chuyn ngi
dng n, y l trang itgatevn c a ch http://www.itgatevn.com.vn

HtmlInputText
HtmlInputText lm vic nh th HTML <input type=Text>, nhng chy ti my ch.
HtmlInputText c s dng nhn d liu t ngi dng.
V d: <input id=txtName1 size=12 type=text runat=server />
Trong ,

size=12 - gi tr s k t ln nht c th nhp vo textbox.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

74

HtmlInputCheckBox
HtmlInputCheckBox lm vic nh th HTML <input type=checkbox>, nhng chy ti
my ch. HtmlInputCheckBox c s dng thc hin cu hi vi tr li l C
hoc Khng.
V d: <input id=chkCoffeeorNot type=checkbox checked runat=server />

HtmlInputRadioButton
HtmlInputRadioButton lm vic nh th HTML <input type=radio>, nhng chy ti
my ch. HtmlInputRadioButton c s dng thc hin mt s la chn khi c
nhiu la chn c a ra cho ngi dng chn la.
V d: <input id=radioChooseOne type=radio checked runat=server />

HtmlSelect Control
HtmlSelect lm vic nh th HTML <select>, nhng chy ti my ch. HtmlSelect
c s dng to ra mt danh sch cho php ngi s dng la chn mt trong
danh sch .
V d:
<select runat=server>
<option>MU</option>
<option>Asenal</option>
<option>Bonton</option>
<option>Chelsea</option>
</select>

Web Server Controls


WebServer
Controls
l
b
cng
c
c
cung
cp
trong
namespace
System.Web.UI.WebControls. Mt s WebControls c m t theo bng sau:
WebControls
WebControls c bn

ListControls
RichWebControls
Data Controls

M t
Tng ng nh nhng HtmlControls bnh thuwofng nh:
TextBox, Label, Button, HyperLink, RadioButton, v
CheckBox.
c s dng xy dng mt danh sch, v cho php
nhn d liu t c s d liu, nhng control thuc dng
ny bao gm: ListBox, DropDownList, CheckBoxList v
RadioButtonList.
C cc iu khin nh Calendar, AdRotator, TreeView,
mi control c mt tnh nng ring.
c s dng hin th d liu t mt bng trong c
s d liu, bao gm nhng Control: DataGrid, DataList,
v Repeater.

Bn c th tm thy nhng Control ny ti ToolBox.


Vi nhng WebForm Control, bn hy hnh dung chng nhng nhng Control trn mi
trng Window Form. Vi nhng Web Control, ASP.NET cho php bn xy dng nhng
ng dng mnh m trn mi trng internet tng t nh trn mi trng ng dng
bn.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

75

TextBox Control
c s dng nhn d liu t ngi s dng, nh k t, s, ngy thng Thuc
tnh quan trng nht ca TextBox c lit k nh sau:
Thuc tnh

M t

Text

Cho php gn gi tr hin th trong textbox hoc nhn


gi tr do ngi dng nhp vo.
C ba gi tr tng ng vi 3 dng khc nhau ca
TextBox
- Single Line - d liu hin th trn 1 dng.
- Password - s dng cho mt khu.
- Multiline - d liu hin th trn nhiu dng.

TextMode

Literal Control
Literal c s dng hin th d liu m khng quan tm n nh dng ca d
liu y. iu khin ny thch hp hin th d liu di dng ni dung, do ,
thuc tnh chnh ca Literal l thuc tnh Text. Bn c th tm thy iu
khin Literal di biu tng

trn thanh Toolbox.

V d s dng Literal
Literal1.Text = "This is literal contron";

FileUpload Control
FileUpload l thuc tnh c s dng cho php ti mt tp tin bt k ln my
ch web. y l iu khin c tch hp vo cc phin bn ASP.NET 2.0 tr v
sau. Bn c th tm thy iu khin ny ti thanh cng c vi biu tng

V d s dng File Upload


// kim tra c file upload
if (FileUpload1.FileName.Length > 0)
{
// kim tra ni dung ca file
if (FileUpload1.PostedFile.ContentLength > 0)
{
// lu file vo th mc uploadfile
FileUpload1.PostedFile.SaveAs("uploadfile/" +
System.IO.Path.GetFileName(FileUpload1.FileName));
}
}

Panel Control
Panel l iu khin c s dng cha nhng nhm iu khin cho mt chc nng
ring, Panel cho php iu khin vic hin th nhng iu khin c cha trong
n.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

76

Cc bn xem hng dn s dng Panel trong file km theo ti liu ny.

View & MultiView Control


Multiview l iu khin cha nhng iu khin con l View, View cho php cha
tt c cc iu khin khc. Chng ta s dng View v MultiView khi chng ta
trong mt s trng hp khi cn thc hin mt cng vic theo nhiu giai on ca
tc v (cc bc theo tun t), hoc mt tc v vi nhiu giao din khc nhau.
Hai iu khin ny lun i chung vi nhau. Trong mt thi im, bn ch xc nh
c duy nht mt View c hin th thng qua thuc tnh ActiveViewIndex ca
iu khin MultiView.
Cc bn xem hng dn s dng View v Multiview trong file video km theo ti
liu ny.

Calendar Control
Calendar c s dng hin th ngy thng. Ngi s dng c th xem ngy
thng theo tun hoc thng. Nhng thuc tnh thng s dng bao gm
Thuc tnh

M t

DayNameFormat

Thuc tnh ny c s dng xc nh nh dng tn


ca nhng ngy trong tun.
c s dng xc nh thng c xut hin hay khng
trong Calendar. Thuc tnh ny c cp nht sau khi s
kin VisibleMonthChanged c thc hin.
Thuc tnh ny c s dng xc nh ngy ca tun
c xut hin ti ct u tin ca iu khin
Calendar.

VisibleDate

FirstdayOfWeek

Thuc tnh ny c dng biu din cho ngy c


chn trong iu khin Calendar.

SelectedDate

Thuc tnh ny c s dng xc nh khi no mt


ngi dng c th chojnmoojt ngy, mt tun, hoc mt
thng. Mc nh, gi tr ca thuc tnh ny l Day.

SelectionMode

DropDownList Control
Nh Select Control
mt mc trong danh
c cc thuc tnh
DropDownList thng
chy.

trong Html, DropDownList Control cho php ngi s dng chn


mc c nhngha trc. Mi mc l mt i tng ring bit
ring nh Text, Value v Selected. Bn c th thm mc vo
qua thuc tnh Items lc thit k hoc ngay khi chng trnh

M lnh thm mc cho DropDownList khi chng trnh ang chy


protected void Page_Load(object sender, EventArgs e)
{
this.DropDownList1.Items.Add(new ListItem("Item1", "Value1"));
this.DropDownList1.Items.Add(new ListItem("Item2", "Value2"));
}

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

77

Ngoi ra, DropDownList cn c kh nng nhn d liu t ng t c s d liu


thng qua thuc tnh DataSource v phng thc DataBind().
M lnh gn DataSource cho DropDownList khi chng trnh ang chy
protected void Page_Load(object sender, EventArgs e)
{
this.DropDownList1.DataSource = ds; // ds l mt DataSet cha d liu
c ly t C s d liu.
this.DropDownList1.DataBind();
}
Cc cng c khc khng c gii thiu y nhng cch thc s dng cng c
c biu din trong file hng dn: PTA_NET_2_0_WEB_CONTROLS.WMV v v d km
theo ti liu.

Thm iu khin khi chng trnh chy.


i khi, bn cn thm nhng iu khin vo trang web khi chng trnh ang chy,
ASP.NET cung cp kh nng ny cho nh pht trin. Trc tin bn cn xc nh
ch t iu khin, c hai cng c bn c th s dng t ch cha ng
cc control cn to.

PlaceHolder
Panel

V d sau s gip bn cch thm mt Control lc chng trnh ang chy.


protected void Page_Load(object sender, EventArgs e)
{
Calendar cl = new Calendar();
PlaceHolder1.Controls.Add(cl); // mt calendar
Placeholder trn trang.
}

thm

vo

Chng ta s s dng k hn PlaceHolder Control trong phn thc hin kin trc
WebPortal trong phn sau.

iu khin cc Server Controls


ASP.NET cung cp cho nh pht trin nhng s kin i km vi mi iu khin, v
d sau s hng dn bn cch thc xem s kin, v s dng nhng s kin m
ASP.NET cung cp.
To mi mt ng dng Website, ti mn hnh thit k, ko th vo ca s thit
kt mt DropDownList. Chn DropDownList y v m ca s Properties. Trn ca s
Properties ca DropDownList, nhn vo biu tng
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

, cc s kin ca iu khin

78

ny xut hin, chn mt s kin v nhn Enter, VisualStudio t ng pht sinh ra


s kin y trong mn hnh son tho m lnh iu khin chng trnh.

Mn hnh s kin xut hin nh sau:

T lc ny, khi ngi dng chn thay i mt mc ti DropDownList, chng trnh


s
kim
tra
thc
hin
thao
tc
ny
thng
qua
s
kin
DropDownList1_SelectedIndexChange().
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

79

y cng l cch thc chung xem mi Control c bao nhiu s kin v kim sot
s s kin khai bo cho mi Control.
Xem v d thc hin iu khin Control PTA_NET_2_0_Control_CONTROLS.WMV
Bi tp 1
To mt ng dng Web cho php ngi s dng nhp Email, sau hin th Email
va nhp ln mn hnh.
Hng dn
Bn hy thc hin cc bc sau:

To mt ng dng Web
Hin th ca s thit kt.
Ko th mt TextBox Control vo ca s thit k.
Ko tht mt Button Control vo ca s thit k.

Chn ButtonControl, m ca s Properties, chn


, chn s kin Click,
nhn Enter, s kin Click c xut hin trong ca s son tho lnh iu
khin chng trnh, son tho on m lnh sau
Response.Write(this.TextBox1.Text);

Nhn F5 thc thi chng trnh.

Bi tp 2
Thc hin mt ng dng website cho php ngi s dng khai bo thng tin c nhn
bao gm: h v tn, gii tnh, ngy sinh, a ch, in thoi, th in t
(email), ngh nghip, c quan (cng ty hoc trng hc), v thng tin gii thiu
v bn thn. Sau lu tr vo c s d liu.

Kt ni c s d liu trong ASP.NET


D liu l mt phn khng th thiu trong vic xy dng mt h thng ng dng
Web. Nh mt website bn hng, h phi cp nht thng tin sn phm mi sn xut
khch hng la chn, tip nhn n t hng ngy gi, v x l cc n t
hng y. Ni chung, bt k ng dng web no cng cn phi c d liu, thng tin
c cp nht thng xuyn. phn ny, chng ta s lm vic vi c s d liu
(CSDL) trn mi trng ng dng Web ASP.NET.

DataBinding trong ASP.NET


Data Binding l mt k thut kt ni d liu vi nhng i tng. S dng data
binding, bn c th ni d liu trong mt ngun d liu n mt i tng ngi
dng. Mi vic thay i trn cc i tng giao din ngi dng c th trc tip
c cp nht vo ngun d liu. C hai kiu binding d liu l Simple Data
Binding v Complex Data Binding . Chng ta quan tm n kiu th hai - Complex
Data Binding - vi ngun d liu c truy xut t c s d liu.
Binding d liu gia CSDL v mt Control, cc bn hy quan tm ti nhng bc
sau

Ly d liu t c s d liu v vo mt i tng lu tr (thng l


DataSet, DataTable).
Khai bo ngun d liu (DataSource) cho i tng giao din ngi dng
(Web Control).
Thc hin lnh DataBinding() hin thc qu trnh binding d liu.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

80

Kt ni c s d liu chng ta hc cc phn trc, do hai bc: khai bo


ngun d liu v thc hin lnh DataBinding() s c tm hiu su v k bn
c th nm r.

Binding d liu vo mt DropDownList Control


To mi mt ng dng Web, bng cch vo menu File New Website.
Ca s thit kt website xut hin, ko th mt DropDownList Control t ca s
ToolBox vo mn hnh thit k, t tn cho Dropdownlist l ddltypes
Double click vo mn hnh thit k, Form_Load() xut hin, bn thc hin nhng
on m lnh sau
using
using
using
using
using
using
using
using
using
using

System;
System.Data;
System.Configuration;
System.Web;
System.Web.Security;
System.Web.UI;
System.Web.UI.WebControls;
System.Web.UI.WebControls.WebParts;
System.Web.UI.HtmlControls;
System.Data.OleDb;

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


{
string str_connection =
"Provider=SQLOLEDB;server=(local);database=_NET;uid=_net;pwd=";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
OleDbConnection conobj = new OleDbConnection(str_connection);
conobj.Open();
OleDbCommand cmd = new OleDbCommand("select * from booktypes",
conobj);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "booktypes");
// xc nh DataSource bind d liu
this.ddltypes.DataSource = ds.Tables["booktypes"];
this.ddltypes.DataTextField = "vbooktypename";
this.ddltypes.DataValueField = "itypeid";
// Gi hm DataBind() thc hin bind d liu gia CSDL v
DropDownList ddltypes
this.ddltypes.DataBind();
conobj.Close();
}
}
}
Chy ng dng, kt qu s nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

81

Kt qu binding d liu t DropDownList n bng booktypes

D liu t bng BookTypes trong c s d liu c vo trong iu khin


DropDownList ddltypes.

Thuc tnh IsPostBack


Thuc tnh IsPostBack cho php kim tra khi no trang c load li. Thuc tnh
ny c s dng trong vic ti nhng d liu c nh trn mt trang hoc mt
iu khin.

Web Server Control Template


Template l mt s kt ni nng thnh phn HTML, Controls v nhng Server
Controls c gn km, cho php dng thay i v thao tc trn giao din ca
iu khin.
ASP.NET cung cp ba Controls hin th d liu cho php thay i giao din
hin th: DataGrid, Repeater, v DataList. Giao din ca nhng iu khin ny
c thay i bng cch s dng template.
V d vi mt danh sch hc sinh, nh sau:
STT

H v Tn

1
Trn Tun Anh
2
Nguyn Hoi Nam

Tng s 20 hc sinh

Gii tnh

Ngy sinh

a ch

Nam
N

12/12/1985
1/3/1986

H Ni
Tp.H Ch Minh

Cn phi c phn u, phn thn, v phn cui ca mt danh sch, trong phn
u m t nhng ni dung c th hin trong phn thn, v phn cui l tng kt
cho danh sch phn thn.
Template trong ASP.NET cng nh vy, c ba phn chnh:

HeaderTemplate: nh dng cho phn u ca danh sch


ItemTemplte: nh dng cho phn thn ca danh sch
FooterTemplate: nh dng cho phn cui ca danh sch.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

82

Ngoi
ra
cn
c
cc
Template
khc
nh
AlternatingItemTemplate,
SelectedItemTemplate, SeparatorTemplate chng ta s cp nhng khun mu ny
khi thc hin mt v d c th no .

Repeater Control
Mt Repeater control hin th d liu t nhng ngun d liu khc nhau bng cch
s dng nhng giao din c thit k. Repeater khng c giao din, v c hin
th nh hnh sau:

Repeater Control c thm vo WebForm

Bn cn phi to template xy dng giao din cho Repeater.


V d:
Qun l nh trng mun xem danh sch hc sinh theo lp, bn cn thc hin ng
dng p ng yu cu ny.
Bn thc hin ng dng nh sau:

To mt ng dng web
Ko th mt DropDownList hin th danh sch lp cho php chn la, t tn
l ddlclasses
Ko th mt Button dng hin th danh sch nhng hc sinh trong lp c
chn ti dropdownlist, t tn l btndisplay.
Mt Repeater cho php hin th danh sch, t tn l rpstudents

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

83

By gi, bn cn xy dng template cho danh sch hc sinh. Bn quan tm ti ba


phn: HeaderTempalte, ItemTempalte, v FooterTempalte. Thc hin nh sau:

M ch hin th son thi HTML


Trong phn thn ca iu khin repeater, bn son tho cu trc nh m t sau
y:

l cu trc chnh ca mt Repeater, v cng vic ca bn l phi xy dng cu


trc cho mi phn Header, Item, Footer to thnh mt Template cho Repeater.
Nh bng danh sch sinh vin pha trn, trong ngn ng HTML, n c dng:
<table border="0" cellpadding="0" style="border-collapse: collapse" width="100%"
id="table1">
<tr>
<td width=50><b>STT</b></td>
<td width=200><b>H&#7885; v Tn</b></td>
<td width=75><b>Gi&#7899;i tnh</b></td>
<td width=125><b>Ngy sinh</b></td>
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

84

<td><b>&#272;&#7883;a ch&#7881;</b></td>
</tr>
<tr>
<td>1</td>
<td>Trn Tun Anh</td>
<td>Nam</td>
<td>12/12/1985</td>
<td>H Ni</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
Vi phn u (header) l:
<table border="0" cellpadding="0" style="border-collapse: collapse" width="100%"
id="table1">
<tr>
<td width=50><b>STT</b></td>
<td width=200><b>H&#7885; v Tn</b></td>
<td width=75><b>Gi&#7899;i tnh</b></td>
<td width=125><b>Ngy sinh</b></td>
<td><b>&#272;&#7883;a ch&#7881;</b></td>
</tr>
Phn thn (Item) l:
<tr>
<td>1</td>
<td>Trn Tun Anh</td>
<td>Nam</td>
<td>12/12/1985</td>
<td>H Ni</td>
</tr>
V phn cui (Footer)
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
By gi, bn ch cn copy mi phn trn vo trong mi phn tng ng ca
Repeater rpstudents trn,

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

85

Ba thnh phn chnh ca Repeater Template c ln cu trc

Ti y bn sp hon tt qu trnh to template cho repeater. Nh cp,


Repeater thc hin vic Binding t Repeater n d liu trong c s d liu, bn
s thc hin vic ny ti ItemTemplate.
ItemTemplate l ni hin th danh sch hc sinh,
Template hin th cho tt c hc sinh trong danh
sinh gm 20 bn, bn ch cn to template cho mt bn
ca 19 bn cn li s c hin th theo template
y.

chng ta
sch. V
u tin,
thc hin

ch cn to mt
d danh sch hc
tt c thng tin
cho bn u tin

binding
d
liu
n
datasource,
ASP.Net
cung
cp
phng
thc
DataBinder.Eval() thc hin vic gn d liu t DataSource vo ItemTemplate
ca Repeater. Cng thc ca DataBinder.Eval() nh sau:
<% # DataBinder.Eval(ContainerName, DataFieldName, {FormatString}) %>.
p dng cng thc trn cho trng tn, bn s c nh sau:
<%#DataBinder.Eval(Container.DataItem,"vstudentname")%>
p dng tng t cho cc trng khc, chng ta s c kt qu l cu trc ca
ItemTemplate c hin th nh m t sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

86

Nh th bn hon tt vic to Template cho Repeater, v kt qu nh m t sau


y

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

87

Kt qu sau khi xy dng hon tt template cho repeater

By gi bn cn xy dng DataSource v thc hin lnh DataBind() cho repeater


rpstudents.
Khi ngi qun l mun xem danh sch sinh vin, anh y cn nhn vo nt Display
Students hin th danh sch sinh vin ti repeater. Do vic Bind d liu
t Repeater n DataSource cn thc hin ti y. Hm btndisplay_Click() nh
sau:
protected void btndisplay_Click(object sender, EventArgs e)
{
OleDbConnection conobj = new OleDbConnection(str_connection);
conobj.Open();
OleDbCommand cmd = new OleDbCommand("select * from students where
iclassid=?", conobj);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue(@classid", this.ddlclasses.SelectedValue);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "students");
// xc nh DataSource bind d liu
this.rpstudents.DataSource = ds.Tables["students"];
// Gi hm DataBind() thc hin bind d liu gia CSDL v Repeater
this.rpstudents.DataBind();
conobj.Close();
}
Nhn F5 chy chng trnh, kt qu nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

88

Nh th bn hon tt vic Binding t Repeater n DataSource cha d liu


c ly t CSDL.

Gn iu khin vo Repeater
Sau khi bn hin th c danh sch sinh vin trong tng lp, c mt nhu cu
l xem chi tit im s ca tng sinh vin, nh th ti mi dng ng vi mi
sinh vin, bn phi thm mt button cho php xem chi tit im s tng hc vin.
Bn thc hin iu ny theo nhng bc sau:
Ti phn ItemTemplate, bn thm vo Button Control, nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

89

ca s thit k, bn c c kt qu

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

90

Ti mi dng ng vi mi sinh vin u c mt nt Detail, cho php xem thng tin


chi tit ca mi sinh vin .
kim sot hng no tng ng vi mt sinh vin c chn, chng ta truyn vo
tham s CommandArgument='<%#DataBinder.Eval(Container.DataItem,"istuddentid")%>'
vi m sinh vin ng vi mi sinh vin trn mt dng. V s kin ItemCommand ca
Repeater cho php hng ly gi tr truyn vo ny. S kin ItemCommand ca
Repeater nh sau:
protected void rpstudents_ItemCommand(object source, RepeaterCommandEventArgs
e)
{
}
Tham s RepeaterCommandEventArgs e cha ng cc gi tr ca CommandName v
CommandArgument ca Button c gn ti ItemTemplate.
kim tra gi tr truyn vo nh th no, bn hy thm dng m lnh sau vo
thn ca s kin ItemCommand(),
Response.Write(e.CommandName + " " + e.CommandArgument.ToString());
Khi y, khi bn chn nhn mt nt Detail tng ng vi mt sinh vin trn mt
dng, thc th xut hin m s tng ng vi sinh vin y c ly t c s d
liu.
Vi cc iu khin DataList v DataGrid, vic Binding data l tng t, ch khc
nhau vic to v s dng nhng iu khin c gn vo Template.
Xem
thm
cch
to
PTA_NET_2_0_ASP_NET_Create_Template.WMV

Template

ti

hng

dn:

UserControl v ng dng trong xy dng WebPortal


UserControl c th c hiu l nhng iu khin do ngi s dng to nn,
bn c th to ra nhng iu khin cho ring bn trong nhiu trng hp v s
dng UserControl vo ng dng ca bn. c bit trong kin trc xy dng
WebPortal m ti gii thiu trong phn ny m t r nht v vic s dng
UserControl trong xy dng WebPortal vi ASP.NET.

To v s dng UserControl
to UserControl bn thc hin cc bc sau:

T menu Visual Studio 2005, bn chn Website Add New Item, ca s Add New
Item xut hin nh m t sau y

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

91

Chn Web User Control.


Ti trng Name: bn g tn ca control l u_index.ascx
Ti mc Language: bn chn ngn ng C#
Nhn Add thc hin thm vo.

Mt file c tn u_index.ascx c to ra, v bn c th tm thy file ny ti


ca s Solution Explorer.
Bn m file ny bng cch double click vo file ti ca s Solution Explorer,
chuyn sang ch thit k Design, bn g vo dng ch: y l trang ch.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

92

Sau bn m trang Default.aspx, v ko th file u_index.ascx vo mn hnh


thit k trang Default.aspx, v bn nhn F5 chy chng trnh, bn s thy
rng ni dung ti u_index.ascx xut hin ti trang Default.aspx

Mn hnh ko th UserControl vo trang ASPX


Kt qu trc hin chng trnh nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

93

By gi bn c th m file son tho m lnh iu khin UserControl u_index.ascx


v thc hin dng lnh sau:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("T UserControl");
}
By gi thc hin chng trnh, v kt qu s l dng T UserControl cng xut
hin ti trang ASPX.
Nh th UserControl khi c gn vo mt trang ASPX, tt c nhng thc thi trong
UserControl u c thc thi ti trang ASPX, v by gi UserControl tr thnh
thnh phn ca trang ASPX.

ng dng UserControl trong xy dng ng dng WebPortal

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

94

C rt nhiu k thut xy dng WebPortal, k thut xy dng Webportal s dng


UserControl l mt k thut ti t xy dng v kin trc da trn kin trc ti
(load) ng ca UserControl.
Kin trc ti UserControl ng
Kin trc ti UserControl ng c m hnh ha nh sau

Trang ASPX
Controls.Add()

UserControl
Controls.Add()

UserControl

Controls.Add()

UserControl

M hnh kin trc ti UserControl ng.


Vic ti UserControl l vic thc hin bng m lnh chng trnh li hnh ng
ko th UserControl vo trang ASPX, ASCX. m hnh trn, mt trang ASPX c th
load nhiu UserControl, v mi UserControl c th ti cc UserControl khc v c
tip t nh th. Vi m hnh ny cho php bn to ra nhng ng dng c phc
tp rt cao nhng em li s d dng cho ngi s dng ng dng web ca bn.
Cng thc ca hm LoadControl nh sau:
Controls.Add(LoadControl("[ControlPath][ControlName]"));
Trong ,

ControlPath: l ng dn n UserControl.
ControlName: l tn UserControl

V d:
Controls.Add(LoadControl("u_module1.ascx"));

Hin thc kin trc WebPortal


Sau y chng ta thc hin kin trc WebPortal da trn k thut ti UserControl
ng.
Tip tc vi v d trn v UserControl, by gi bn thm vo hai UserControl
khc tn u_module1.ascx v u_module2.ascx, ti mi UserControl va thm, bn
thm tng ng hai dng gi tr sau: UserControll: Module 1, UserControl:
Module2
Ti file son tho m lnh iu
u_index.ascx.cs, bn thc hin nh sau

khin

chng

trnh

cho

UserControl

string module = "";


if(Request.QueryString["module"] != null)
module = Request.QueryString["module"].ToString().Trim();
switch (module)
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

95

{
case "module1":
Controls.Add(LoadControl("u_module1.ascx"));
break;
case "module2":
Controls.Add(LoadControl("u_module2.ascx"));
break;
}
Nhn F5, chy chng trnh, kt qu nh sau:

Khi khng c tham s module, ch c gi tr ti u_index.ascx c ti ln trang


ASPX, khi cung cp tham s module, v gn ln lt bng hai gi tr module1 v
module2, bn thu c kt qu nh hnh m t trn.
V d trn l m t c bn nht cho vic s dng UserControl trong xy dng
WebPortal, kin trc ny cho php bn to ra nhng ng dng cc k phc tp v
sau.

Kin trc ti UserControl ng s dng PlaceHolder


Trong phn ny chng ta cng thc hin hin thc ha m hnh WebPortal s dng
PlaceHolder.
Cng nh v tr trn,
nhng chng ta s thay th UserControl lin kt
(UserControl c s dng load cc UserControl khc) bng mt Place Holder
bng cch ko th mt PlaceHolder vo trong trang ASPX t ca s ToolBox.
Sau , thay th on m lnh iu khin bng on m lnh nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

96

string module = "";


if(Request.QueryString["module"] != null)
module = Request.QueryString["module"].ToString().Trim();
switch (module)
{
case "module1":
phcontrol.Controls.Add(LoadControl("u_module1.ascx"));
break;
case "module2":
phcontrol.Controls.Add(LoadControl("u_module2.ascx"));
break;
}
Khi bn s c mt kt qu tng t nh vi cch s dng mt UserControl
load cc Control khc.
Bi tp t n luyn.
1. To ng dng qun l danh sch lp, danh sch sinh vin trong tng lp.
ng dng c cc tnh nng: thm, sa, xa lp v sinh vin trong tng lp.
2. Xy dng ng dng qun l kho hng, cho php ngi qun l qun l danh
mc hng ha, s lng hng ha trong kho, qun l nhp xut hng.
3. Xy dng h thng website (Webportal) vi yu cu sau:

Module tin tc: cung cp thng tin thi s


Module m nhc: cho php ngi s dng la chn v nghe nhc trc tuyn
Module th vin hnh: cho php ngi s dng xem hnh nh c sp xp
theo phn loi bi ngi qun tr website.

Cu hnh cho ng dng Web ASP.NET


ASP.NET cung cp file cu hnh cho ng dng Website, l web.config. Chng
ta s tm hiu cch thc s dng file web.config cho cng vic cu hnh cho
ng dng Web.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

97

Mc <appSettings>
appSettings trong file web.config c s dng nh ngha nhng ci t do
ngi dng xy dng cho ng dng website. Chng hn bn c th s dng th
appSettings lu tr thng tin v chui kt ni n c s d liu.
Cng thc ca th <appSettings> nh sau:
<appSettings>
<add key=(key)
</appSettings>

value=(value/>

Trong ,

Key: xc nh gi tr kha trong hastable trong appSettings.


Value: l ni dung tng ng vi khoa key.

V d v vic s dng appSettings lu tr thng tin chui kt ni


<appSettings>
<add
value=Provider=SQLOLEDB;database=(local);uid=sa;pwd= />
</appSettings>

key=ConnectingString

c gi tr t th appSettings
c cc gi tr t th appSettings, bn thc hin nh sau
Import th vin System.Configuration; bng cch
using System.Configuration;
c gi tr t mt kha (key).
string connectionstring =
System.Configuration.ConfigurationSettings.AppSettings["ConnectingString"];
v d trn, ConnectingString l kha c t trong th appSettings ti file
web.config

Th <customErrors>
S dng th <customErrors>, bn c th nh ngh c nhng thng ip li xut
hin cho mt ng dng ASP.NET. Cng thc ca th customErrors nh sau:
<customErrosrs defaultRedirect=(URL) mode=(on/off/remoteonly)>
<error statusCode=(statusCode) redirect=(URL)/>
</customErrors>
Trong ,

defaultRedirect - xc nh a ch s c chuyn n khi c li xut hin.


mode - xc nh m, ng, hoc hin th trng thi li n trnh duyt ngi
s dng.
<error> nh ngha nhng li xut hin.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

98

V d:
<customErrosrs defaultRedirect=customerrors.aspx mode=On>
<error statusCode=500 redirect=CustomErrorMessage.aspx/>
</customErrors>
Khi li xut hin, nu m li l 500, trang s c chuyn n
CustomErrorMessage.aspx, mc nh trang c chuyn n customerrors.aspx.

trang

Nhng hm mc ng dng (Application)

Xut bn mt ng dng Web ASP.NET


Vi ASP.NET 2.0, sau khi xy dng, kim tra ng dng web, bn phi tin hnh
xut bn ng dng web trin khai thc t. Cc bc trin khai nh sau:
1. M ng dng Web xy dng TestCurrentDollar2Current
2. Ti menu Build, chn Publish Website.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

99

3. Mn hnh Publish Website xut hin, ti mc Target Location, nhn vo nt


, thc hin nh m t sau:

4. Nhn Open, sau nhn OK thc hin Publish website.


By gi, website c xut bn, v bn c th s dng trin khai thc t.

Trin khai mt ng dng Website ASP.NET trn IIS


Sau khi website c xut bn, bn c th trin khai Website phc v ngi
dng ca bn, cc bc trin khai mt website c thc hin nh sau:
1. M ng dng Internet Information Services ti Control Panel Administrative
Tools.
2. Mn hnh ng dng Internet Information Services xut hin.
3. Ti mc Websites Default Web Site, nhn chut phi, chn New Virtual
Directory nh m t sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

100

4. Mn hnh to mi Virtual Directory Creation Wizard xut hin, chn Next.

5. Ca s Virtual Directory
ConvertDollar2Current

Alias

xut

hin,

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

ti

Alias,

bn

nhp

vo:

101

6. C s Web Site Content Directory, bn a n th mc m website ca bn


c xut bn, nhn Next, nh m t sau:

7. Ti ca s Access Permision, nhn Next.


8. Ca s thng bo to thnh cng th mc o cho ng dng web xut hin,
nhn Finish.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

102

9. Bn trin khai thnh cng ng dng web ca bn.


10.
V ng dng ca bn c vit trn nn tng .NET 2.0, do bn cn cho
IIS hiu rng ng dng ca bn c xy dng chy trn nn tng .NET 2.0.
11.
Chn mc ConvertDollar2Current ti cy th mc Default Web Site. Nhn
chut phi chn Properties

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

103

12.

Ti ca s ConvertDollar2Current Properties xut hin, bn


ASP.NET.
13.
Ti la chn ASP.NET Version, chn .NET 2.0, nh m t sau y

chn

tab

14.

Nhn OK kt thc. ng dng ca bn hon ton c trin khai trn


IIS.
15.
Thc
thi
ng
dng,
bn
m
Browser
v
g
nh
sau:
http://localhost/ConvertDollar2Current/Default.aspx , trang web ca bn c
th c s dng.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

104

ng dng ASP.NET c trin khai thnh cng v thc thi

Pht trin h thng ng dng doanh nghip vi .NET


PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

105

Web Services.
Trong nhng nm gn y, s ht trin ca nhng ng dng Web dn thay th cho
nhng ng dng Desktop, mt s doanh nghip chuyn ton b h thng ng
dng qun l ca mnh t h thng chy trn Desktop sang nn tng ng dng Web.
Nhng h thng ny c nhiu thnh phn phc tp c pht trin trn nhiu ngn
ng khc nhau v c trin khai ti nhiu a im khc nhau. Do , vic pht
trin nhng ng dng phn tn t ra mt yu cu l bo cho nhng thnh phn
ny hot ng xuyn sut vi nhau. Webservice c ra i p ng yu cu
ny.
Mt webservices cung cp mt s nhng phng thc cho php s dng t mt hoc
nhiu ng dng khc nhau, bt chp vic nhng ng dng c xy dng trn
ngn ng no. Nhng phng thc nh th c gi l Web methods. Nhng hm c
s dng bi mt Web Service c th c cc ng dng khc truy cp n bng cch
s dng chun nh Simple Oject Access Protocol (SOAP). SOAP l mt giao thc s
dng ngn ng XML m t d liu v s dng HTTP truyn d liu. Mt ng
dng s dng mt Web service c gi l mt Web service client.
Web serivces cung cp nhng li ch sau:

D dng truy xut: bt k mt my tnh no truy cp vo Internet u c th


d dng truy xut n mt Web Service.
Cu trc linh hot: ty theo yu cu ca ng dng m nhng loi khc nhau ca
web service c th c to v s dng trong mt ng dng.
D dng tch hp: s dng web service, bn c th d dng tch hp vo cc
ng dng c pht trin trn nhng nn tng phn cng v phn mm khc nhau,
gip gim thiu chi ph. Hn th, bn c th tch hp ng dng Web vi ng
dng chy trn Desktop.

Khi to v gi mt Web Services


Visual Studio .NET IDE cho php d dng khi to mt Web Service, to mt web
services, bn thc hin theo cc bc sau:
1. M Visual Studio .Net IDE
2. Chn kiu d n l Visual C# Project t ca s Project Types, v chn
Tempalte l ASP.NET Web Services.
3. Trong

textbox
Location,
g
http://localhost/Webservices_CurrentDollarConverter.asmx
v click vo nt
OK.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

106

Ca s to mi d n

4. Click chut phi file Webservices_CurrentDollarConverter.asmx


ti ca s
Solution Explorer v chn View Code m.
5. Thm dng m lnh sau vo ca s son tho m lnh iu khin chng trnh,
trong lp Service1
[WebMethod]
public double ConvertDollar2Current(double value)
{
double rate = 16102;// t gi tin Vit v ng $
return value * rate;
}
6. Nhn F5 chy chng trnh.
7. Webservice xut hin, nhn vo lin kt ConvertDollar2Current thc hin
gi webservice ny.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

107

8. Sau khi nhn vo lin kt ConvertDollar2Current trn trang Web Service, mn


hnh sau xut hin cho php nhp vo tham s Web Service nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

108

9. Ti gi tr (value:), bn nhp vo mt s tng ng vi s dollar chuyn


i, v nhn Invoke
10.
Kt qu xut hin nh sau:

Sau khi kim tra ng dng, tin hnh build lp Web Service to th vin da
trn linkt ng (DLL), bng cch chn menu Build, Build Solution. By gi Web
Service c th s dng ti bt k ng dng no.
Bn s tin hnh th nghim gi v thc thi Web Services ny t mt ng dng Web
khc, nhng trc khi tin hnh gi, bn phi trin khai Web Services va to,
vic trin khai Web Service tng t nh vic trin khai mt ng dng web
ASP.NET m bn c hc trong phn trc. Sau khi trin khai Webservice, bn
thc hin cc bc sau.

M ng dng ConvertDollar2Current thc hin phn trc.


Ti ca s Solution Explorer, chn project v nhn chut phi, popup menu
xut hin, chn Add Web References nh m t sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

109

Ca
s
Add
Web
Reference
xut
hin,
ti
mc
URL,
bn
http://localhost/Webservices_ConvertDollar2Current/service.asmx l ng
ca Web Service chng ta va trin khai, nhn nt Go, kt qu nh sau:

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

g
dn

110

Danh sch nhng hm trong Webservice bn xy dng c lit k ti pane bn


di. ti mc Web reference name, bn g localhost
Nhn Add Reference

Web Service c add vo ng dng v sn sng s dng.


Ti s kin ca nt Chuyn i, bn thc hin nh sau:

protected void btnconvert_Click(object sender, EventArgs e)


{
//khong su dung webservice
//this.lblresult.Text = (Convert.ToDouble(this.txtdollar.Text.Trim()) *
16102).ToString();
// su dung web service
// Khai bo i tng ca class Service trong WebService
localhost.Service ws_dollar2current = new localhost.Service();
// Gi hm t i tng Web Service
this.lblresult.Text =
ws_dollar2current.ConvertDollar2Current(Convert.ToDouble(this.txtdollar.Text)).
ToString();
}

i dollar ra tin Vit, trc y chng ta thc hin php tnh, nhng khi
ng dng webservice, bn ch cn khai bo i tng Web Service v gi hm t
i tng ny.
Nhn F5 thc thi.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

111

Bn s dng mt Web Service thnh cng.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

112

D N
Project 1.
D n: Website thng tin v bn hng trc tuyn
M t:
SunToys l mt cng ty xut khu chi trn ton th gii. Cng vic kinh
doanh ca h lin tc pht trin trn th trng chu u, nm ti, h mun sn
phm ca mnh c mt ti th trng M. SunToys yu cu xy dng mt h thng
phn mm cho php khch hng ti th trng M c th xem thng nhng sn phm
ca h. Hn th na, SunToys k kt vi hng chuyn pht sn phm ti M cho
php sn phm ca SunToys n tay tng ngi tiu dng c nhn. Sn phm sau khi
c chn mua, s c phn phi sau ba ngy. Gim c cng ty quyt nh s xy
dng mt h thng cho php qun l s lng hng ha sn xut v tip nhn n
t hng t khch hng, v theo di qu trnh phn phi sn phm.
L mt cng ty phn mm chuyn nghip. bn hy thc hin yu cu trn.

Project 2.
D n: H thng qun tr kho hng
M t:
INGA l tp on phn phi h thng my ch hng u ti Vit Nam, cng ty c
hai tr s chnh ti Si Gn v H Ni. Mi ngy, cng ty phi gii quyt rt
nhiu n t hng ca khch hng. INGA c mt kho hng chnh ti Si Gn, cng
ty mun xy dng mt h thng qun tr kho hng v qun l n t hng, bn
hng vi nhng yu cu sau. H thng c ci t ti my ch ti Si Gn, v
mi ni nhn vin bn hng u c th thc hin vic tra cu thng tin hng ha
v thc hin gii quyt n hng m khng cn phi ci t trn my tnh th 2.
Hy thc hin yu cu ca INGA.

C THM
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

113

ASP.NET & AJAX Framework


ASP.NET AJAX l cng ngh min ph cho php ngi lp trnh to ra nhng ng
dng web ng. Cho php bn to ra nhng website c nhn n nhng h thng
website ln c tng tc cao.
Bn c th ti ng dng ny v t website
ASP.NET c a ch http://www.asp.net
Xem hng dn to ng dng vi ASP.NET AJAX theo s ch dn ca ging vin.

H c s d liu MySQL Server 5.0 & lp trnh thao tc d


liu vi MySQL Server.
MySQL l h c s d liu m ngun m ni ting nht th gii, y l h c s
d liu vi tc truy cp cao, mnh m, d s dng. c s dng bi nhiu h
thng ln nh Yahoo, Google, Nokia, YouTube Vic s dng mt h c s d liu
m m, min ph gip tit kim chi ph cho doanh nghip ca bn. Bn c th ti
v s dng min ph h c s d liu ny thng qua a ch www.mysql.com
MySQL cung cp kh nng giao tip vi C# mt cch mnh m v d dng thng qua
namespace MySQL.Data.MySqlClient. Cch thc thc hin giao tip d liu vi
MySQL ging nh cch thc m bn lm vic vi ADO.NET trnh by phn trc.
s dng namespace MySQLClient, i hi bn phi tham chiu n th vin ny
bng chn References di chuyn n tp tin MySQL.Data.dll. Nhn OK thc hin
Sau khi tham chiu file MySQL.Data.dll vo project, s dng cc hm trong
th vin ny, bn phi khai bo s dng th vin.
using MySql.Data;
using MySql.Data.MySqlClient;
T y bn c th s dng nhng hm, th tc trong th vin MySQL.

Kt ni n c s d liu MySQL
on m lnh sau thc hin vic kt ni n c s d liu MySQL bng lp trnh
C#.
MySqlConnection con = new
MySqlConnection("server=localhost;database=_net;uid=root;pwd=root");
con.Open();
Response.Write("Connected into MySQL Database");
con.Close();
Sau khi kt ni n c s d liu MySQL, bn c th thc hin mt cu truy
vn n mt bng trong c s d liu ny, on m lnh sau thc hin truy vn
n mt bng v hin th s dng d liu c trong bng ny.
MySqlConnection con = new
MySqlConnection("server=localhost;database=_net;uid=root;pwd=root");
con.Open();
Response.Write("Connected into MySQL Database");
MySqlCommand cmd = new MySqlCommand("select * from list",con);
cmd.CommandType = CommandType.Text;
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "list");
Response.Write(ds.Tables["list"].Rows.Count.ToString());
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

114

con.Close();
Hai v d trn cho thy, lp trnh kt ni c s d liu MySQL s dng Namespace
MySQL.Data.MySqlClient cng ging nh lm vic vi h c s d liu MSSQL thng
qua ADO.NET. V d sau s m t r hn v vn ny.
MySqlConnection con = new
MySqlConnection("server=localhost;database=_net;uid=root;pwd=root");
con.Open();
Response.Write("Connected into MySQL Database");
// thc hin thm mi d liu vo CSDL
cmd = new MySqlCommand("insert into list values(0,'New record
1','Description Record 1')");
cmd.Connection = con;
cmd.ExecuteNonQuery();
Response.Write("<br>Inserted into MySql DB");
// thc hin cp nht d liu
cmd = new MySqlCommand("update list set name='Updated Name' where
id=?id");
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("?id", "1");
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();

Kt ni vi CSDL s dng SQLClient

Regular Expressions
Regular Expression l mt chui nhng k t dng biu din (thay th) cho mt
chui no . Regular Expression l mt k thut kh s dng phng php so
snh. Bng sau th hin nhng biu thc thng s dng nht.
M t kim
tra

Cng thc
[

Mt
tp
hp k t

M t

V d

c s dng so
snh bt k mt k t
nm trong [ ]. C th
c s dng xc
nh mt chui k t
bt u v kt thc
bng vic s dng du
gch ngang, nh [a-z]

P[0-5]
Kim tra m sn phm bt u vi
k t P v theo sau bi nhng s
trong khong 0 n 5.

c s dng
snh t, s,
gch di

\w{8,20}
kim tra mt khu vi di nh
nht l 8 k t v ln nht l 20
k t.

\w

so
t

{n}

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

115

M t kim
tra

Cng thc

Khong

M t

V d

c s dng so
snh mt biu thc
lp li n ln

P[0-9] {4}
kim tra mt m sn phm bt u
bng k t P v theo sau bi 4 s
nm trong khong 0 n 9

c s dng kim
tra mt k t bt k
ngoi tr k t xung
dng.

2.12.2008
kim tra nh dng d liu c
dng: 1/12/2008, 2-12-2008, 2 12
2008 v c 2.12.2008.

c dng kim tra


mt k t bt k
ngoi
tr
khong
trng, tabs, v k t
xung dng.

http://\S\S\S\S\S\S.\S\S\S.\S\S
kim tra a ch web c c nhp
ng nh, http://itgatevn.com.vn

.
K
k

bt

Mt k t
khng phi
k
t
khong
trng

\S

+
Mt
hoc
nhiu
k
t
Bt k mt
k t n

S dng kim tra


c t nht mt s
xut hin trong biu
thc trc n

\S+@\S+\. S+
Kim tra mt a
pta30000@gmail.com

ch

mail

nh

?
c s dng kim
tra bt k mt k t
n no trc n

programs?
xc nh k t s trong ch
programs c th c hoc khng c.

c s dng kim
tra mt k t bt k
bao
gm:
khong
trng, tabs, v k t
xung dng.

\smore
kim tra khong trng trc mt
t.

c s dng kim
tra
mt
s
trong
khong 0 n 9

\d{5}
Kim tra mt s c nm ch s nh
11101

c s dng kim
tra mt k t theo
sau du gch cho
ngc

\~
kim tra ngi dng nhp k t
~ vo cha.

c s dng kim
tra khng c hoc c
nhiu k t trong
biu thc

P*\d{3}
ki tra u vo ca mt m sn
phm bt u bng k t P nh
P333,P777

\s
Mt k t
trng bt
k

\d
Mt s bt
k
\
K
Escape

*
Khng
c
hoc
c
nhiu ch

Regular Expression gip kim tra d liu do ngi dng nhp vo t ng dng,
trnh nhng li xut pht t vic nhp d liu ca chng trnh.

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

116

Mt s ng dng ca Regular Expressions


Hm kim tra tnh hp l ca email.
public static bool IsValidEmail(string email)
{
return System.Text.RegularExpressions.Regex.IsMatch(email,
@"^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$");
}
Hm kim tra xem ng dn a ch web c hp l hay khng
public static bool IsValidURL(string url)
{
return System.Text.RegularExpressions.Regex.IsMatch(url,
@"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zAZ0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$");
}
Hm sau dng kim tra mt chui c dng l s interger hay khng.
public static bool IsValidInt(string val)
{
return System.Text.RegularExpressions.Regex.IsMatch(val, @"^[19]\d*\.?[0]*$");
}

Mt s bi c khc
nh dng hin th cho kiu d liu Double, Float trong C#
Nhng v d sau ch cho bn cch thc nh dng nhng s kiu fload sang kiu k
t trong CS bng cch s dng hm static ca lp String l String.Format.
S sau du chm
V d nh dng ny chuyn i mt s double sang string vi kt th l 2 ch s
thp phn ng sau. nh dng s dng l: 0.00".
String.Format("{0:0.00}", 123.4567); // "123.46"
String.Format("{0:0.00}", 123.4); // "123.40"
String.Format("{0:0.00}", 123.0); // "123.00"
V d tip theo cho php bn rt gn nhng s thp phn tha ng sau du chm,
s dng nh dng 0.##".
String.Format("{0:0.##}", 123.4567); // "123.46"
String.Format("{0:0.##}", 123.4); // "123.4"
String.Format("{0:0.##}", 123.0); // "123"
S trc du chm thp phn
S dng nh dng: 00.0, chng ta s c kt qu l s trc du chm lc no
cng ln hn hoc bng 2, v sau n l mt ch s..
String.Format("{0:00.0}", 123.4567); // "123.5"
String.Format("{0:00.0}", 23.4567); // "23.5"
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

117

String.Format("{0:00.0}", 3.4567); // "03.5"


String.Format("{0:00.0}", -3.4567); // "-03.5"
Cch phn ngn
S dng nh dng mu: 0,0.0"
String.Format("{0:0,0.0}", 12345.67); // "12,345.7"
String.Format("{0:0,0}", 12345.67); // "12,346"
S 0
String.Format("{0:0.0}",
String.Format("{0:0.#}",
String.Format("{0:#.0}",
String.Format("{0:#.#}",

0.0);
0.0);
0.0);
0.0);

//
//
//
//

"0.0"
"0"
".0"
""

V sau y l mt s v d vui.
String.Format("{0:my number is 0.0}", 12.3); // "my number is 12.3"
String.Format("{0:0aaa.bbb0}", 12.3); // "12aaa.bbb3"

Gi Email t mt trang ASP.NET


Gi email l mt yu cu cn phi thc hin i vi mt ng dng web, chng hn
nh ngi s dng ng k thnh vin ca trang web ca bn, bn s gi mt email
xc nhn vic ng k ny. ASP.NET cung cp cho bn th vin lm vic vi
email thng qua namespace System.Web.Mail.
on m lnh sau y cho php gi mt HTML Email
MailMessage msg = new MailMessage();
StringWriter strwriter = new StringWriter();
HtmlTextWriter htmltxtwriter = new HtmlTextWriter(strwriter);
htmltxtwriter.RenderBeginTag("html");
htmltxtwriter.RenderBeginTag("head");
htmltxtwriter.RenderBeginTag("title");
htmltxtwriter.Write("Thank You!");
htmltxtwriter.RenderEndTag();
htmltxtwriter.RenderEndTag();
htmltxtwriter.RenderBeginTag("body");
htmltxtwriter.Write("Thank you for registering with Itgatevn.com.vn");
htmltxtwriter.RenderEndTag();
htmltxtwriter.RenderEndTag();
msg.From = "ITGATEVN.COM.VN";
msg.To = this.TextBox1.Text.Trim();
msg.Bcc = "pta30000@gmail.com";
msg.Subject = "Thanks for registering";
msg.Body = strwriter.ToString();
msg.BodyFormat = MailFormat.Html;
SmtpMail.Send(msg);

Upload file hnh nh vo c s d liu SQL

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

118

ASP.NET cung cp mt cch thc n gin cp nht hnh nh vo c s d liu


SQL Server. Hnh nh c th c lu tr trong mt c s d liu vi thuc tnh
ca bng l kiu image.
Bn c th s dng cu lnh SQL sau to mt bng cho php lu tr hnh nh:
CREATE TABLE [dbo].[_image](
[Img _id]
[int] identity(1,1) CONSTRAINT
NULL,
[Img _name]
[varchar] (30)
not NULL,
[Img _file]
[IMAGE] NULL,
[Img _type]
[varchar] (30) NULL
)
ON [PRIMARY] Textimage_on [PRIMARY]

[pk_image]

PRIMARY

KEY

NOT

Trong ,

Img_id: lu tr id ca hnh v l kha chnh ca bng


Img_name: lu tr tn ca hnh nh.
Img_file: lu tr hnh nh
Img_type: lu tr kiu ni dung ca hnh nh

By gi chng ta tin hnh thc hin cc bc upload hnh vo c s d liu


1. To mt Webform upload file hnh
2. Upload hnh vo c s d liu.
To Webform ti file hnh nh.
Bn to form upload hnh nh sau:
<form enctype="multipart/form-data" id="form1" runat="server">
<div>
<table id="table1" border="0" cellpadding="0" style="border-collapse:
collapse"
width="100%">
<tr>
<td width="125">
&nbsp;Image Name</td>
<td width="10">
&nbsp;</td>
<td>
<asp:TextBox ID="txtname"
runat="server"></asp:TextBox></td>
</tr>
<tr>
<td>
&nbsp;File to Upload</td>
<td>
&nbsp;</td>
<td>
<input id="fileimage" runat="server" type="file" /></td>
</tr>
<tr>
<td>
&nbsp;</td>
<td>
&nbsp;</td>
<td>
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

119

<asp:Button ID="btupload" runat="server" Text="Upload"


OnClick="btupload_Click" /></td>
</tr>
<tr>
<td>
&nbsp;</td>
<td>
&nbsp;</td>
<td>
&nbsp;</td>
</tr>
</table>
</div>
</form>

Ti file hnh vo c s d liu.


Khi ngi dng nhn vo nt Upload, s kin btupload_Click c gi. Bn c th
copy on m lnh sau vo s kin btupload_Click
protected void btupload_Click(object sender, EventArgs e)
{
// to i tng Stream
System.IO.Stream img_strm = fileimage.PostedFile.InputStream;
// nhn kch thc ca hnh
int img_len = fileimage.PostedFile.ContentLength;
// nhn kiu hnh
string strType = fileimage.PostedFile.ContentType;
string strName = txtname.Text;
// to mng kiu byte ca file c upload
byte[] imgData = new byte[img_len];
int n = img_strm.Read(imgData, 0, img_len);
int result = SaveToDB(strName, imgData, strType);
}
// Hm SaveToDB()
int SaveToDB(string imgName, byte[] imgbin, string imgcontenttype)
{
OleDbConnection con = new
OleDbConnection("Provider=SQLOLEDB;server=(local);database=_NET;uid=_net;pwd=");
OleDbCommand cmd = new OleDbCommand("INSERT INTO _image values(?,?,?)",
con);
OleDbParameter param0 = new
OleDbParameter("@imgName",OleDbType.VarWChar, 30);
param0.Value = imgName;
cmd.Parameters.Add(param0);
OleDbParameter param1 = new OleDbParameter("@imgName",
OleDbType.Binary);
param1.Value = imgbin;
cmd.Parameters.Add(param1);
OleDbParameter param2 = new OleDbParameter("@imgType",
OleDbType.VarWChar, 30);
param2.Value = imgcontenttype;
cmd.Parameters.Add(param2);

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

120

con.Open();
int numofwsAffected = cmd.ExecuteNonQuery();
con.Close();
return numofwsAffected;
}
V by gi, file hnh c lu tr trong c s d liu ca bn.

THAM KHO
Cc bn c th tham kho thm kin thc ti mt s a ch sau y
-

Th vin bi vit cng ngh ITGATEVN - http://www.itgatevn.com.vn/articles/


Th vin MSDN: http://msdn.microsoft.com

PROFESSIONAL PROGRAMMING FOR REAL LIFE


Phm Tun Anh Cng ty Xa L Thng Tin (iNGA Co.,Ltd.)

121

You might also like