Giảng Viên: Th.S Phạm Đào Minh Vũ 
Email: 
[email protected] 
1 
LẬP TRÌNH WEB ASP.NET VỚI C# 
PHẦN 2 
2 
 Chương 1 
Tổng Quan Về ASP.Net 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
1.1 Giới thiệu về ASP.Net và .Net Framework 
1.2 Tạo ứng dụng Web với Microsoft Visual 2005 
1.3 Các thành phần giao diện trên VS .Net 
1.4 Triển khai ứng dụng web 
3 
1.1.1 Tìm hiểu về ASP.Net 
1.1. Giới thiệu về ASP.Net và .Net Framework 
1.1.2 Những ưu điểm của ASP.Net 
1.1.3 Quá trình xử lý tập tin .Aspx 
1.1.4 Tìm hiểu về .Net Phatform và .Net Framework 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
4 
1.1.1 Tìm hiểu về ASP.Net 
Cuối thập niên 90, ASP (Active Server Page) đã được 
nhiều lập trình viên lựa chọn để xây dựng và phát triển 
ứng dụng web động trên máy chủ hệ điều hành Windows. 
ASP thể hiện những ưu điểm với mô hình lập trình thủ 
tục đơn giản, sử dụng hiệu quả các đối tượng: ADO 
(ActiveX Data Object) - Xử lý dữ liệu, FSO (File System 
Object) - Làm việc với hệ thống tập tin ASP cũng hỗ trợ 
nhiều ngôn ngữ: VBScript, JavaScript  Được yêu thích 
trong thời gian dài 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
5 
 Tuy nhiên, ASP còn tồn đọng một số khó khăn như: 
 Code ASP và HTML lẫn lộn, viết code khó khăn, 
 Hạn chế khả năng sử dụng lại code. 
 Mã nguồn không được biên dịch trước và không hỗ 
trợ cache  hạn chế về tốc độ, quá trình Postback 
khó khăn,  
 Năm 2002, Microsoft giới thiệu một kỹ thuật lập trình 
Web mới là ASP.Net đã khắc phục được các nhược điểm 
của ASP củ. 
 Với ASP.Net, không những không cần phải biết các tag 
HTML, thiết kế web, mà còn hỗ trợ mạnh lập trình hướng 
đối tượng trong quá trình xây dựng và phát triển ứng 
dụng Web. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
6 
 ASP.Net là kỹ thuật lập trình và phát triển ứng dụng 
web ở phía Server dựa trên nền tảng của Microsoft .Net 
Framework. 
 Mã lệnh ở phía server sẽ được biên dịch và thi hành tại 
Web Server kết quả được chuyển sang HTML/ 
JavaScript/ CSS và trả về cho Client. 
Tất cả các xử lý lệnh ASP, ASP.Net đều được thực hiện 
tại Server và do đó gọi là kỹ thuật lập trình ở phía server. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
7 
1.1.2 Những ưu điểm của ASP.Net 
ASP.Net cho phép lựa chọn bất kỳ ngôn ngữ lập trình 
nào mà bạn yêu thích: Visual Basic.Net, J#, C#, 
Trang ASP.Net được biên dịch trước, chuyển thành 
những tập tin DLL mà Server có thể thi hành nhanh 
chóng và hiệu quả. Yếu tố này là một bước nhảy vọt 
đáng kể so với kỹ thuật thông dịch của ASP. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
8 
ASP.Net hỗ trợ mạnh mẽ bộ thư viện phong phú và đa 
dạng của .Net Framework, làm việc với XML, Web 
Service, truy cập cơ sở dữ liệu qua ADO.Net,  
ASP.Net và ASP có thể cùng hoạt động trong 1 ứng 
dụng. 
ASP.Net sử dụng phong cách lập trình mới gọi là Code 
behide (Tách code riêng, giao diện riêng) Dễ đọc, dễ 
quản lý và bảo trì. 
Kiến trúc lập trình giống lập trình ứng dụng trên 
Windows. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
9 
Hỗ trợ quản lý trạng thái của các control 
Hỗ trợ nhiều cơ chê Cache 
Tự động phát sinh mã HTML cho các Server control 
tương ứng với từng loại Browser 
Triển khai cài đặt 
• Không cần lock, không cần đăng ký DLL 
• Cho phép nhiều hình thức cấu hình ứng dụng 
Hỗ trợ quản lý ứng dụng ở mức toàn cục 
• Global.aspx có nhiều sự kiện hơn 
• Quản lý session trên nhiều Server, không cần Cookies 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
10 
1.1.3 Quá trình xử lý tập tin .aspx 
Khi Web server nhận được yêu cầu từ phía client, nó sẽ 
tìm kiếm tập tin được yêu cầu thông qua chuỗi URL 
được gởi về, sau đó, tiến hành xử lý theo sơ đồ sau 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
11 
1.1.4 Tìm hiểu về .Net Phatform và .Net Framework 
.Net Phatform 
Bao gồm .Net Framework và những công cụ được dùng 
để xây dựng, phát triển ứng dụng và dịch vụ ASP.Net. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
12 
.Net Framework - Bộ thư viện các lớp đối tượng 
Kiến trúc .Net Framework 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
13 
 Framework chính là một tập hợp hay là một thư 
viện các lớp đối tượng hỗ trợ người lập trình khi xây 
dựng ứng dụng như Microsoft Foundation Class(MFC) là 
bộ thư viện trong Visual C++, Java Foundation 
Class(JFC) là bộ thư viện trong Java. .NET Framework 
là bộ thư viện dành cho các lập trình viên .NET. 
 Với hơn 5000 lớp đối tượng để gọi thực hiện đủ 
các loại dịch vụ từ hệ điều hành, chúng ta có thể xây 
dựng ứng dụng bằng Notepad. Hay với phần mềm 
Visual Studio.NET với giao diện trực quan 
 Nếu không có.NET Framework, Visual Studio.NET 
chỉ là vỏ bọc! Nhưng nếu không có Visual Studio.NET, 
công việc lập trình .NET cũng lắm bước gian nan! 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
14 
Hệ Điều Hành - Operating System 
 Với vai trò quản lý việc xây dựng và thi hành ứng 
dụng .NET Framework cung cấp các lớp đối tượng 
(Class) để thi hành các chức năng. Tuy nhiên được 
"hưởng ứng" hay không tùy thuộc khả năng của HĐH. 
 Với chức năng đơn giản như Messagebox sẽ được 
.NET Framework sử dụng hàm API của Windows. Chức 
năng phức tạp như sử dụng các COMponent sẽ yêu cầu 
phải cài đặt Microsoft Transaction Server (MTS) hay các 
chức năng trên Web cần phải cài đặt Internet Information 
Server (IIS). 
 Như vậy chọn HĐH để sử dụng .NET Framework 
là quan trọng. (Windows XP, 2003 Server, Window 7, sẽ 
đơn giản và tiện dụng trong khi lập trình) 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
15 
Common Language Runtime - CLR 
 Là thành phần "kết nối" giữa các phần khác trong 
.NET Framework với hệ điều hành. CLR giữ vai trò quản 
lý việc thi hành các ứng dụng viết bằng .NET. 
 CLR sẽ thông dịch các lời gọi từ chương trình cho 
Windows thi hành, đảm bảo ứng dụng không chiếm dụng 
và sử dụng tràn lan tài nguyên của hệ thống, không cho 
phép các lệnh "nguy hiểm" được thi hành. Các chức 
năng này được thực thi bởi các thành phần bên trong 
CLR như: Class loader, Just In Time compiler, COM 
marshaller, Security engine, 
 Trong các bản mới (XP.NET, 2003, Win 7,) CLR 
được gắn kèm với hệ điều hành. Điều này đảm bảo ứng 
dụng ta viết ra sẽ chạy trên máy tính khác mà không cần 
cài đặt. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
16 
Base Class Library – Thư viện các lớp cơ sở 
 Đây là thư viện các lớp cơ bản nhất, được dùng 
trong khi lập trình hay bản thân những người xây dựng 
.NET Framework cũng phải dùng nó để xây dựng các 
lớp cao hơn. Các lớp trong thư viện này là String, 
Integer,  
Ado.Net và XML 
 Bộ thư viện này gồm các lớp dùng để xử lý dữ 
liệu. ADO.NET thay thế ADO. Các lớp đối tượng XML 
được cung cấp để bạn xử lý các dữ liệu theo định dạng 
mới: XML. Các ví dụ cho bộ thư viện này là 
SqlDataAdapter, SqlCommand, DataSet, XMLReader, 
XMLWriter, 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
17 
Asp.Net 
 Bộ thư viện các lớp đối tượng dùng trong việc xây 
dựng các ứng dụng Web. 
Ứng dụng web xây dựng bằng ASP.NET tận dụng 
được toàn bộ khả năng của .NET Framework. 
Một "phong cách" lập trình mới code behind. 
 Sự xuất hiện của ASP.NET làm cân xứng giữa quá 
trình xây dựng ứng dụng trên Windows và Web. 
 ASP.NET cung cấp một bộ các Server Control để lập 
trình viên bắt sự kiện và xử lý dữ liệu của ứng dụng 
như đang làm việc với ứng dụng Windows. Cho phép 
chúng chuyển ứng dụng trước đây chỉ chạy trên nền 
Windows thành một ứng dụng Web khá dễ dàng.  
Khoa CNTT,Trường CĐ CNTT TP.HCM 
18 
Window form 
 Bộ thư viện về Window form gồm các lớp đối 
tượng dành cho việc xây dựng các ứng dụng Windows. 
 Việc xây dựng ứng dụng loại này vẫn được hỗ 
trợ tốt từ trước tới nay bởi các công cụ và ngôn ngữ lập 
trình của Microsoft. 
 Giờ đây, ứng dụng chỉ chạy trên Windows sẽ có 
thể làm việc với ứng dụng Web dựa vào Web service. Ví 
dụ về các lớp trong thư viện này là: Form, User 
Control, 
© Dương Thành Phết-www.thayphet.net Khoa CNTT,Trường CĐ CNTT TP.HCM 
19 
Web services 
 Web services là các dịch vụ được cung cấp qua 
Web (hay Internet). Dịch vụ được coi là Web service 
không nhằm vào người dùng mà nhằm vào người xây 
dựng phần mềm. 
 Web service có thể dùng để cung cấp các dữ liệu 
hay một chức năng tính toán. 
 Web service được cung cấp dựa vào ASP.NET và 
sự hỗ trợ từ phía HĐH của Internet Information Server. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
20 
 Ví dụ, công ty du lịch đang sử dụng một hệ thống 
phần mềm để ghi nhận thông tin về khách du lịch đăng 
ký đi các tour. Để thực hiện việc đặt phòng tại địa điểm 
du lịch, công ty cần biết thông tin về phòng trống tại các 
khách sạn. 
 Khách sạn có thể cung cấp 1 Web service để cho 
biết thông tin về các phòng trống tại 1 thời điểm. Dựa 
vào đó, phần mềm sẽ biết liệu có đủ chỗ để đặt phòng 
cho khách du lịch không? Nếu đủ, phần mềm lại dùng 1 
Web service khác cung cấp chức năng đặt phòng. 
 Điểm lợi của Web service là không cần liên lạc 
với khách sạn để hỏi thông tin phòng rồi sau đó lại xác 
định loại phòng nào cần đặt, số lượng đặt bao nhiêu, rồi 
lại liên lạc lại với khách sạn để đặt phòng. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
21 
Phân nhóm các lớp đối tượng theo loại 
 Namespace là tên gọi một nhóm các lớp đối 
tượng phục vụ cho một mục đích nào đó, chẳng hạn, các 
lớp đối tượng xử lý dữ liệu sẽ đặt trong một namespace 
là Data. Các lớp đối tượng dành cho vẽ đặt trong 
namespace tên là Drawing, . 
 Một namespace có thể là con của một namespace 
lớn. Namespace lớn nhất là System. 
 Lợi điểm của namespace là phân nhóm các lớp 
đối tượng, giúp dễ nhận biết và sử dụng. 
Với hơn 5000 tên có sẵn thì khả năng bị trùng tên là rất 
lớn  sử dụng 1 tên đầy đủ để nói đến 1 lớp đối tượng. 
Ví dụ, dùng lớp WebControls, chúng ta có thể dùng tên 
tắt là WebControls hay tên đầy đủ là: 
 System.Web.UI.WebControls. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
22 Hệ thống tên miền (Namespace) 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
23 
 Đặc điểm của bộ thư viện các đối tượng .NET 
Framework là sự trải rộng để hỗ trợ tất cả các ngôn ngữ 
lập trình .NET. 
 Điều này sẽ giúp những người mới bắt đầu ít bận 
tâm hơn trong việc lựa chọn ngôn ngữ lập trình cho mình 
vì tất cả các ngôn ngữ đều mạnh ngang nhau. 
 Cũng bằng cách sử dụng các lớp đối tượng để 
xây dựng ứng dụng, .NET Framework buộc người lập 
trình phải sử dụng kỹ thuật lập trình hướng đối tượng 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
24 
1.2. Tạo ứng dụng web với MS Visual 2005 
1.2.1. Khởi động MS Visual Studio .Net 
1.2.2. Tạo ứng dụng Web 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
25 
 Start  Programs  Microsoft Visual Studio 2010 
1.2.1. Khởi động MS Visual Studio .Net 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
26 
Từ menu File  New  Website 
Chọn ASP.Net Empty Web site 
Chọn vị trí lưu trữ - Location (D:\Wellcom) 
Chọn ngôn ngữ lập trình (C#) 
1.2.2. Tạo ứng dụng Web 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
27 
Kết quả: 
 Cửa sổ Solution Explorer 
Chuột phải -> Add new Item 
 -> Webform -> đặt tên “Default.aspx” 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
28 
Trang Default.aspx (Source) 
Trang Default.aspx.cs 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
29 
•Chọn trang Default.aspx ở chế độ Design 
•Nhập dòng văn bản: “Chào mừng các bạn đến vời ASP.Net” 
•Thêm 2 điều khiển Label đặt tên là : lbNgay, lbThoigian. 
1.2.3 Bổ sung điều khiển vào trang: 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
30 
Chuyển sang trang code Default.aspx.cs (Double click vào 
trang đang thiết kế) Nhập code cho sự kiện Page Load: 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
31 
1.2.4 Thi hành ứng dụng : 
Kiểm lỗi : Menu Build  Chọn Build Web Site 
Chấp nhận bật chế độ debug cho Website 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
32 
Chạy chương trình (không debug):Ctrl + F5 
Chạy chương trình (có debug): F5 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
33 
1.2.5 Phân loại tập tin trong ASP.Net: 
Diễn giải 
.asax Tập tin quản lý các sự kiện của ứng dụng 
(application), session, và các sự kiện khi có các yêu 
cầu tới trang web. 
.ascx Các điều khiển do người dùng tự tạo được lưu trữ với 
phần mở rộng là ascx (UserControl). 
.asmx Tập tin Web Service của ứng dụng ASP.Net 
.aspx Phần mở rộng của trang ASP.Net 
.config Tập tin cấu hình ứng dụng theo định dạng XML. 
Web.config chứa hầu hết các cấu hình của ứng dụng 
.cs Tập tin mã nguồn viết theo ngôn ngữ C# 
.js Tập tin mã nguồn của Jscript 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
34 
1.3. Các thành phần giao diện trên MS Visual .Net 
1.3.1 Solution Explorer 
1.3..2 Property Window 
1.3.3 Toolbox 
1.3.4 Document Outline Window 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
35 
1.3.1 Solution Explorer 
Hiển thị cửa số Solution Explorer: 
 Menu View | Solution Explorer 
 Đây là cửa số quản lý các "tài nguyên" có trong 
ứng dụng. Thông qua cửa sổ này, chúng ta có thể 
thực hiện các chức năng như: Tạo thư mục, sao chép, 
cắt, dán như trong Windows Explorer. Và thêm thành 
phần mới cho ứng dụng: 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
36 
Thêm thành phần mới cho ứng dụng: Click phải Add | 
Add New Item 
Web Form: Thêm trang Web 
Class: Thêm lớp đối tượng 
Module Web Form: Thêm thư viện 
Web User Control: Thêm điều khiển người dùng 
  
Khoa CNTT,Trường CĐ CNTT TP.HCM 
37 
Xác định Project khởi động(trong trường hợp Solution 
có nhiều Project): Click phải chuột  chọn Set as 
StartUp Project. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
38 
Xác định trang web khởi động cho ứng dụng: Chọn 
trang cần khởi động  Click phải chuột  Chọn Set 
As Start Page. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
39 
1.3.2 Property Window 
Hiển thị cửa số Properties Window: 
 Menu View | Properties Window. 
 Dùng để thiết lập thuộc tính cho trang web và các 
điều khiển có trong trang web. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
40 
1.3.3 Toolbox 
Hiển thị Toolbox: 
 Menu View  Toolbox 
Dùng để tạo các điều khiển trân trang. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
41 
1.3.4 Document Outline Window 
Hiển thị cửa sổ Document Outline: 
 Menu View / Other Windows / Document Outline. 
 Cửa sổ này hiển thị các thành phần của trang 
web theo tổ chức cây  rất dễ quản lý và thao tác với 
các đối tượng có trong trang Web. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
42 
1.4.1 Phần mềm Web Server(IIS) 
1.4. Triển khai ứng dụng web(IIS) 
1.4.2 Triển khai ứng dụng web 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
43 
1.4.1 Phần mềm Web Server(IIS) 
 Internet Information Services (IIS) là phần mềm 
Web Server của Microsot dành cho HĐH Windows 
 IIS có thể được sử dụng như 1 Web server, kết 
hợp với ASP, ASP.NET để xây dựng các ứng dụng Web 
tận dụng các điểm mạnh của Server-side Script, COM 
component,theo mô hình Client/Server. 
 IIS có rất nhiều phiên bản: 
Windows 2000 tích hợp IIS 5.0. 
Windows XP tích hợp IIS 5.5 
Windows XP tích hợp IIS 6 hỗ trợ các tính năng 
dành cho .NET và Web Service. 
Windows Vista tích hợp IIS 7.0 
 Giới thiệu về phần mềm Web Server(IIS) 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
44 
 Cài đặt IIS Trên Windows 2000/XP 
Bước 1. Chọn Control Panel | Add/Remove programs. 
Bước 2. Add/Remove Windows Components. 
Bước 3. Đánh dấu Internet Information Services (IIS). 
Bước 4. Chọn nút Next để cài đặt. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
45 
Sau khi cài đặt IIS, thư mục InetPub được tạo ra trong C: 
và chứa thư mục con wwwroot. 
Để kiểm tra cài đặt: Khởi động trình duyệt truy cập địa chỉ : 
 hoặc  
Khoa CNTT,Trường CĐ CNTT TP.HCM 
46 
 Trên Windows Vista/ Windows 7 
Bước 1: Start  Settings  Control Panel 
Bước 2: Classic View  Chọn Programs and features 
Bước 3: Turn Windows features on or off 
Bước 4: Đánh dấu mục Internet Information Services (IIS) 
Bước 5: Chọn nút OK để cài đặt. 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
47 
Để kiểm tra cài đặt: Khởi động trình duyệt truy cập địa chỉ : 
 hoặc  
Khoa CNTT,Trường CĐ CNTT TP.HCM 
48 
Trên Windows 2000/XP 
Start  Settings  Control Panel  
Administratrive tools  Internet Infomtic Services 
 Click phải Default Web site 
 Cấu hình Web Server 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
49 
Qui định thư mục gốc ứng dụng: Home Directory 
Để thực thi ứng dụng từ địa chỉ  thì phải 
lưu ứng dụng tại thư mục này 
Quy định trang chủ mặc định: Documents 
Nghĩa là trang mặc định được mở khi truy cập địa chỉ: 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
50 
Trên Windows Vista/ Windows 7 
 Start  Settings  Control Panel 
 Administratrive tools  IIS Manager 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
51 
Quy định thư mục gốc ứng dụng: Directory Browsing 
Quy định trang chủ mặc định: Default Document 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
52 
Khai báo thư mục vật lý 
(D:\MyWebsite) 
Khai báo nhãn thư mục ảo (Myweb) 
 Next 
Next  Finish 
 Tạo thư mục ảo – Virtual Directory: Để truy cập 
website lưu ở vị trí khác cần phải ánh xạ thư mục ảo. 
Click phải Default WebsiteNew/ Virtual Directory 
Trên Windows 2000/XP 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
53 OK 
Click phải: Default WebsiteAdd Application 
Thư mục vật lý 
Tên ánh xạ 
Trên Windows Vista/ Windows 7 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
54 
Truy cập để kiểm tra 
Từ IIS Manager: Click phải trang cần xem (Default.aspx)  Browse 
Hoặc Từ trình duyệt nhập:  
Khoa CNTT,Trường CĐ CNTT TP.HCM 
55 
1.4.2 Triển khai ứng dụng web (Publish web site) 
 Biên dịch ứng dụng và copy website đến thư mục 
cụ thể. 
 Các tập tin code behide đã được biên dịch thành .dll 
 Thao tác 
 Click phải vào project  Publish website 
 Sử dụng chức năng Publish web site 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
56 
Khai báo đường dẫn thư mục sẽ chứa website publish đến 
 Mở cửa sổ Explorer, ta sẽ thấy thư mục được tạo 
 Vào IIS tạo thư mục ảo ánh xạ đến thư mục đã tạo 
 Kiểm tra :  
 Sử dụng thư mục đã tạo để Upload lên Webserver 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
57 
 Chương 2 
 Các Đối Tượng Trong ASP.Net 
2.1. Đối tượng Response Và Request 
2.2. Đối tượng Application Và Session 
2.3. Đối tượng Server Và Cookies 
2.4. Tập tin Global.asax Và Web.config 
58 
2.1. Đối tượng Response Và Request 
2.1.1. Đối tượng Response 
2.1.2. Đối tượng Request 
59 
2.1.1 Đối tượng Response 
Đối tượng Response được sử dụng để giao tiếp với 
Client, nó quản lý và điều phối thông tin từ Web 
Server đến các trình duyệt của người dùng. 
 Phương thức Write 
Dùng để ghi kết quả lên trình duyệt của máy khách, 
có thể là văn bản, thẻ HTML, Mã Script . . . 
 Response.Write ("Chào các bạn!"); 
 String s = DateTime.Today.ToShortDateString(); 
 Response.Write(" " + "Hôm nay là: " + s + "" 
60 
 Phương thức Redirect 
Dùng để chuyển yêu cầu truy cập của máy khách 
đến 1 URL khác 
Ví dụ: 
//Nếu đăng nhập thành công 
if () 
 Response.Redirect("Default.aspx"); 
else 
 Response.Redirect("Login.aspx"); 
ReSponse.Redirect(“URL chuyển đến”) 
61 
Ví dụ: Sử dụng đối tượng Response để thực hiện 
việc download tập tin. 
 private void lnkDownload_Click() 
 { 
 String sTap_tin = "De cuongonthiTN2010.pdf"; 
 String sDuong_dan = Server.MapPath("~/") + sTap_tin; 
 Response.AddHeader("Content-Disposition","attachment; filename=" + sTap_tin); 
 Response.WriteFile(sDuong_dan); 
 Response.End(); 
 } 
62 
2.1.2 Đối tượng Request 
Đối tượng Request được dùng để nhận thông tin từ 
trình duyệt của người dùng gởi về cho WebServer. 
 Thuộc tính QueryString 
Như đã biết URL(Uniform Resource Locators) của 
1 trang có cấu trúc như sau: 
QueryString - gọi là chuỗi tham số cấu trúc như sau: 
Các cặp [=] phân cách nhau 
bằng dấu & 
63 
Thuộc tính QueryString cho phép chúng ta nhận 
các giá trị truyền qua chuỗi tham số này. 
VD: Giả sử người dùng gởi thông điệp đến Web 
Server yêu cầu trang: “ChitietSP?Ma=2". Để lấy giá 
trị tham số này ta thực hiện: 
String Masp = Request.QueryString["Ma"]; 
Response.Write(Masp); 
Request.QueryString[“Tên_tham_số”]; 
64 
2.2. Đối tượng Application Và Session 
Application và Session là 2 đối tượng khá quan trọng 
trong ứng dụng web, giúp các trang aspx có thể liên kết 
và trao đổi dữ liệu cho nhau 
65 
2.2.1. Đối tượng Application 
Được sử dụng để quản lý tất cả các thông tin của một 
ứng dụng web. Thông tin được lưu trữ trong đối 
tượng Application có thể được xử lý trong bất kỳ trang 
aspx nào trong suốt chu kỳ sống của ứng dụng. 
 Sử dụng biến Application 
 Tạo biến Application 
 Application["Tên biến“] = ; 
 Lấy giá trị từ biến Application 
 = Application["Tên biến“]; 
 Ví dụ: 
Application.Lock(); 
Application["So_lan_truy_cap“] = 0; 
Application.UnLock(); 
s = Application["So_lan_truy_cap"]; 
66 
2.2.2. Đối tượng Session 
 Được dùng để lưu trữ thông tin của người dùng 
trong ứng dụng. 
 Thông tin được lưu trữ trong Session là của một 
người dùng trong một phiên làm việc cụ thể. 
 Web Server sẽ tự động tạo một đối tượng Session 
cho mỗi người dùng mới kết nối vào ứng dụng và tự 
động hủy chúng nếu người dùng còn không làm việc 
với ứng dụng nữa. 
 Đối tượng Session khá hữu hiệu trong việc thực 
hiện "lưu vết và quản lý thông tin của người dùng". 
67 
Thuộc tính Timeout 
 Qui định khoảng thời gian (tính bằng phút) mà Web 
Server duy trì đối tượng Session nếu người dùng không 
gởi yêu cầu về lại Server. Giá trị mặc định là 20 phút. 
 Nếu không có yêu cầu nào kể từ lần yêu cầu sau 
cùng một khoảng thời gian là phút, đối 
tượng Session mà Web server cấp cho lần làm việc đó 
sẽ tự động được giải phóng. 
 Những yêu cầu sau đó được Web server coi như là 
một người dùng mới, và đương nhiên sẽ được cấp một 
đối tượng Session mới. 
68 
Phương thức Abandon 
Trong khoảng thời gian đối tượng Session 
được duy trì dù không có sự tương tác của Client, 
nghĩa là Web server phải sử dụng một vùng nhớ để duy 
trì đối tượng Session trong một khoảng thời gian tương 
ứng. 
 Phương thức Abandon của đối tượng Session sẽ giải 
phóng vùng nhớ được dùng để duy trì đối tượng 
Session trên Web Server ngay khi được gọi thực hiện. 
 Những yêu cầu sau đó được Web server coi như là 
một người dùng mới. 
69 
Sử dụng biến toàn cục với Session 
 Tạo biến Session 
 Session["Tên biến“] = ; 
 Lấy giá trị từ biến Session 
 = Session["Tên biến“] 
 Ví dụ: 
Lưu trữ thông tin khi người dùng đăng nhập hệ 
thống thành công 
Session["TenDN“] = “userITC" 
70 
2.3. Đối tượng Server Và Cookies 
2.3.2 Đối tượng Cookies 
2.3.1 Đối tượng Server 
71 
2.3.1 Đối tượng Server 
Được sử dụng để cung cấp thông tin của Server cho 
ứng dụng. 
 Thuộc tính MachineName: Dùng để lấy tên của 
Web Server. 
 Phương thức Mappath: Dùng để lấy đường dẫn 
vật lý hoặc đường dẫn ảo đến một thư mục trên 
Server. 
 Phương thức Transfer(): 
Ngừng thi hành trang hiện hành, gởi yêu cầu mới 
đến trang được gọi thực hiện. 
72 
2.3.2 Đối tượng Cookies 
 Nếu đã đăng ký là thành viên của một trang web 
thì khi yêu cầu đến trang web đó, sẽ nhận ra là thành 
viên. Vì những thông tin được lưu tại máy Client 
trong đối tương Cookies. 
 Như vậy Cookie như một tập tin (kích thước nhỏ) 
được lưu tại máy của người dùng. Dùng để nhận ra 
người đang viếng thăm 
73 
Thêm Cookies 
 Response.Cookies.Add(); 
Ví dụ:Tạo Cookies TenDN lưu tên đăng nhập của người dùng 3 
ngày kể từ ngày hiện hành trên Web Server. 
 HttpCookie cookTenDN = new HttpCookie("TenDN"); 
 cookTenDN.Value = "UserITC"; 
 cookTenDN.Expires = DateTime.Today.AddDays(3); 
 Response.Cookies.Add(cookTenDN); 
Lấy giá trị từ Cookies 
Request.Cookies[“Tên Cookies”].Value; 
 HttpCookie cookTenDN = Request.Cookies["TenDN"]; 
 if (cookTenDN != null) 
 Response.Write(Request.Cookies["TenDN"].Value); 
74 
2.4. Tập tin Global.asax Và Web.config 
2.4.1 Tập tin Global.asax 
2.4.2 Tập tin Web.config 
75 
2.4.1 Tập tin Global.asax 
Được dùng để: 
 Khai báo và khởi tạo giá trị cho các biến Application, 
Session. 
 Viết xử lý cho các sự kiện của 2 đối tượng 
Application và Session. 
 Một project chỉ có 1 tập tin Global.asax 
Cách tạo: 
76 
Cấu trúc tập tin Global.asax 
77 
Application_Start: Xảy ra một lần đầu tiên khi bất kỳ 
trang nào trong ứng dụng được gọi. 
Application_End: Xảy ra khi dừng hoạt động của 
WebServer. Ví dụ xử lý ghi nhận thông tin Số lượt truy 
cập vào cơ sở dữ liệu (nếu cần). 
 void Application_Start(object sender, EventArgs e) 
 { 
 // Code that runs on application startup 
 Application["So_luot_truy_cap"] = 0; 
 Application["So_nguoi_online"] = 0; 
 } 
78 
Session_Start: Xảy ra khi người dùng mới yêu cầu đến 
bất kỳ trang aspx của ứng dụng. 
 void Session_Start(object sender, EventArgs e) 
 { 
 // Code that runs when a new session is started 
Application["So_luot_truy_cap"] = 
int.Parse(Application["So_luot_truy_cap"].ToString()) + 1; 
Application["So_nguoi_online"] = 
int.Parse(Application["So_nguoi_online"].ToString()) + 1; 
 } 
79 
Session_End: Xảy ra khi phiên làm việc không có gởi yêu 
cầu hoặc làm tươi trang aspx của ứng dụng web trong 
một khoảng thời gian (mặc định là 20 phút) (Kết thúc 
phiên làm việc). 
 void Session_End(object sender, EventArgs e) 
 { 
 // Code that runs when a session ends. 
Application["So_nguoi_online"] = 
int.Parse(Application["So_nguoi_online"].ToString()) - 1; 
 } 
80 
2.4.2 Tập tin Web.config 
Web.config là một tập tin văn bản viết theo định dạng 
XML sử dụng để lưu trữ thông tin cấu hình của một ứng 
dụng 
 Được tự động tạo ra khi chúng ta tạo mới ứng dụng. 
 <add name="KetnoiCSDL" 
 connectionString="Data Source=PC\SQLEXPRESS; 
 Initial Catalog=QLBansach; 
 Integrated Security=True“ 
 providerName="System.Data.SqlClient" /> 
....... 
Tập tin cấu hình ứng dụng Web 
81 
 
defaultLanguage: qui định ngôn ngữ mặc định 
debug: Bật/tắt chế độ debug của ứng dụng 
 : Quản lý việc 
xử lý lỗi khi có lỗi phát sinh trong ứng dụng. 
Thuộc tính mode có các giá trị: 
 RemoteOnly : Cho người dùng thấy trang thông báo lỗi 
thông qua thuộc tính defaultRedirect (nếu có). Thông 
báo lỗi gồm mã lỗi và mô tả lỗi. 
 On : tùy vào thuộc tính defaultRedirect 
• Có qui định trang thông báo lỗi: hiển thị trang báo lỗi 
• Không qui định: hiển thị trang báo lỗi nhưng không 
hiển thị mã lỗi và mô tả lỗi 
 Off : Hiển thị lỗi trên trang aspx hiện hành 
2.4.2.1. Một số cấu hình mặc định 
82 
<customErrors mode=“on“ 
 defaultRedirect="Error/Err.aspx" /> 
2.4.2.2. Ví dụ 
83 
Ví dụ 
84 
Ví dụ 
85 
2.4.2.3. Làm việc với Web.config 
Bổ sung thông tin cho ứng dụng 
Truy xuất thông tin 
System.Configuration.ConfigurationSettinger. 
AppSettings[“Khoá”]; 
 Tập tin web.config có hỗ trợ tag với 2 
thuộc tính là key và value cho phép chúng ta thêm vào 
các biến dùng để cấu hình ứng dụng. 
86 
Ví dụ: Tạo biến cấu hình dùng để lưu chuỗi kết nối 
CSDL SQLServer 
Lấy thông tin chuỗi kết nối 
 <add name="KetnoiCSDL" connectionString="Data Source=PC\SQLEXPRESS; 
Initial Catalog=QLBansach;Integrated Security=True" 
providerName="System.Data.SqlClient" /> 
 string StrCnn = 
ConfigurationManager.ConnectionStrings["KetnoiCSDL"]. 
 ConnectionString.ToString(); 
87 
 Chương 3 
Các Điều Khiển WebServer 
Khoa CNTT Trường CĐ CNTT TP.HCM 
3.1. Tổng quan về ASP.Net Server Controls 
3.2. HTML Server Control 
3.3. Web Server Controls 
3.4. Các điều khiển khác 
3.5. Đối tượng ViewState 
88 
3.1.1 ASP.NET Page 
 Trang ASP.NET là thành phần chính của giao diện, nơi 
chứa các điều khiển, thể hiện nội dung của trang web đến 
người dùng 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Chuổi sự kiện của đối tượng Page 
Xẩy ra đầu tiên khi được yêu cầu 
Chứa các xử lý và giá trị khởi động ban đầu 
Khi trang web chuẩn bị trả về client 
Khi thoát trang web 
89 
3.1.2. Các thuộc tính 
 IsPostBack : Thuộc tính này cho biết trạng thái của 
trang web là được load lần đầu tiên hay là lần thứ n. 
Thường được sử dụng trong Page_Load() để kiểm tra 
trạng thái của trang web 
 SmartNavigation: 
 True: Giữ nguyên vị trí người dùng đang duyệt trang 
 False: Hiển thị lại phần đầu của trang web 
Khoa CNTT Trường CĐ CNTT TP.HCM 
90 
3.2. HTML Control 
 HTML Control được tạo ra từ các 
tag HTML tĩnh thường được sử 
dụng lập trình ở phía client 
Khi sử dụng HTML Control để lập 
trình phía Server ta gán thuộc tính 
runat="Server" cho HTML Control 
đó được gọi là HTML Server 
Control. 
HTML Control trên Toolbox 
Khoa CNTT Trường CĐ CNTT TP.HCM 
91 
Để chuyển các HTML Control thành các HTML Server 
Control, ta chọn Run As Server Control từ menu ngữ cảnh 
hoặc gán thuộc tính runat=“Server” cho HTML Control 
Khoa CNTT Trường CĐ CNTT TP.HCM 
92 
3.3. ASP.NET Webserver Control 
Những lý do nên sử dụng Standard 
Web Control: 
Đơn giản: tương tự như 
Windows Form Controls. 
Đồng nhất: Có các thuộc tính 
giống nhau  dễ tìm hiểu và sử 
dụng. 
Hiệu quả: Tự động phát sinh ra 
các tag HTML theo từng loại 
Browser 
Khoa CNTT Trường CĐ CNTT TP.HCM 
93 Bảng liệt kê các thuộc tính chung của các Web control 
Thuộc tính Ý nghĩa 
(ID) Tên của điều khiển. Tên của điều khiển là duy nhất. 
AccessKey Ký tự để di chuyển nhanh đến điều khiển - phím nóng. 
Attributes Tập hợp các thuộc tính của điều khiển HTML 
BackColor Màu nền của điều khiển. 
BorderColor Màu đường viền của điều khiển. 
BorderStyle Kiểu đường viền của điều khiển. 
BorderWidth Độ rộng của đường viền. 
CssClass Hình thức hiển thị của điều khiển qua tên CSS. 
Enabled Điều khiển có được hiển thị hay không. Mặc định là True. 
Font Font hiển thị cho điều khiển 
ForeColor Màu chữ hiển thị trên điều khiển 
Height Chiều cao của điều khiển 
ToolTip Dòng chữ sẽ hiển thị khi rê chuột vào điều khiển. 
Width Độ rộng của điều khiển. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
94 
3.3.1. Label 
 Được sử dụng để hiển thị và trình bày nội dung văn 
bản, chấp nhận hiển thị nội dung với các tag HTML. 
Ví dụ: 
 lblA.Text = "Đây là chuỗi văn bản thường"; 
 lblB.Text ="Còn đây là chuỗi được in đậm"; 
Khoa CNTT Trường CĐ CNTT TP.HCM 
95 
3.3.2 TextBox 
 Được dùng để nhập và hiển thị dữ liệu văn bản. 
Các thuộc tính: 
Text: Nội dung chứa trong Textbox 
TextMode: 
 SingleLine: Hiển thị và nhập liệu 1 dòng 
 MultiLine: Hiển thị và nhập liệu nhiều dòng 
 Password: Hiển thị dấu * thay cho các ký tự. 
Rows: Số dòng hiển thị nếu textbox có nhiều dòng. 
Maxlength: Số ký tự tối đa được nhập 
Wrap: Văn bản có được phép tự động xuống dòng 
khi độ rộng của textbox không đủ. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
96 
Khoa CNTT Trường CĐ CNTT TP.HCM 
97 
3.3.3. Image 
 Được dùng để hiển thị hình ảnh lên trang Web. 
Các thuộc tính: 
 ImageURL: Đường dẫn tập tin hình ảnh. 
 AlternateText: Chuỗi văn bản sẽ hiển thị chú thích, . 
 khi hình ảnh không tồn tại (không load được) 
 ImageAlign: Vị trí hiển thị giữa hình và nội dung. 
 NotSet 
 Left 
 Middle 
 TextTop 
 Right 
Khoa CNTT Trường CĐ CNTT TP.HCM 
98 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Not set 
Left 
Middle TextTop 
Right 
99 
3.3.4. Button, ImageButton, LinkButton 
 Mặc định là các nút Submit Button, khi được nhấn 
vào sẽ PostBack về Server. 
Các thuộc tính: 
- Text: Chuỗi văn bản hiển thị trên điều khiển. 
- CommandName: Tên lệnh được sử dụng trong sự kiện 
Command. 
- Ngoài những thuộc tính trên, điều khiển ImageButton còn 
có các thuộc tính ImageURL, ImageAlign và AlternateText 
như điều khiển Image. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
100 
Ví dụ: Tạo trang web với các điều khiển: Label, Textbox, 
Button thực hiện chức năng tính toán như sau: 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý sự kiện: 
protected void btTinhtien_Click(object sender, EventArgs e) 
 { 
 int soluong=int.Parse(txtSoluong.Text ); 
 int dongia=int.Parse(txtDongia.Text ); 
 int Thanhtien=soluong * dongia; 
 txtThanhtien.Text = Thanhtien.ToString(); 
 } 
101 
3.3.5. HyperLink 
 Được sử dụng để tạo ra các liên kết siêu văn bản. 
Các thuộc tính: 
 ImageURL: Tập tin ảnh hiển thị trên điều khiển. 
 Text: Nhãn văn bản hiển thị trên điều khiển. 
 NavigateUrl: Đường dẫn cần liên kết đến. 
 Target: Xác định cửa sổ sẽ hiển thị cho mối liên kết 
 _blank: Hiển thị trang liên kết ở cửa sổ mới. 
 _self: Hiển thị trang liên kết tại cửa sổ chứa liên kết 
 _parent: Hiển thị trang liên kết ở frame cha. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
102 
Ví dụ: Tạo trang web gồm 3 điều khiển Hyperlink 
Khoa CNTT Trường CĐ CNTT TP.HCM 
103 
3.3.6. Listbox và DropdownList 
 Là điều khiển hiển thị danh sách lựa chọn, có thể 
chọn một hoặc nhiều. 
Các thuộc tính: 
+ AutoPostBack: Có tự động PostBack về Server khi 
chỉ số của mục chọn bị thay đổi. Mặc định False 
+ Items: Tập chứa các mục chọn của điều khiển. thêm 
vào mục chọn qua thuộc tính ListItem Collection Editor. 
+ Rows: Chiều cao của ListBox theo số dòng. 
+ SelectionMode: Cách chọn các mục trong ListBox. 
 Single: Chỉ chọn một mục có trong danh sách. 
Multiple: Cho phép chọn nhiều mục. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
104 
Tập hợp Items 
 Add: Thêm mục mới vào cuối danh sách 
 Items.Add(); 
 Insert: Thêm mục mới vào danh sách tại một vị trí 
 Items.Insert(,); 
 Count: Trả về số mục (Item) có trong danh sách. 
 Items.Count; 
 Remove: Xóa đối tượng Item tại ra khỏi danh sách. 
 Items.Remove(); 
 RemoveAt: Xóa item tại vị trí index khỏi danh sách. 
 Items.RemoveAt(); 
 Clear: Xóa tất cả Item có trong danh sách. 
 Items.Clear(); 
Khoa CNTT Trường CĐ CNTT TP.HCM 
105 
Xử lý mục chọn 
Thuộc tính Selected của đối tượng Items[i] để kiểm tra 
xem mục thứ i đó có được chọn hay không. 
SelectedIndex: Cho biết chỉ số của mục được chọn. 
Trong trường hợp chọn nhiều mục SelectedIndex sẽ trả 
về chỉ số mục chọn đầu tiên. 
SelectedItem: Cho biết mục được chọn. Trong trường 
hợp chọn nhiều mục, SelectedItem sẽ trả về mục chọn 
đầu tiên. 
SelectedValue: Cho biết giá trị của mục được chọn. 
Trong trường hợp chọn nhiều mục, SelectedValue sẽ trả 
về giá trị mục chọn đầu tiên. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
106 
Ví dụ: Tạo trang Web gồm 1 listbox, 2 label , 1 Button khi 
click nút chọn sẽ hiện tên các địa danh được chọn. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
107 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý sự kiện: 
 protected void Page_Load(. . . ) { 
 if (!IsPostBack) { 
 lstDiadanh.Items.Add("Vịnh Hạ Long"); 
 lstDiadanh.Items.Add("Phan Thiết - Mũi Né"); 
 lstDiadanh.Items.Add("Nha Trang"); 
 lstDiadanh.Items.Add("Đà Lạt"); 
 lstDiadanh.Items.Add("Phú Quốc"); 
 lstDiadanh.Items.Add("Huế - Hội An"); 
 int n = lstDiadanh.Items.Count; 
 lbSoDD.Text = n.ToString(); 
 } 
 } 
 protected void btChon_Click(. . .) { 
 lbDiadanh.Text = ""; 
 for (int i = 0; i < lstDiadanh.Items.Count; i ++) { 
 if (lstDiadanh.Items[i].Selected) 
 lbDiadanh.Text += "" + lstDiadanh.Items[i].Value; 
 } 
 } 
108 
3.3.7. Checkbox, RadioButton 
Các thuộc tính 
Checked: Trạng thái của mục chọn (chọn hay không) 
TextAlign: Vị trí của điều khiển so với chuỗi văn bản. 
AutoPostBack: Có được tự động PostBack về Server 
khi các mục chọn bị thay đổi, mặc định là False. 
GroupName (RadioButton): Tên nhóm, thuộc tính này 
được sử dụng để nhóm các điều khiển RadioButton lại 
thành 1 nhóm. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
109 
Ví dụ: Tạo trang web gồm Nhóm các RadioButton Giới tính, 
Thu nhập, Nhóm Checkbox Ngoại ngữ 
Khoa CNTT Trường CĐ CNTT TP.HCM 
110 
3.3.8. CheckBoxList, RadioButtonList 
 Dùng để tạo ra một nhóm các CheckBox/Radio Button, Là 
điều khiển danh sách nên có thuộc tính Items chứa tập hợp 
các mục chọn như ListBox/DropDownList. 
 Các thao tác trên tập hợp Items, xử lý mục chọn cũng 
tương tự như ListBox/DropDownList. 
Tạo mới: 
 Kéo thả RadioButtonList (Hoặc CheckboxList) vào Form 
  Chọn Edit Items 
Khoa CNTT Trường CĐ CNTT TP.HCM 
111 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Các thuộc tính 
RepeatColumns: Số cột hiển thị. 
RepeatDirection: Hình thức hiển thị 
 Vertical: Theo chiều dọc 
 Horizontal: Theo chiều ngang 
AutoPostBack: Có được phép tự động PostBack về 
Server khi các mục chọn của điều khiển bị thay đổi. 
Mặc định là False. 
112 
Ví dụ: Tạo trang web gồm Nhóm RadioButton Thu nhập 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý sự kiện: 
Private Sub rblThu_nhap_SelectedIndexChanged() 
 lblThu_nhap.Text = "Bạn chọn thu nhập: " + 
rblThu_nhap.SelectedItem.Text; 
End Sub 
113 
Ví dụ: Tạo trang web hiển thị các thông tin. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
114 
3.4. Các điều khiển khác 
3.4.1. Điều khiển Literal 
 Tương tự như điều khiển Label, Literal được sử 
dụng để hiển thị chuỗi văn bản trên trang Web. 
 Điểm khác biệt là khi thi hành, Literal không tạo 
thêm tag Html, còn Label sẽ tạo ra tag span (được sử 
dụng để lập trình ở phía client). 
Khoa CNTT Trường CĐ CNTT TP.HCM 
115 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Ví dụ: 
Lệnh xử lý: 
 protected void Page_Load(object sender, EventArgs e) 
 { 
 Label1.Text="Đây là chuỗi ký tự trong label"; 
 Literal1.Text = " Đây là chuỗi ký tự trong Literial"; 
 } 
Khi thiết kế. 
Xem source: 
Đây là chuỗi ký tự trong label 
 Đây là chuỗi ký tự trong Literial 
116 
3.4.2. Điều khiển AdRotator 
 Được dùng để tạo ra các ảnh quảng cáo (tại 1 vùng 
sẽ có nhiều ảnh, xuất hiện theo tuần xuất), nó tự động 
thay đổi các hình ảnh mỗi khi có yêu cầu (PostBack về 
server). 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Sự kiện 
 AdCreated: Xảy ra khi điều khiển tạo ra các quảng cáo 
117 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thuộc tính 
AdvertisementFile: Tên tập tin dữ liệu (dưới dạng xml) cho 
điều khiển. Cú pháp của tập tin Advertisement (*.xml) 
 Đường dẫn tập tin hình ảnh 
 Đường dẫn liên kết 
 Chuỗi văn bản Tooltip 
 Từ khóa dùng để lọc hình ảnh 
 Tần suất hiển thị của ảnh 
Lưu ý: Các giá trị có phân biệt chữ Hoa chữ thường 
118 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Ví dụ: Tạo mẫu Quangcao sử dụng điều khiển AdRotator 
Bước 1. Thiết kế giao diện 
Bước 2. Tạo tập tin dữ liệu: Quangcao.xml 
Sử dụng chức năng Add New Item từ thực đơn ngữ cảnh 
Chọn XML File trong hộp thoại Add New Item 
119 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Nhập vào nội dung cho tập tin Quangcao.xml 
 Pictures\Baihatviet.gif 
 Web Nhạc bài hát việt 
 Music 
 10 
120 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Chuyển màn hình qua trang Data, nhập liệu trực tiếp: 
Click phải màn hình đang code chọn View Data Grid 
121 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Bước 3. Thiết lập thuộc tính cho điều khiển adQuangcao 
 AdvertisementFile: Quangcao.xml 
 Target: _blank 
 KeywordFilter: Không thiết lập (Hiển thị tất cả ảnh) 
Bước 4. Thi hành ứng dụng 
122 
3.4.3. Điều khiển Calendar 
 Dùng để hiển thị và cập nhật dữ liệu kiểu ngày 
Khoa CNTT Trường CĐ CNTT TP.HCM 
123 
Thuộc tính 
 DayHeaderStyle: Tiêu đề của các ngày trong tuần 
 DayStyle: Các ngày trong điều khiển. 
 NextPrevStyle: Tháng trước/sau của tháng đang chọn. 
 SelectedDayStyle: Ngày đang được chọn. 
 TitleStyle: Tiêu đề của tháng được chọn 
 TodayDayStyle: Ngày hiện hành (trên server). 
 WeekendDayStyle: Các ngày cuối tuần (thứ 7, chủ nhật) 
 OtherMonthDayStyle: Các ngày không nằm trong tháng hiện tại. 
 SelectedDate: Giá trị ngày được chọn trên điều khiển 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Sự kiện 
 SelectionChanged: Sự kiện này xảy ra khi chọn một ngày 
 VisibleMonthChanged: Xự kiện xảy ra khi chọn một tháng 
124 
Ví dụ: Tạo Calendar trên trang web 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Bước 1: Tạo Calendar vào trang 
Bước 2: Chọn mẫu định dạng: Click phải /Auto Format 
125 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý sự kiện: 
protected void Page_Load(object sender, EventArgs e){ 
 lbNgay.Text = "Hôm nay ngày " + 
DateTime.Today.ToString ("dd/MM/yyyy"); 
} 
protected void Calendar1_SelectionChanged1( . . . .) { 
 lbThongbao.Text ="Bạn đang chọn " + 
 Calendar1.SelectedDate.ToString("dd/MM/yyyy"); 
} 
126 
3.4.4. Điều khiển File Upload. 
 Sử dụng Upload file từ chính ứng dụng Web. File 
sau khi Upload có thể lưu trữ ở 1 nơi nào đó trên 
webserver. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thuộc tính Ý nghĩa 
Enable Vô hiệu hoá điều khiển FileUpload. 
FileBytes Lấy nội dung file đã được upload như một mảng Byte. 
FileContent Lấy nội dung của file đã được upload theo dòng dữ liệu 
FileName Lấy tên file được Upload 
HasFile Trả về giá trị true khi File được Upload 
127 
Các phương thức: 
Focus: Chuyển con trỏ đến điều khiển FileUpload. 
SaveAs: Cho phép lưu file được upload lên hệ thống. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
128 
Ví dụ: Tạo điều khiển File Upload 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thiết kế và tạo FileUpload vào trang 
Xử lý sự kiện: 
protected void Button1_Click(object sender, EventArgs e) { 
 string sTenfile ; 
 //Tách lấy tên tập tin 
 sTenfile = FileUpload1.FileName; 
 //Thực hiện chép tập tin lên thư mục Upload 
 FileUpload1.SaveAs(MapPath("~/Upload/" + sTenfile)); 
 lbThongbao.Text = "Đã upload thành công" ; 
 } 
129 
3.4.5. Điều khiển Panel và PlaceHolder 
 Dùng để chứa các điều khiển khác. 
 Thuộc tính Visible=True : các điều khiển chứa bên trong 
sẽ được hiển thị và ngược lại. 
 Tuy nhiên, điều khiển Panel cho phép chúng ta kéo 
những điều khiển vào bên trong nó lúc thiết kế, còn điều 
khiển PlaceHolder thì không. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
130 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thuộc tính 
DefaultButton: Định nghĩa button mặc định trong panel 
(sẽ được thực hiện khi nhấn Enter) 
Direction: Thiết lập hướng hiển thị nội dung được đưa ra 
trong panel: NotSet, LeftToRight, RightToLeft. 
GroupingText: Trình bày Panel như 1 Fieldset với một 
chú giải riêng biệt. 
HorizontalAlign: Chỉ ra hướng ngang thể hiện nội 
dung của panel:Center, Justify, Left, NotSet, Right. 
ScrollBars: Hiển thị scrollbars khi nội dung trong panel 
vượt quá kích thước: Auto, Both, Horizontal, None, 
Vertical. 
131 
Ví dụ: Tạo trang sử dụng Panel 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thiết kế: 
132 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý sự kiện: 
protected void Page_Load(object sender, EventArgs e) { 
 for (int i = 1; i < 100; i++) { 
 buletnghenghiep.Items.Add("Nghề "+i.ToString()); 
 } 
 } 
 protected void chkhtsothich_CheckedChanged(. . . .) { 
 if (chksothich.Checked == true) 
 panelsothich.Visible = true; 
 else 
 panelsothich.Visible = false; 
 } 
 protected void chkhtnghenghiep_CheckedChanged(. . . ) { 
 if (chknghenghiep.Checked == true) 
 panelnghenghiep.Visible = true; 
 else 
 panelnghenghiep.Visible = false; 
 } 
133 
3.4.6. Điều khiển hiển thị các trang – View và MultiView 
 Cho phép ẩn hoặc hiện các phần khác nhau của 
trang Web, tiện ích khi tạo một TabPage để chia 1 trang 
web có độ dài lớn thành các phần để hiển thị. 
 Điều khiển MultiView chứa đựng 1 hoặc nhiều điều 
khiển View. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
134 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thuộc tính 
 ActiveViewIndex: Lựa chọn điều khiển View được 
đưa ra hiển thị bằng chỉ số Index 
 Views: Cho phép lấy về tập hợp các điều khiển View 
chứa đựng trong điều khiển MultiView. 
Phương thức 
 GetActiveView: Cho phép lấy về thông tin của 
điều khiển View được lựa chọn. 
 SetActiveView: Cho phép thiết lập điều khiển 
View được hiển thị. 
Sự kiện 
 ActiveViewChanged: Khi điều khiển View được 
chọn 
135 
Ví dụ: Tạo trang sử dụng MultiView 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thiết kế: 
Tạo 1 Multiview1 gồm 3 View (View1 View2, View3) 
Tạo Control Menu1 gồm 3 Tab (Tab1, Tab2, Tab3) 
Tạo Control Menu vào Form 
136 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Chọn Edit Menu Item 
Lần lượt khái báo các nhãn (Text) là: Tab 1, Tab 2, Tab 3 
và các giá trị (Value) tương ứng là: 0, 1, 2. 
Thuộc tính Orientation: Horizaltal (Menu hướng ngang) 
137 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Bổ sung nội dung vào các view tương ứng 
138 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý sự kiện: 
void Menu1_MenuItemClick(object sender, MenuEventArgs e){ 
 int index = int.Parse(e.Item.Value); 
 MultiView1.ActiveViewIndex = index; 
} 
void Page_Load(object sender, EventArgs e){ 
 if (!IsPostBack){ 
 MultiView1.ActiveViewIndex = 0; 
 } 
} 
139 
3.5. Đối tượng ViewState 
 Được cung cấp để lưu lại những thông tin của trang 
web sau khi web server gởi kết quả về cho Client. 
 Mặc định, trang web sẽ cho phép sử dụng đối tượng 
ViewState thông qua thuộc tính EnableViewState = True 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Gán giá trị cho ViewState: 
 ViewState("Tên trạng thái") = ; 
Nhận giá trị từ đối tượng ViewState: 
 = ViewState("Tên trạng thái"); 
140 
 Về bản chất, các giá trị trong đối tượng ViewState 
được lưu trong một điều khiển hidden và các giá trị này 
đã được mã hóa. 
 Đối tượng ViewState giúp giảm bớt công sức trong việc 
lưu trữ và truy xuất các thông tin mà không phải sử dụng 
nhiều điều khiển hidden 
Khoa CNTT Trường CĐ CNTT TP.HCM 
141 
Ví dụ: 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý sự kiện: 
Private Sub Page_Load() Handles MyBase.Load 
 If Not IsPostBack Then 
 ViewState("So_lan") = 0 
 Else 
 ViewState("So_lan") += 1 
 End If 
 lblTB.Text = "Số lần Postback: " + CStr(ViewState("So_lan")) 
End Sub 
Private Sub butDem_Click() Handles butDem.Click 
 lblTB.Text = "Số lần Postback: " + Convert.ToString(ViewState("So_lan")) 
End Sub 
142 
Xem Source 
Khoa CNTT Trường CĐ CNTT TP.HCM 
143 
 Chương 4 
Các Điều Khiển Kiểm Tra Dữ Liệu 
Khoa CNTT Trường CĐ CNTT TP.HCM 
4.1 Giới thiệu chung 
4.2 Các Điều khiển kiểm tra dữ liệu 
144 
4.1. Giới thiệu chung 
Mỗi khi PostBack về Server, trang Web luôn kiểm tra tính 
hợp lệ dữ liệu (nếu có yêu cầu khi thiết kế). Nếu dữ liệu 
không hợp lệ (bỏ trống, vi phạm miền giá trị, mật khẩu 
nhập lại không đúng, ), trang web sẽ không thể 
PostBack về Server. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
145 
Khoa CNTT Trường CĐ CNTT TP.HCM 
146 
4.2 Điều khiển kiểm tra dữ liệu-Validation Control 
Khoa CNTT Trường CĐ CNTT TP.HCM 
4.2.1. Điều khiển Required Field Validator 
4.2.2. Điều khiển Compare Validator 
4.2.3. Điều khiển Range Validator 
4.2.4. Điều khiển Regular Expression Validator 
4.2.5. Điều khiển Custom Validator 
4.2.6. Điều khiển Validation Summary 
147 
Khoa CNTT Trường CĐ CNTT TP.HCM 
4.2.1. Điều khiển Required Field Validator 
Công dụng: 
 Dùng để kiểm tra giá trị trong điều khiển phải 
được nhập. Để kiểm tra ràng buộc khác rỗng (Not null) 
Thuộc tính: 
 InitialValue: Giá trị khởi động. 
148 
Khoa CNTT Trường CĐ CNTT TP.HCM 
4.2.2 Điều khiển Compare Validator 
Công dụng: 
 Để so sánh giá trị của điều khiển với giá trị của 
điều khiển khác hoặc một giá trị được xác định trước. 
 Sử dụng điều khiển này để kiểm tra ràng buộc 
miền giá trị, kiểu dữ liệu, liên thuộc tính. 
Thuộc tính: 
 ControlToCompare: Tên điều khiển cần so sánh. 
 Operator: Qui định phép so sánh (=, >, >=, ), 
kiểm tra kiểu dữ liệu ( DataTypeCheck) 
 Type: Qui định kiểu dữ liệu để kiểm tra hoặc so 
sánh(String, Integer, Double, Date, Currency) 
 ValueToCompare: Giá trị cần so sánh 
149 
Khoa CNTT Trường CĐ CNTT TP.HCM 
4.2.3 Điều khiển Range Validator 
Công dụng: 
 Để kiểm tra giá trị trong điều khiển có nằm trong 
đoạn [min-max] (kiểm tra ràng buộc miền giá trị). 
Thuộc tính: 
 - MinimumValue: Giá trị nhỏ nhất. 
 - MaximumValue: Giá trị lớn nhất. 
 - Type: Xác định kiểu để kiểm tra dữ liệu. Có thể thực 
hiện kiểm tra trên các kiểu: String, Integer, Double, 
Date, Currency 
150 
Khoa CNTT Trường CĐ CNTT TP.HCM 
4.2.4. Điều khiển Regular Expression Validator 
Công dụng: 
 Để kiểm tra giá trị của điều khiển phải theo mẫu 
được qui định trước như: địa chỉ email, số điện thoại, 
mã vùng, số chứng minh thư,  
Thuộc tính: 
 ValidationExpression: Qui định mẫu kiểm tra dữ liệu 
151 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Bảng mô tả các ký hiệu sử dụng trong Validation Expression 
152 
Khoa CNTT Trường CĐ CNTT TP.HCM 
4.2.5. Điều khiển Custom Validator 
Công dụng: 
 Điều khiển này cho phép bạn tự viết hàm xử lý 
kiểm tra lỗi. 
Sự kiện: 
 ServerValidate: Đặt các xử lý kiểm tra dữ liệu 
trong sự kiện này. Việc kiểm tra này được thực hiện 
ở Server. 
Ví dụ: Xử lý kiểm tra dữ liệu nhập tại điều khiển 
txtSoA có phải là số chẵn hay không. 
153 
Khoa CNTT Trường CĐ CNTT TP.HCM © Dương Thành Phết-www.thayphet.net 
4.2.6. Điều khiển Validation Summary 
Công dụng: 
 Để hiển thị ra bảng lỗi - tất cả các lỗi hiện có 
trên trang Web. Nếu điều khiển nào có dữ liệu không 
hợp lệ, chuỗi thông báo lỗi - giá trị thuộc tính 
ErrorMessage của Validation Control sẽ được hiển 
thị. 
 Nếu giá trị của thuộc tính ErrorMessage không 
được xác định, thông báo lỗi đó sẽ không được xuất 
hiện trong bảng lỗi 
154 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thuộc tính: 
 - HeaderText: Dòng tiêu đề của thông báo lỗi 
 - ShowMessageBox: Qui định bảng thông báo lỗi có 
được phép hiển thị như cửa sổ MessageBox hay không. 
 - ShowSummary: Qui định bảng thông báo lỗi có được 
phép hiển thị hay không. 
155 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Ví dụ: Tạo trang Dangkykhachang Sử dụng các điều 
khiển ValidateControl để kiểm tra dữ liệu nhập trên các 
điều khiển có trong hồ sơ đăng ký khách hàng. 
156 
Khoa CNTT Trường CĐ CNTT TP.HCM 
157 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thuộc tính Text của các điều khiển kiểm tra dữ liệu đều là: (*) 
158 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý sự kiện: 
private void btnDang_ky_Click(...) 
{ 
lblThong_bao.Text = "Đăng ký thành công"; 
} 
159 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Các thông báo lỗi xuất hiện 
qua hộp thoại khi dữ liệu nhập 
không hợp lệ: 
160 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Nếu tất cả đều hợp lệ 
161 
 Chương 5 
Các Điều Khiển Liên Kết CSDL 
Khoa CNTT Trường CĐ CNTT TP.HCM 
5.1 Điều khiển kết nối cơ sở dữ liệu 
5.2 Điều khiển liên kết cơ sở dữ liệu 
162 
5.1. Điều khiển kết nối CSDL–Data-Source Control 
 Là các điều khiển dùng để chứa nguồn dữ liệu được 
rút trích từ các hệ QT CSDL như: Access, SQLServer, 
XML, Ocracle . . . 
 Có các điều khiển Data-Source sau: SQLDataSource, 
Access Data Source, XML Data Source, . . . 
Khoa CNTT Trường CĐ CNTT TP.HCM 
163 
CSDL MẪU 
Khoa CNTT Trường CĐ CNTT TP.HCM 
164 
5.1.1 Điều khiển SQLDataSource 
 Dùng để kết nối CSDL trong các hệ quản trị CSDL 
SQLServer, Ocracle Server, . . . 
 Chọn đối tượng CSDL như Table, View, Procedure 
hay câu lệnh SQL và khai báo điều kiện lọc (Where) với 
nhiều cách như: Giá trị định sẳn, đối tượng Session, 
Request.Form, Request.QueryString . . . 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Tạo kết nối 
Kéo điều khiển SQLDataSource từ Toolbox vào trang 
Chọn Configure Data Source  
165 
Khoa CNTT Trường CĐ CNTT TP.HCM © Dương Thành Phết-www.thayphet.net 
Nếu trước đó đã tạo kết nối thì chọn kết nối đã có. 
Ngược lại để tạo mới kết nối thì chọn New Connection 
Tạo kết nối CSDL mới 
166 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Chọn QTCSDL (Microsoft SQLServer) 
 Chọn Continue để tiếp tục 
167 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Chọn Hệ QT CSDL 
Khai báo các thông số cho kết nối 
Chọn Tên Server 
Chọn thông tin đăng nhập 
Chọn tên CSDL 
Kiểm tra kết nối 
Đồng ý kết nối 
168 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Đặt tên cho kết nối 
Tên kết nối 
169 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xác định nguồn dữ liệu từ Table, View hay câu lệnh 
SQL có thể chỉ định điều kiện lọc dữ liệu, sắp xếp hay 
các chỉ định vcho xử lý thêm, xoá, sửa 
Xác định nguồn dữ liệu 
Từ câu lệnh SQL hay 
Từ Table, View 
Xác định điều kiện 
Chỉ định sắp xếp 
Các lệnh thê, xoá, sửa 
170 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Chọn Test Query để kiểm tra kết quả nguồn dữ liệu. 
 Chọn Finish để hòan thành 
171 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Điều khiển SQL DataSource và tham số Request.QueryString 
Để lọc dữ liệu theo điều kiện thì giá trị tham số có thể 
được gán trực tiếp thông qua đối tượng 
Request.Querystring (Truyền tham số qua liên kết) 
Khi click vào liên kết trang có địa chỉ kèm theo tham số dạng: 
 . . ./SachNXB.aspx?MaNXB=3 
172 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thực hiện: 
Tạo trang NhaXB.aspx là danh mục nhà xuất bản 
Chọn Edit Column từ GiridView Task 
173 
Khoa CNTT Trường CĐ CNTT TP.HCM 
174 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Với các thuộc tính: 
 HeaderText: Nhãn tiêu đề cột 
 Text: Nhãn hiện thị trong tất cả các ô 
 DataTextField: Giá trị từ 1 field chỉ định trong nguồn DL 
 DataNavigateUrlFields: Danh mục tên các tham số ghi 
cách nhau bởi dấu “,” 
 DataNavigateUrlFormatting: Địa chỉ trang liên kết kèm 
tham số dạng: ~/SachNXB.aspx?MaNXB={0} 
Giá trị tham số ghi dưới dạng chỉ số các tham số được 
khai báo trong DataNavigateUrlFields bắt đầu là 0 và cách 
nhau dấu , 
175 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Tạo trang hiện thị dữ liệu với nguồn dữ liệu có tham 
số qua liên kết (Request.QueryString). 
Xác định nguồn dữ liệu, sau đó chọn Where để chỉ 
định điều kiện 
176 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Columns: Tên cột làm điều kiện 
Operator: Toán tử so sánh 
Source: Loại tham số (QueryString) 
QueryString field: Tên tham số đã truyền 
Chọn Add để chấp nhận thêm tham số 
177 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Columns: Tên cột làm điều kiện 
Operator: Toán tử so sánh 
Source: Loại tham số (QueryString) 
QueryString field: Tên tham số đã truyền 
Chọn Add để chấp nhận thêm tham số 
178 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thi hành xem kết quả 
179 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Điều khiển SQL DataSource và tham số Request.Form 
Để lọc dữ liệu trong nguồn dữ liệu theo điều kiện với 
giá trị tham số là giá trị trên form. 
Thực hiện: 
Tạo trang Lietkesach.aspx gồm: 
 1 Textbox thuộc tính ID: MaNXB 
 1 Button thuộc tính PostbackURL: 
 ~/Lietkesach.aspx (Chính trang thiết kế) 
 Tạo SqlDataSource với nguồn dữ liệu: 
180 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Tạo SqlDataSource với nguồn dữ liệu như sau: 
181 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Columns: Tên cột làm điều kiện 
 Operator: Toán tử so sánh 
 Source: Loại tham số (Form) 
 Form field: Tên tham số đã truyền (Tên Textbox) 
 Chọn Add để chấp nhận thêm tham số 
182 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Điều khiển SQL DataSource và tham số là các Controls 
Có thể khai báo tham số trong điều khiển 
SqlDataSource mà giá trị được lấy từ điều khiển 
trình chủ. 
Ví dụ thiết kế trang SachtheoCD.aspx thực hiện liệt 
kê danh mục sách có chủ đề được chọn từ điều 
khiển DropdownList 
183 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thực hiện 
Thiết kế Dropdownlist (ddlChude) từ Table Chude 
Đặt thuộc tính 
ID: ddlChude 
DataSourceID: SqlDataSource1 
DataTextField: TenCD (Field hiện thị) 
AutoPostBack: True 
DataValuefield: MaCD (Field để truyền tham số) 
184 
Khoa CNTT Trường CĐ CNTT TP.HCM 
GridView (GridView1) Với nguồn dữ liệu từ Table Sach 
Và tham số điều kiện (Where) 
185 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Columns: Tên cột làm điều kiện 
 Operator: Toán tử so sánh 
 Source: Loại tham số (Control) 
 ControlID: Tên tham số đã truyền 
 Chọn Add để chấp nhận thêm tham số 
186 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Điều khiển SQL DataSource và Procedure 
Ta có thể sử dụng điều khiển kết nối CSDL 
SqlDatasource để truy cập gọi Stored Procedure 
trong CSDL SQL Server. 
Ví dụ: Ta có Procedure Sachtheogia liệt kê các 
quyển sách với điều kiện Giá từ 2 tham số là Giatu 
và Giaden 
Create Proc Sachtheogia 
@Giatu int, @Giaden int 
as 
Select * 
From sach 
Where Dongia Between @Giatu and @Giaden 
187 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Khi cấu hình cho điều khiển SQLDataSource 
Chọn loại nguồn dữ liệu là từ Procedure 
188 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Chọn tên Procedure 
189 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xác định giá trị cho các tham số của Procedure 
190 
5.1.2 Điều khiển Access DataSource 
 Dùng để kết nối với cơ sở dữ liệu Access MDB). 
 Thực hiện Tạo AccessDataSource từ thanh Toolbox. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Chọn Configure Data Source . . .: Để thực hiện kết nối 
191 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xác định nguồn dữ liệu và điều kiện tham số như 
SQLData Source 
192 
5.1.3 Điều khiển XMLDataSource 
 Điều khiển XMLDataSource được sử dụng để kết nối 
CSDL định dạng XML. 
 Thực hiện: Tạo tập tin XML (DSSinhvien). 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 <Sinhvien MaSV="SV01" HotenSV="Trần Văn Nam" 
Diachi="123 Trần Hưng Đạo, Q5" Email="
[email protected]" /> 
 <Sinhvien MaSV="SV02" HotenSV="Nguyễn Thị Lý" 
Diachi="45 Hai Bà Trưng, Q1" Email="
[email protected]" /> 
 <Sinhvien MaSV="SV03" HotenSV="Nguyễn Thị Bình" 
Diachi="31 Lý Thường Kiệt,TB" Email="
[email protected]"/> 
193 
Tạo XMLDataSource từ Toolbox. 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Chọn Configure Data Source . . .: Để thực hiện kết nối 
194 
Chọn tập tin XML. 
 Chọn OK để hoàn tất 
Khoa CNTT Trường CĐ CNTT TP.HCM 
195 
5.2. Điều khiển liên kết cơ sở dữ liệu 
5.2.1 Gridview 
5.2.2 DataList 
5.2.3 Repeater 
5.2.4 Detailview & FormView 
Khoa CNTT Trường CĐ CNTT TP.HCM 
196 
5.2.1 Gridview 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Giới thiệu: 
 GridView là một điều khiển khá linh hoạt và hiệu 
quả trong việc hiển thị, định dạng và thao tác với dữ 
liệu. Bên cạnh đó, chúng ta có thể thực hiện sắp xếp dữ 
liệu, thực hiện phân trang với sự hỗ trợ khá tốt của 
Visual .Net trong quá trình thiết kế. 
197 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Tạo GridView vào trang 
 Kéo Control GridView vào trang 
198 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Định dạng tự động 
 Chọn những mẫu định dạng có sẳn Gridview 
bằng cách Chọn Auto Format từ khung Gridview Task 
199 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Kết nối nguồn dữ liệu 
 Thực hiện kết nối nguồn dữ liệu với cơ sở dữ liệu 
SQLServer, Access, XML. . 
 Tại mục Choose Data Source: New Data Source 
(Hoặc chọn Datasource đã được tạo trước đó) 
Ghi chú: Tạo Datasource như được trình bày trước 
200 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thi hành xem kết quả: 
201 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thêm cột 
 Trong cửa sổ Gridview Task chọn : Add New Column 
 Chọn Loại field : BoundField 
 Tiêu đề côt : Header Text 
 Tên field dữ liệu: DataField 
 Ok hòan thành 
202 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Hiệu chỉnh các cột 
 Trong cửa sổ Gridview Task chọn : Edit Column 
203 
Khoa CNTT Trường CĐ CNTT TP.HCM 
AvailableFields: Chọn lọai Field liên kết dữ liệu 
 BoundField: Cột dạng Textbox. 
 Checkbox Field: Cột dạng Checkbox. 
 Hyperlink Field: Cột dạng liên kết. 
 Button Field: Cột dạng nút lệnh 
 CommandField: Cột dạng nút lệnh được thiết kế sẵn 
 Select: Nút lệnh chọn dòng dữ liệu 
 Edit, Cancel, Update: Các nút cập nhật d.liệu 
 Delete: Nút lệnh xóa dòng dữ liệu 
 TemplateField: Cột do người dùng tự thiết kế. 
204 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Convert this Field into a Template Column: Chuyển 
cột hiện hành thành cột dạng Template Column. 
BoundColumn properties: Thông tin chi tiết cho các cột 
 HeaderText, Footer Text: Tiêu đề trên/dưới của cột 
 Header Image: Hình hiển thị trên tiêu đề cột. 
 Sort Expression: Biểu thức sắp xếp của cột. 
 Visible: Qui định cột có được hiển thị hay không. 
 DataField: Qui định tên field dữ liệu cần hiển thị. 
 Data formatting expression: Biểu thức định dạng 
 {0:}. 
 Vd: {0:000.00}, {0:0.##} 
 {0:dd/MM/yyyy}, {0:hh/mm/ss tt} 
205 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Thiết lập các thuộc tính định dạng lưới 
 Chọn GridView  Properties 
- ShowHeader/ShowFooter: Hiện / Ẩn Phần đầu và 
chân của GridView 
206 
Khoa CNTT Trường CĐ CNTT TP.HCM 
- HeaderStyle/FooterStyle: Định dạng dòng Header/Footer 
207 
Khoa CNTT Trường CĐ CNTT TP.HCM 
- RowStyleAlternatingRowStyle: Định dạng dòng dữ liệu 
lẽ/chẵn: 
208 
Khoa CNTT Trường CĐ CNTT TP.HCM 
- AlowPaging : Phân trang 
- Page size: Qui định số dòng/trang 
- Possition: Qui định vị trí hiển thị của 
bộ nút di chuyển (top, bottom, 
top&bottom). 
- Mode: Qui định hình thức hiển thị của 
bộ nút di chuyển (kiểu số, kiểu ký hiệu). 
209 
Khoa CNTT Trường CĐ CNTT TP.HCM 
- AllowSorting: Sắp xếp (theo thuộc tính DataKeyNames 
210 
5.2.2 Điều khiển DataList 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Giới thiệu: 
 Như điều khiển Gridview, điều khiển DataList được 
sử dụng để hiển thị dữ liệu. Tuy nhiên, đối với DataList, 
chúng ta phải tự thiết kế hình thức hiển thị dữ liệu (giống 
như Template Column của GridView) 
211 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Một số thuộc tính cần chú ý 
RepeatDirection: Qui định hướng hiển thị dữ liệu 
oHorizontal: Hiển thị dữ liệu theo chiều ngang 
oVertical: Hiển thị dữ liệu theo chiều đứng 
RepeatColumns: Qui định số cột hiển thị 
212 
Khoa CNTT Trường CĐ CNTT TP.HCM 
- Thiết kế hình thức hiển thị cho DataList cũng tương 
tự như thiết kế cho cột Template Column của GridView 
- Chọn Edit Template từ thực đơn ngữ cảnh để thực 
hiện thiết kế hình thức hiển thị cho DataList. 
213 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Ghi chú: 
 Để công việc thiết kế được dễ dàng, thực hiện 
thiết kế ở bên ngoài điều khiển DataList. Sử dụng 
Table để định vị trí các điều khiển. Sau khi thiết kế 
hoàn tất, kéo kết quả vào vị trí hiển thị trong DataList. 
214 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Datalist không hỗ trợ phân trang như Gridview, vì vậy 
cần phải tạo phân trang bằng tay. Công cụ 
CollectionPager là 1 control cho phép tạo phân trang 
mà không cần viết nhiều code. 
Phân Trang Datalist với CollectionPager 
215 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thực hiện 
1. Download file CollectionPager.dll, chép vào thư mục 
BIN của website 
2. Đưa control này vào toolbox 
RightClick vào công cụ 
Standard của toolbox--->chọn 
Choose Item 
216 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thực hiện 
3. Browse đến tập tin CollectionPager.dll trong thư mục 
BIN của website, công cụ CollectionPager sẽ xuất hiện 
như hình 
Chọn Browse đên thư mục chon control này--->bấm ok nhé 
217 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thực hiện 
4. Kéo thả CollectionPager vào trang và tùy chỉnh thông số 
5. Viết code trong sự kiện Page_Load của trang 
 protected void Page_Load(object sender, EventArgs e) 
 { 
 //lấy dữ liệu từ SQLDatasource 
 DataView dv = 
(DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); 
 CollectionPager1.DataSource = dv;//chỉ định datasource cho CollectionPager 
 //Chỉ định đối tượng Datalist mà CollectionPager sẽ phân trang 
 CollectionPager1.BindToControl = DataList1; 
 //gán dữ liệu đã phân trang cho Datalist 
 DataList1.DataSource = CollectionPager1.DataSourcePaged; 
 } 
218 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 CollectionPager không chỉ hoạt động trên Datalist mà 
còn hoạt động với các Điều khiển hiển thị dữ liệu khác 
như Repeater, hoặc bất kỳ đối tượng nào cần phân 
trang. 
 Ngoài việc sử dụng CollectionPager, việc phân trang 
còn có thể thực hiện bằng việc viết mã (sinh viên tự tìm 
hiểu thêm ) 
219 
5.2.3 Điều khiển Repeater 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Giới thiệu: 
 Như DataList & DataGrid, điều khiển Repeater 
dùng để hiển thị dữ liệu. Tuy nhiên phải tự thiết kế hình 
thức hiển thị thông qua các tag HTML. 
220 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Nội dung hiển thị cho tiêu đề 
 Nội dung hiển thị cho các mục dữ liệu dòng lẻ. 
 Nội dung hiển thị cho các mục dữ liệu chẳn. 
 Nội dung hiển thị giữa các dòng dữ liệu 
 Nội dung hiển thị cho tiêu đề dưới. 
: 
221 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Ví dụ: 
Bước 1: Tạo mới điều khiển Repeater: rptChudesach 
vào trang Web 
Bước 2: Kết nối và tạo nguồn dữ liệu cho điều khiển từ 
Table Chude với các cột: MaCD, Tenchude 
Bước 3:. Chuyển trang Web qua dạng code HTM bổ 
sung các tag sau: 
222 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Mã CĐ 
 Tên CĐ 
223 
5.2.4 Detailview & FormView 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Giới thiệu: 
 Hai điều khiển này cho phép làm việc với một 
trường dữ liệu đơn tại mỗi thời điểm. Thực hiện được 
chức năng xem, thay đổi, thêm mới hay xoá, di chuyển 
sang trang tiếp theo hay quay lại trang trước. 
224 
Detailview 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Hiển thị dữ liệu với DetailView 
 DetailView được đưa ra hiển thị như 1 
bảng()trong HTML để hiển thị dữ liệu 1 bản ghi. 
Ví dụ: Trang XemthongtinKH.aspx 
225 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Sử dụng Fields với điều khiển DetailView 
 DetailView hỗ trợ tất cả các Field như GridView : 
BoundField,CheckBoxField,CommandField,ButtonField, 
HyperLinkField, ImageField, TemplateField 
226 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý phân trang với điều khiển DetailView 
 Để tạo phân trang chỉ định thuộc tính 
AllowPaging=”true” cho điều khiển DetailView. Với các 
thuộc tính định dạng thuộc nhóm: Pagersettings 
227 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Minh họa: 
 Trong ví dụ liên kết dữ liệu với Table Khachhang 
đưa vào 5 BoundField và một CheckBoxField, điền dữ 
liệu vào với thuộc tính DataField và thiết đặt tiêu dề 
(HeaderText). Tạo phân trang và trình bày tại góc trên 
bên phải. 
228 
Formview 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Hiển thị dữ liệu với FormView 
 FormView dùng để hiển thị dữ liệu với các điều 
khiển tùy biến cho dữ liệu một bản ghi. Ví dụ: Trang 
XemthongtinNXB.aspx 
229 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Trình bày dữ liệu sử dụng Edit Template 
Tạo FormView vào trang và liên kết dữ liệu 
Tại cửa sổ thiết kế chọn Edit Tempalte từ cửa sổ 
FormView Task 
230 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thiết kế trình bày với các Control điều khiển tương tự 
như khi thiết kế DataList với các điều khiển tùy biến 
231 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Xử lý phân trang với điều khiển FormView 
 Để tạo phân trang chỉ định thuộc tính 
AllowPaging=”true” cho điều khiển Form. Với các thuộc 
tính định dạng thuộc nhóm: Pagersettings 
232 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Minh họa: 
 Trong ví dụ liên kết dữ liệu với Table 
NhaXuatBan đưa vào 4 Label, điền dữ liệu vào với 
thuộc tính Text cho các File tương tứng, thiết đặt tiêu 
đề(HeaderText). Tạo phân trang và trình bày tại phía 
dưới giữa trang 
233 
 Chương 06 
Thiết Kế Layout 
6.1 Web User controls 
6.2 Master Pages 
6.3 Themes Và Skin 
6.4 Site Navigation Controls 
Khoa CNTT Trường CĐ CNTT TP.HCM 
234 
6.1. Web User controls 
6.1.1 Giới thiệu 
Khi kết hợp các control để tạo thành một control mới gọi 
là Web user control (UC) 
 Sử dụng UC cũng giống như sử dụng thủ tục, hàm  
khả năng tái sử dụng UC trên các trang web 
 Phần mở rộng của US là: .ascx 
Khoa CNTT Trường CĐ CNTT TP.HCM 
235 
6.1.2 Tạo và sử dụng User control 
 Tạo mới User control: 
 Tạo mới 1 Web user control 
 Thiết kế giống như thiết kế 1 trang aspx 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Chọn: Web User Control 
Đặt tên: *.ascx 
236 
Thiết kế User control: 
 Thiết kế các controls theo ý muốn 
Khoa CNTT Trường CĐ CNTT TP.HCM 
237 
Sử dụng User control: 
 Kéo và thả UC vào trang aspx 
Khoa CNTT Trường CĐ CNTT TP.HCM 
238 
6.2. Master Pages 
6.2.1 Giới thiệu 
 Master pages cho phép tạo 1 bố cục nhất quán trên 
các trang web trong cùng 1 website (tương tự template) 
 Nội dung thể hiển trên trình duyệt là sự kết hợp giữa 
trang .master (master page) và trang .aspx (hoặc .ascx) - 
content page 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Master page là tập tin có phần mở rộng .master 
 Thao tác thiết kế: Giống như trang aspx, nhưng phải 
bổ sung ít nhất một điều khiển ContentPlaceHolder 
239 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Master page Content page 
Trang kết quả 
240 
6.2.2 Tạo trang Master 
 Bước 1: Tạo mới Item  chọn icon Master Page và đặt 
tên trang: *.master 
Khoa CNTT Trường CĐ CNTT TP.HCM 
241 
 Bước 2: Thiết kế bố cục chung (có thể sử dụng User 
control) và bổ sung ContentplaceHolder vào trang 
master 
Khoa CNTT Trường CĐ CNTT TP.HCM 
242 
6.2.3 Sử dụng trang Master 
 Bước 1: Tạo mới trang web (.aspx) khai báo sử dụng 
trang master 
Khoa CNTT Trường CĐ CNTT TP.HCM 
243 
 Bước 2: Thiết kế bổ sung nội dụng trên trang *.aspx 
(có thể kéo các User control vào) 
Khoa CNTT Trường CĐ CNTT TP.HCM 
244 
6.3. Themes Và Skin 
Khoa CNTT Trường CĐ CNTT TP.HCM 
6.3.1 Giới thiệu 
 Themes là tập hợp các khai báo thuộc tính về hình 
thức hiển thị(màu sắc, nét chữ, . . .) của điều khiển 
 Dùng áp dụng chung cho tất cả các điều khiển trong 
một ứng dụng hoặc tất cả các ứng dụng trên webserver 
 Themes được tạo từ các thành phần: skin, css, 
images . . . Tối thiểu phải có skin. Các thành phần này 
đặt trong thư mục App_Themes 
 Skin là một tập tin có phần mở rộng là .skin, chứa các 
tag tạo ra các server control kèm theo các khai báo 
thuộc tính. 
245 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Có 2 loại skin: 
 Default skin: Không khai báo thuộc tính skinID, mặc 
định ứng dụng sẽ áp dụng skin này cho tất cả các 
điều khiển có cùng kiểu khai báo. 
 Named skin: có khai báo thuộc tính skinID, muốn 
sử dụng thì phải khai báo tường minh trên điều khiển 
cụ thể. 
 Tạo file skin: 
 Thêm mới 1 item 
246 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Tạo file skin: 
 Thêm mới 1 itemchọn skin fileđặt tên file .skin 
247 
Khoa CNTT Trường CĐ CNTT TP.HCM 
248 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Tạo Theme: 
 Click phải ProjectAdd ASP.NET FolderTheme 
249 
Khoa CNTT Trường CĐ CNTT TP.HCM 
250 
Khoa CNTT Trường CĐ CNTT TP.HCM 
251 
6.4. Site Navigation Controls 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Giới thiệu 
 Dùng để chuyển đến một trang web khác và thể 
hiện cấu trúc logic của website (sitemap). Gồm các 
điều khiển: Menu, TreeView, SiteMapPath kết hợp 
với SiteMapDataSource 
 Các điều khiển này thường sử dụng trong trang 
Master 
252 
6.4.1 Điều khiển Menu 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Dùng thể hiện menu và cho phép người dùng chuyển 
đến một trang web khác khi chọn một chức năng 
Thao tác tạo: Tạo điều khiển Menu vào trang web 
Chọn mẫu định dạng 
Thiết kế Menu 
253 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Auto Format: Chọn mẫu định dạng 
254 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Edit Menu Items: Thiết kế Menu 
255 
6.4.2 Điều khiển TreeView 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Dùng thể hiện menu ở dạng cây và cho phép người 
dùng chuyển đến một trang web khác khi chọn node 
Thao tác tạo: Tạo điều khiển TreeView vào trang web 
Chọn mẫu định dạng 
Thiết kế các node 
256 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Auto Format: Chọn mẫu định dạng 
257 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Edit Node: Thiết kế các node 
258 
6.4.3 Điều khiển SiteMapPath 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Dùng thể hiện cấu trúc logic của website và cho phép 
người dùng chuyển đến một trang web khác 
Nội dung cấu trúc của Website mặc định được chứa 
trong tập tin Web.sitemap 
Thao tác tạo: Tạo tập tin Web.sitemap 
259 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Tạo điều khiển SitemapPath vào các trang 
Nút cháu 
Nút gốc 
Nút con 
Trangchu.aspx 
Tinthethao.aspx 
260 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Kết quả 
261 
6.4.4 Điều khiển SiteMapDataSource 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Dùng để chứa nguồn dữ liệu lưu trữ trong tập tin 
Web.sitemap 
 Thường sử dụng kết hợp với các điều khiển Menu, 
TreeView 
 Để liên kết với TreeView, Menu chỉ định thuộc tính 
DataSourceID của 2 điều khiển này là tên 
SiteMapDataSource 
262 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Thực thi 
VÍ DỤ 
263 
 Chương 7 
Lập Trình Web Form Với ADO.Net 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
7.1 Tổng quan về ADO.Net 
7.2 Các đối tượng trong ADO.Net 
7.3 Xây dựng lớp xử lý dữ liệu 
7.4 Xử lý giỏ hàng cho website thương mại điện tử 
264 
7.1. Tổng Quan Về ADO.Net 
7.1.1 Giới thiệu 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
7.1.2 Kiến trúc ADO .Net 
7.1.3 Minh họa tạo kết nối CSDL 
265 
 Hầu hết ứng dụng windows hay website đều cần 
có CSDL, để lưu trữ, xử lý, tìm kiếm và báo cáo 
 Khi dữ liệu trở thành trung tâm của ứng dụng thì 
việc cung cấp các chức năng tới người dùng phụ thuộc 
vào khả năng thao tác dữ liệu, vấn đề cần quan tâm là: 
Lưu dữ liệu tập trung. 
Đảm bảo toàn vẹn dữ liệu. 
Đảm bảo khả năng truy xuất đồng thời. 
Đảm bảo thời gian hồi đáp ngắn. 
Bảo mật dữ liệu. 
Trao đổi dữ liệu giữa các hệ thống khác nhau 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
7.1.1 Giới Thiệu 
266 
 Vấn đề này được giải quyết dựa vào khả năng 
của các Hệ QTCSDL. 
 .Net truy xuất DL qua ADO.NET, đặc điểm chính 
của ADO.NET là: 
 Khả năng làm việc với DL không kết nối: DL được 
lưu trữ trong bộ nhớ như một CSDL thu nhỏ 
(dataset), nhằm tăng tốc độ xử lý tính toán và hạn 
chế sử dụng tài nguyên. 
 Khả năng xử lý dữ liệu chuẩn XML (Có thể trao đổi 
giữa bất kỳ hệ thống nào) 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
267 
7.1.2 Kiến Trúc ADO.Net 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
MANAGED 
PROVIDER CONTENT 
COMPONENT 
268 
Kiến trúc ADO.NET có thể chia làm 2 phần chính: 
Managed Provider Component: Bao gồm các đối 
tượng như DataAdapter, DataReader, giữ nhiệm 
vụ làm việc trực tiếp với dữ liệu như database, file, 
Content Component: Bao gồm các đối tượng như 
DataSet, DataTable, đại diện cho dữ liệu thực sự 
cần làm việc. 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
269 
 DataReader: Là đối tượng giúp truy cập dữ liệu 
nhanh chóng. 
 DataSet: Là một bản sao thu nhỏ của CSDL trong 
bộ nhớ với nhiều bảng và các mối quan hệ. 
 DataAdapter: Là đối tượng kết nối giữa DataSet và 
CSDL, nó bao gồm 2 đối tượng Connection và 
Command để cung cấp dữ liệu cho DataSet cũng 
như cập nhật dữ liệu từ DataSet xuống CSDL. 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
270 
7.1.3 Minh họa tạo kết nối CSDL 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Cơ bản các bước thực hiện với database 
Bước 1: Tạo kết nối 
Bước 2: Mở kết nối dữ liệu 
Bước 3: Tạo lệnh điều khiển truy vấn SQL 
Bước 4: Thực thi lệnh 
Bước 5: Đóng kết nối 
Bước 6: in kết quả 
271 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
using System; 
using System.Data; 
using System.Data.SqlClient; 
public partial class vd1 : System.Web.UI.Page{ 
 protected void Page_Load(object sender, EventArgs e) { 
 //Khai báo và khởi tạo biến Connection 
 SqlConnection cnn = new SqlConnection("Data Source=(local); 
Initial Catalog=QLbansach;User ID=sa;Password="); 
 cnn.Open(); //Mở kết nối 
 //Command điều khiển truy vấn sql 
 SqlCommand cmd = cnn.CreateCommand(); 
 cmd.CommandText="select TenKH from Khachhang where MaKH=5"; 
 //lấy về chuỗi giá trị trong cơ sở dữ liệu 
 string result = (string)cmd.ExecuteScalar(); 
 cnn.Close(); //đóng kết nối 
 Response.Write(result); //in giá trị ra màn hình 
 } 
} 
Ví dụ: 
272 
7.2. Các đối tượng trong ADO.Net 
7.2.1 Connection 
7.2.2 Command 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
273 
7.2.1 Connection 
 Vai trò của Connection trong ADO.net là tạo kết 
nối giữa ứng dụng với CSDL 
Data Provider 
System.Data.Oledb : Sử dụng với Access 
System.Data.SqlCient : Sử dụng với SQLServer 
Ứng với mỗi tên miền: 
System.Data.Oledb.OledbConnection 
System.Data.SqlClient.SqlConnection 
Và các Data Provider khác: 
System.data.OcracleClient(Ocracle) 
MicroSoft.data.Odbc(Thông qua ODBC của HĐH) 
Microsoft.Data.Sqlxml (XML trên Sqlserver) 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
274 
Connection String: 
 Khi thực hiện kết nối cần khai báo các thông tin 
cho Connection thông qua thuộc tính Connection String. 
Tùy thuộc vào Data Provider: 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Nếu kết nối với CSDL Access 
 Provider: Khai báo Data Provider của Access 
 Data Source: Tên tập tin CSDL (.mdb) 
 User ID: Tên người dùng 
 Password : Mật khẩu 
275 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Ví dụ: Tạo kết nối với CSDL Access 
using System; 
using System.Data; 
using System.Data.OleDb; 
public partial class VD2 : System.Web.UI.Page 
{ 
 protected void Page_Load(object sender, EventArgs e) 
 { 
 String StrCnn="Provider=Microsoft.Jet.OLEDB.4.0; 
 Data Source=" + Server.MapPath("~/App_Data/QLBansach.mdb"); 
 OleDbConnection cnn = new OleDbConnection (StrCnn); 
 cnn.Open(); 
 //Truy xuất, xử lý dữ liệu 
 cnn.Close(); 
 } 
} 
276 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Nếu kết nối với CSDL SQLServer 
 Data Source/Server: Tên Server 
 Initial Catalog/DataBase: Tên CSDL 
 User ID/UID: Tên người dùng 
 Password/ PWD: Mật khẩu 
 Integrated Security: Cơ chế chứng thực đăng nhập 
 true: tài khoản Windows; 
 false: Tài khoản SqlServer (ví dụ: sa) 
277 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Ví dụ: Tạo kết nối với CSDL SQLServer 
using System; 
using System.Data; 
using System.Data.sqlClient; 
public partial class KetnoiCSDL : System.Web.UI.Page 
{ 
 protected void Page_Load(object sender, EventArgs e) 
 { 
 String StrCnn= @"Data Source=MINHVU-PC\SQLEXPRESS; Initial 
Catalog=QLbansach; User ID=sa;Password=;"; 
 SqlConnection cnn = new SqlConnection(StrCnn); 
 cnn.Open(); 
 //Truy xuất, xử lý dữ liệu 
 cnn.Close(); 
 } 
} 
278 
Các thuộc tính Của Connection 
 Database: Tên CSDL 
 Data Source: Tên Server 
 Provider: Tương ứng với Provider của HQTCSDL 
 State: Tình trạng kết nối của Connection: 
 Broken: Kết nối đã bị ngắt khi đã kết nối 
 Closed: Kết nối đã đóng 
 Connecting: Đang kết nối 
 Executing: Kết nối đang thực hiện một lệnh 
 Fetching: Kết nối đang truy xuất dữ liệu 
 Open: Kết nối đang mở 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
279 
Các phương thức 
 Change Database: Thay đổi Database làm việc 
 Close : Đóng kết nối 
 Dispose: Giải phóng bộ nhớ 
 Open: Thực hiện kết nối 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
280 
7.2.2 Command 
 Sau khi tạo kết nối CSDL, mọi thao tác với nguồn 
dữ liệu có thể được thực hiện thông qua Command. 
 Tùy theo loại Connection đối tượng Command 
thuộc tên miền: 
 System.Data.OleDb.OleDbCommand 
 System.Data.SqlClient.SqlCommand 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
281 
Tạo Command 
Cú pháp: 
 As New ; 
.Connection=; 
.CommandText=Lệnh SQL>; 
Hoặc 
As New (); 
.Connection=; 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
282 
Các thuộc tính Của Command 
CommandText: Lệnh SQL hay tên Procedure 
CommandType: Loại Command 
 Text: (Mặc định): Là câu lệnh SQL 
 StoredProcedure: Tên thủ tục 
 TableDirect: Tên của table (SQLProvider không hỗ trợ) 
VD: 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = cnn; 
cmd.CommandType = CommandType.Text; 
cmd.CommandText = "Select * From Khachhang"; 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
283 
VD: khai báo câu lệnh SQL trong SqlCommand 
SqlCommand cmd = new SqlCommand("select * from Khachhang",cnn); 
cnn : biến connection hoặc chuỗi connection string 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
VD: Khai báo sử dụng 1 StoredProcedure 
 SqlCommand cmd = new SqlCommand; 
cmd.Connection = cnn; 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = "Sachtheogia"; 
284 
Parameters 
 Lệnh SQL trong commandText có thể sử dụng 
 ? (khi sử dụng Access) 
 @Tênbiến (khi sử dụng SQLServer) 
thay cho trị chưa xác định và khi thực hiện sẽ 
dùng đối tượng Parameters để truyền giá trị 
vào dấu ?/ @Tênbiến. 
 Tùy theo Command Parameter sẽ khai báo khác nhau 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
285 
Access 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
 OleDbParameter = new OleDbParameter(); 
 OleDbParameter = new 
 OleDbParameter (); 
 OleDbParameter = new 
 OleDbParameter (,); 
286 
Các thuộc tính cần chú ý: 
 Direction: Giá trị cho biết lọai tham số 
 Input: (mặc định) Loại tham số đầu vào 
 InputOutput: Loại tham số đầu vào và ra 
 Output: Loại tham số đầu ra 
 ReturnValue: Loại tham số nhận trị trả về 
 OleDbType / SqlDbType: Kiểu dữ liệu của tham số. 
 ParameterName: Tên tham số 
 Value: Giá trị tham số 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
287 
VD: Khi sử dụng OleDbCommand 
cmd.CommandText="Select * From KhachHang Where MaKH=?"; 
OleDbParameter Par = new OleDbParameter(); 
Par = cmd.CreateParameter(); 
Par.Value="KH01"; 
cmd.Parameters.Add(Par); 
VD: Khi sử dụng SqlDbCommand 
cmd.CommandText="Select * From KhachHang Where 
MaKH=@MaKH"; 
SqlParameter Par = new SqlParameter(); 
Par = cmd.CreateParameter(); 
Par.ParameterName="@MaKH"; 
Par.Value="KH01"; 
cmd.Parameters.Add(Par); 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
288 
Đưa tham số vào tập hợp Parameters 
VD: Khi sử dụng OleDbCommand 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
cmd.CommandText= "Select * From BangDiem Where Masv=? And MaMH=?"; 
OleDbParameter Par1 = new OleDbParameter(); 
cmd.CreateParameters.Add("Sinhvien",OleDbType.Char,4); 
Par1.Value="SV01"; 
OleDbParameter Par2 = new OleDbParameter(); 
cmd.CreateParameters.Add("Monhoc",OleDbType.Char,4); 
Par2.Value="MH01"; 
289 
VD: Khi sử dụng SqlDbCommand 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
cmd.CommandText="Select * From BangDiem Where Masv=@MaSV and 
MaMH = @MaMH "; 
SqlParameter Par1 = new SqlParameter(); 
Par1 = cmd.Parameters.Add("@MaSV",SqlType.Char,4); 
Par1.Value="SV01"; 
SqlParameter Par2 = new SqlParameter(); 
cmd.CreateParameters.Add("@MaMH",SqlType.Char,4); 
Par2.Value="MH01"; 
290 
Tạo tham số và đưa vào tập hợp Parameters 
VD: Procedure SpKetQuaThi cần 2 tham số đầu vào: 
@MaSV , @MaMH và trả về Điểm thi của Môn học của 
sinh viên đó. 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
291 
cmd.CommandText="spKetQuaThi"; 
cmd.CommandType=CommandType.StoredProcedure; 
OleDbParameter ts3 = new OleDbParameter(); 
ts3.Direction=ParameterDirection.ReturnValue; 
ts3.OleDbType=OleDb.OleDbType.Int; 
cmd.parameters.Add(ts3); 
OleDbParameter ts1 = new OleDbParameter(); 
cmd.Parameters.Add("@MaSV",OleDbType.Char,4); 
ts1.Value="SV01"; 
OleDbParameter ts2 = new OleDbParameter(); 
cmd.Parameters.Add("@MAMH",OleDbType.Char,4); 
ts2.Value="MH01"; 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
292 
CREATE PROC SpKetQuaThi ( 
 @MaSV varchar(2), 
 @MaMH varchar(2), 
 @DiemThi int output 
) 
AS 
Select @DiemThi=DiemThi from SVMH 
where MaSV=@MaSV & MaMH = @MaMH; 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
293 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = cn; //bien connection; 
cmd.CommandText = "SVMH"; 
cmd.CommandType = CommandType.StoredProcedure; 
SqlParameter ts1 = new SqlParameter("@MaSV",SqlDbType.VarChar,4); 
SqlParameter ts2 = new SqlParameter("@MaMH",SqlDbType.VarChar,4); 
ts1.Value = "SV01"; 
ts2.Value = "MH01"; 
cmd.Parameters.Add(ts1); 
cmd.Parameters.Add(ts2); 
SqlParameter ts3 = new SqlParameter("@DiemThi",SqlDbType.Int); 
ts3.Direction = ParameterDirection.Output ; 
cmd.Parameters.Add(ts3); 
cmd.ExecuteNonQuery(); 
Label1.Text = cmd.Parameters["@DiemThi"].Value.ToString(); 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
294 
Thực hiện Command: 
 Phương thức ExecuteReader: Trả về đối tượng 
DataReader để đọc dữ liệu mỗi lần một dòng với 
phương thức Read.(DataReader đọc dữ liệu trực tiếp 
từ nguồn nên phải duy trì kết nối đến khi đọc xong) 
 SqlDataReader ; 
 = .ExecuteReader(); 
VD: 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
 SqlDataReader dr; 
 dr = cmd.ExecuteReader; 
 while (dr.Read()) 
 { 
 Label1.Text += dr["MaNXB"] + ", " + dr["TenNXB"] + ""; 
 } 
295 
Thực hiện Command: 
 Phương thức ExcuteNoneQuery: Dùng thực thi các 
phát biểu T-Sql như: Insert, Update, Delete, Create, 
Phương thức này trả về số dòng dữ liệu chiệu tác 
động, ngược lại trả về -1. 
VD : cmd.ExcuteNonQuery() 
 Phương thức ExcuteScalar: Trả về từ phát biểu 
SQL dạng Select chỉ có một cột một hàng, thường 
được dùng để thực thi các câu lệnh SQL như Count, 
Sum, Max, Min, AVG,  
Khoa CNTT, Trường CĐ CNTT TP.HCM 
296 
try 
 { 
 SqlConnection cnn = new SqlConnection("Data 
Source=(local);Initial Catalog=QLbansach;User ID=sa;Password="); 
 SqlCommand cmd = new SqlCommand(); 
 cmd.Connection = cnn; 
 //Loại command là câu lệnh SQL 
 cmd.CommandText = "Select Count(*) From Chude"; 
 cmd.CommandType = CommandType.Text; 
 //Mở kết nối và lấy dữ liệu 
 cnn.Open(); 
 int count = (int)cmd.ExecuteScalar(); 
 response.write(count.ToString()); 
 cnn.Close(); 
 } 
 catch (Exception) 
 { 
 response.write("Không thành công!"); 
 } 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Ví dụ 1: Sử dụng Command với câu lệnh Select 
297 
 try 
 { 
SqlConnection cnn = new SqlConnection("Data Source=(local);Initial 
Catalog=QLbansach;User ID=sa;Password="); 
 SqlCommand cmd = new SqlCommand(); 
 cmd.Connection = cnn; 
 //Biến Commnad thao tác Insert, Update, Delete 
 cmd.CommandText = "Insert Into Chude(tencd) Values(n'văn hóa')"; 
 cmd.CommandType = CommandType.Text; 
 cnn.Open(); 
 cmd.ExecuteNonQuery(); 
 response.write("Thành công!"); 
 cnn.Close(); 
 } 
 catch (Exception) 
 { 
 response.write("Thất bại!"); 
 } 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Ví dụ 2: Sử dụng Command với lệnh Insert,Update,Delete 
298 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Ví dụ 3: Command với lệnh Insert,Update,Delete + Tham số 
try 
 { 
 SqlConnection cnn = new SqlConnection("Data Source=(local);Initial 
Catalog=QLbansach;User ID=sa;Password="); 
 SqlCommand cmd = new SqlCommand(); 
 cmd.Connection = cnn; 
 cmd.CommandText = "INSERT INTO CHUDE VALUES(@TENCHUDE)"; 
SqlParameter parTenLinhVuc = 
new SqlParameter("@TENCHUDE", SqlDbType.NVarChar, 50); 
 cmd.CommandType = CommandType.Text; 
 cmd.Parameters.Add(parTenLinhVuc); 
 parTenLinhVuc.Value = TextBox1.Text; 
 cnn.Open(); 
 cmd.ExecuteNonQuery(); 
 cnn.Close(); 
 response.write("Thành công!"); 
 } 
 catch (Exception) 
 { 
 response.write("Thất bại!"); 
 } 
299 
7.2.3 DataReader 
Là đối tượng truy cập dữ liệu trực tiếp, sử dụng con 
trỏ phía Server và duy trì kết nối với Server trong suốt 
quá trình đọc dữ liệu, 
Tùy theo loại Connection mà DataReader thuộc tên 
miền: 
 System.Data.OleDb.OleDbDataReader 
 System.Data.SqlClient.SqlDataReader 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
300 
Các thuộc tính 
 FieldCout: Số cột trên dòng hiện hành của 
DataReader 
 IsClosed : Cho biết dataReader đã đóng 
 Item: giá trị của cột truyền vào. Tham số truyền 
vào là tên cột hoặc số thứ tự tính từ 0. 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
301 
Các phương thức 
 Close: Đóng DataReader 
 GetFieldType: Trả về kiểu dữ liệu của tham số 
truyền vào. 
 GetName: Trả về tên của cột truyền vào 
 GetValue: Trả về trị của cột truyền vào 
 Read: Di chuyển đến dòng kế tiếp và trả về true 
nếu còn dòng để di chuyển, ngược lại trả về False. 
 Trong khi dataReader đang mở các thao tác dữ 
liệu trên nguồn dữ liệu đều không thể cho đến khi 
dataReader đóng lại bằng lệnh Close 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
302 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Ví dụ 1:DataReader với lệnh Insert,Update,Delete +Tham số 
try 
 { SqlConnection cnn = new SqlConnection("Data Source=(local);Initial 
Catalog=QLbansach;User ID=sa;Password="); 
 SqlCommand cmd = new SqlCommand(); 
 cmd.Connection = cnn; 
 cmd.CommandText = "SELECT * FROM Nhaxuatban"; 
 cmd.CommandType = CommandType.Text; 
 cnn.Open(); 
 IDataReader dr = cmd.ExecuteReader(); 
 String list = ""; 
 while (dr.Read()) 
 { 
 list = list + dr["TenNXB"].ToString().Trim() + " "; 
 } 
 dr.Close(); 
 response.write(list.ToString()); 
 cnn.Close(); 
 } 
catch (Exception) 
 { 
 response.write("Thất bại!"); 
 } 
303 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Ví dụ 2: DataReader + gọi procedure (VD: Getnhaxuatban) 
try 
{ SqlConnection cnn = new SqlConnection("Data 
Source=(local);Initial Catalog=QLbansach;User ID=sa;Password="); 
 SqlCommand cmd = new SqlCommand("Getnhaxuatban", cnn); 
 cmd.Connection = cnn; 
 cmd.CommandType = CommandType.StoredProcedure; 
 cnn.Open(); 
 IDataReader dr = cmd.ExecuteReader(); 
 String list = ""; 
 while (dr.Read()) 
 { 
 list = list + dr["TenNXB"].ToString(); 
 } 
 dr.Close(); 
 response.write(list.ToString()); 
 cnn.Close(); 
} 
catch (Exception) 
 { 
 response.write("Thất bại!"); 
 } 
304 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Ví dụ 2: DataReader + gọi procedure có tham số 
Create Procedure GetchudeByMaCD 
@Machude char(15) 
AS 
Begin 
 Select * From Chude Where MaCD=@Machude 
End 
305 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
try 
{ SqlConnection cnn = new SqlConnection("Data Source=(local);Initial 
Ctalog=QLbansach;User ID=sa;Password="); 
 SqlCommand cmd = new SqlCommand("GetchudeByMaCD", cnn); 
 cmd.Connection = cnn; 
 cmd.CommandType = CommandType.StoredProcedure; 
 SqlParameter parMALINHVUC = 
new SqlParameter("@Machude", SqlDbType.NChar, 10); 
 parMAVHUDE.Value = TextBox1.Text; 
 cmd.Parameters.Add(parMACHUDE); 
 cnn.Open(); 
 IDataReader dr = cmd.ExecuteReader(); 
 String list = ""; 
 while (dr.Read()) 
 { 
 list = list + dr["Tenchude"].ToString(); 
 } 
 dr.Close(); 
 response.write(list.ToString()); 
 cnn.Close(); 
} 
catch (Exception) 
 { 
 response.write("Thất bại!"); 
 } 
306 
7.2.4 DataAdapter 
 Để lấy dữ liệu từ nguồn dữ liệu về cho ứng dụng, 
chúng ta sử dụng đối tượng DataAdapter. Đối tượng 
này cho phép ta lấy cấu trúc và dữ liệu của các bảng. 
 DataAdapter là một bộ gồm 4 đối tượng: 
 SelectCommand: Cho phép lấy thông tin từ nguồn. 
 InsertCommand: Cho phép thêm dữ liệu vào bảng 
trong nguồn. 
 UpdateCommand: Cho phép điều chỉnh dữ liệu của 
bảng trong nguồn. 
 DeleteCommand: Cho phép xóa dữ liệu của bảng 
trong nguồn. 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
307 
 Tạo DataAdapter 
Cú pháp: 
DataAdapter = 
New DataAdapter(,) 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
DataAdapter chỉ thao tác với nguồn dữ liệu qua đối 
tượng connection đang kết nối, khi Connection chưa mở 
thì DataAdapter sẽ tự động mở kết nối khi cần và đóng 
lại 
308 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
 Các thuộc tính của DataAdapter 
 DeleteCommand: Đối tượng Command chứa nội 
dung lệnh hủy các mẫu tin trên nguồn dữ liệu. 
 InsertCommand: Đối tượng Command chứa nội 
dung lệnh thêm các mẫu tin trên nguồn dữ liệu. 
 SelectCommand: Đối tượng Command chứa nội 
dung lệnh truy xuất các mẫu tin trên nguồn dữ liệu. 
 UpdateCommand: Đối tượng Command chứa nội 
dung lệnh sửa các mẫu tin trên nguồn dữ liệu. 
309 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
 Các chức năng của DataAdapter 
 Lấy dữ liệu từ nguồn: 
 - DataTable: Fill() 
 - DataSet: Fill() 
Dữ liệu lấy về DataSet dưới dạng các dataTable 
với tên là: Table0,Table1, Table2. . . 
- Đổ dữ liệu vào Datset cho bảng DataTable nếu 
chưa có sẽ tạo mới: 
 Fill(,) 
310 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
 Phương thức trả về số mẫu tin lấy được 
 Dataset DS as New Dataset() 
 Integer so; 
 so= DA.Fill(DS, “Sinhvien”) 
 Để cập nhật dữ liệu về nguồn 
Update(): Cập nhật các dòng (Các 
đối tượng DataRow) vào nguồn dữ liệu. 
Update(): Cập nhật các thay đổi trên 
tất cả các bảng của Dataset vào nguồn dữ liệu. 
Update(): Cập nhật tất cả các thay 
đổi trên DataTable vào nguồn dữ liệu. 
Update(,) Cập nhật các 
thay đổi trên bảng trong Dataset vào nguồn. 
311 
7.2.5 Dataset 
 Dataset là một mô hình CSDL quan hệ thu nhỏ 
đáp ứng nhu cầu của ứng dụng. 
 Dataset chứa các bảng (DataTable), các quanhệ 
(DataRelation) và các ràng buộc (constraint) 
 Dataset thuộc tên miền: System.Data.Dataset. 
 Khai báo 
 New System.Data.Dataset() 
Hoặc 
 New System.Data.Dataset() 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
312 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
 Các phương thức 
Thêm một bảng vào Dataset 
 Tables.Add() 
Một bảng mới tự động được tạo ra với tên 
mặc định Table1, Table2 . . . 
 Tables.Add() 
Một bảng mới tạo ra theo đúng 
Ghi chú: Tên bảng có phân biệt chữ in, thường 
Xóa bảng ra khỏi Dataset 
 Tables.Remove() 
Xóa bảng ra khỏi tập hợp Table. 
313 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Kiểm tra bảng có thuộc về Dataset 
 Tables.Contains() 
Lấy chỉ số của bảng 
 Tables.IndexOf() 
Lấy số bảng trong Dataset 
 Tables.Count 
Lấy ra một bảng trong Dataset 
 Tables() 
Để cập nhật các thay đổi trên Dataset 
 AcceptChanges() 
314 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Để hủy các thay đổi trên Dataset 
 RejectChanges() 
Để xóa bỏ mọi dữ liệu trên dataSet 
 Clear() 
Để tạo một bản sao của Dataset 
 Clone() 
Để xóa bỏ Dataset 
 Dispone() 
 Giải phóng mọi tài nguyên trên vùng nhớ 
Dataset đang sử dụng. 
Tạo quan hệ giữa hai bảng trong Dataset. 
 Relations.Add(, 
) 
Xóa quan hệ giữa hai bảng trong Dataset. 
 Relations.Remove() 
315 
7.2.6 DataTable 
 Dữ liệu các bảng trong nguồn dữ liệu được lấy về 
và đưa vào các DataTable. DataTable thuộc tên miền : 
System.Data.dataTable. 
Cú pháp: 
 New DataTable(); 
 New DataTable(); 
DataTable được hình thành từ DataColumn và DataRow. 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
316 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
try 
 { SqlConnection cnn = new SqlConnection("Data Source=(local);Initial 
Catalog=QLbansach;User ID=sa;Password="); 
 SqlDataAdapter da=new SqlDataAdapter("select * from CHUDE", cnn); 
 SqlCommandBuilder commandBuilder = new SqlCommandBuilder(da); 
 DataSet ds = new DataSet(); 
 da.Fill(ds); 
 foreach (DataRow row in ds.Tables[0].Rows) 
 if (row["MaCD"]=="1") 
 { 
 row["TENCHUDE"] = "BBB"; 
 } 
 response.write(ds.Tables[0].Rows[2].ItemArray[1].ToString()); 
 GridView1.DataSource = ds.Tables[0]; 
 //Không sử dụng SqlCommandBuilder thì không thể update dữ liệu. 
 da.Update(ds); 
} 
 catch (Exception) 
 { 
 response.write("Thất bại!"); 
 } 
Ví dụ 1: DataAdapter + update dữ liệu 
317 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
try 
{ 
 SqlConnection cnn = new SqlConnection("Data 
Source=(local);Initial Catalog=QLbansach;User ID=sa;Password="); 
 SqlDataAdapter da = new SqlDataAdapter("GETNXB", cnn); 
 DataSet ds = new DataSet(); 
 da.Fill(ds); 
 response.write(ds.Tables[0].Rows[2].ItemArray[1].ToString()); 
 GridView2.DataSource = ds.Tables[0]; 
 } 
catch (Exception) 
 { 
 response.write("Thất bại!"); 
 } 
Ví dụ 2: DataAdapter + Procedure(GetNXB) 
318 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
try 
{ SqlConnection cnn = new SqlConnection("Data Source=(local);Initial 
Catalog=QLbansach;User ID=sa;Password="); 
 SqlCommand cmd = new SqlCommand("Getchude", cnn); 
 cmd.CommandType = CommandType.StoredProcedure; 
 SqlParameter parMACD = new SqlParameter("@MACD", SqlDbType.NChar, 
10); 
 parMACD.Value = "1"; 
 cmd.Parameters.Add(parMACD); 
 cnn.Open(); 
 SqlDataAdapter da = new SqlDataAdapter(); 
 da.SelectCommand = cmd; 
 DataSet ds = new DataSet(); 
 da.Fill(ds); 
 GridView1.DataSource = ds.Tables[0]; 
 cnn.Close(); 
} 
 catch (Exception) 
 { 
 response.write("Thất bại!"); 
 } 
Ví dụ 3: DataAdapter + Procedure tham số (Getchude) 
319 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
try 
{ SqlConnection cnn = new SqlConnection("Data Source=(local);Initial 
Catalog=QLbansach;User ID=sa;Password="); 
SqlCommand cmd = new SqlCommand("GETNXB", cnn); 
cmd.Connection = cnn; 
cmd.CommandType = CommandType.StoredProcedure; 
cnn.Open(); 
SqlDataAdapter da = new SqlDataAdapter(); 
da.SelectCommand = cmd; 
//da.InsertCommand = cmd; 
//da.DeleteCommand = cmd; 
//da.UpdateCommand = cmd; 
DataSet ds = new DataSet(); 
da.Fill(ds); 
GridView1.DataSource = ds.Tables[0]; 
GridView1.DataBind(); 
cnn.Close(); 
} 
catch (Exception) 
 { 
 response.write("Thất bại!"); 
 } 
Ví dụ 4: DataAdapter + Đối số là command 
320 
7.3. Xây Dựng Lớp Xử Lý Dữ Liệu 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
 Để các thao tác với CSDL thuận lợi. Ta nên xây dựng 
lớp xử lý dữ liệu đảm nhận việc kết nối CSDL và các thủ 
tục xử lý. 
 Docbang(string LenhSQL): Nhằm thực hiện câu lệnh 
truy vấn SQL để trả về dữ liệu là 1 DataTable 
 Thuchienlenh(string LenhSQL): Nhằm thực hiện câu 
lệnh Insert, Update, Delete để cập nhật dữ liệu cho 
CSDL. 
 Thực hiện: 
 Tạo cấu hình chuỗi kết nối CSDL trong tập tin 
Webconfig. (Có thể dùng SQLDatasource để sinh mã) 
 <add name="KetnoiCSDL" connectionString="Data Source =(local); 
Initial Catalog=QLBansach;Integrated Security=True“ 
providerName="System.Data.SqlClient" /> 
321 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
 Tạo mới lớp XLDL.cs: Thêm mới 1 Item 
Tên lớp: XLDL.cs 
Sẽ lưu lớp này trong thư mục App_Code 
322 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
Thực hiện mã code cho lớp XLDL.cs 
. . . 
 using System.Data.SqlClient; 
public class XLDL 
{ 
static string StrCnn = ConfigurationManager.ConnectionStrings["KetnoiCSDL"]. 
ConnectionString.ToString(); 
 public static DataTable Docbang(string LenhSQL) 
 { 
 using (SqlConnection cnn = new SqlConnection(StrCnn)) 
 { 
 SqlDataAdapter bodocghi = new SqlDataAdapter(LenhSQL, cnn); 
 DataTable bang = new DataTable(); 
 bodocghi.Fill(bang); 
 return bang; 
 } 
 } 
. . . 
323 
Khoa CNTT, Trường CĐ CNTT TP.HCM 
. . . 
 public static void thuchienlenh(string LenhSQL) 
 { 
 using (SqlConnection cnn = new SqlConnection(StrCnn)) 
 { 
 cnn.Open(); 
 SqlCommand bolenh = new SqlCommand(LenhSQL, cnn); 
 bolenh.ExecuteNonQuery(); 
 cnn.Close(); 
 } 
 } 
} 
324 
 Chương 8 
Công Nghệ Và Dịch Vụ Web 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
8.1. Dịch vụ web – Webservice 
8.2 Công nghệ web 2 – Ajax 
325 
 8.1. Webservice – nội dung 
Khoa CNTT,Trường CĐ CNTT TP.HCM 
 GIỚI THIỆU CÁC ỨNG DỤNG PHÂN TÁN 
 KIẾN TRÚC HƯỚNG DỊCH VỤ 
WEB SERVICE & LẬP TRÌNH WEB SERVICE 
326 
8.1.1 CÁC ỨNG DỤNG PHÂN TÁN 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Máy 
tính 
Máy 
tính 
Dữ liệu 
Ứng dụng 
phân tán 
Dữ liệu 
327 
8.1.1 CÁC ỨNG DỤNG PHÂN TÁN 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Xem thông tin thời tiết 
 Thông tin ngoại tệ 
 Dịch tự động 
 Kiểm tra thông tin thẻ 
 Xem thông tin sân bay 
 Đặt phòng khách sạn 
 . 
328 
8.1.2 VẤN ĐỀ KHI THIẾT KẾ HỆ PHÂN TÁN 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Internet 
Firewall 
Firewall 
Firewall 
Provider C 
Web Service Client 
329 
8.1.3 WEB SERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
WEB SERVICE LÀ GÌ? 
 KIẾN TRÚC WEB SERVICE 
 XÂY DỰNG WEB SERVICE 
 SỬ DỤNG WEB SERVICE 
330 
8.1.3.1 ĐỊNH NGHĨA 
Khoa CNTT Trường CĐ CNTT TP.HCM 
• Là một tập các phương thức được gọi từ xa 
thông qua một địa chỉ URL do một tổ chức, cá 
nhân cung cấp. 
• Giao tiếp theo định dạng chuẩn XML 
• Được sử dụng để tạo các ứng dụng phân tán. 
331 
8.1.3.2 ĐẶC ĐIỂM 
Khoa CNTT Trường CĐ CNTT TP.HCM 
1. Không phụ thuộc vào ngôn ngữ lập trình 
2. Được truy cập từ bất cứ ứng dụng nào 
3. Hỗ trợ thao tác giữa các thành phần không 
đồng nhất 
4. Chi phí phát triển thấp 
5. Dễ bảo trì 
332 
8.1.3.3 KIẾN TRÚC WEBSERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
Service Consumer 
Publish Find 
Bind 
Service Provider 
Service Broker 
333 
8.1.3.4 XÂY DỰNG WEBSERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Tạo mới 1 webservice trong VS2010 
334 
Ví dụ ứng dụng : cộng 2 số nguyên 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Đặt tên là file là cong2so.asmx 
[WebService(Namespace = "")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class Cong2So : System.Web.Services.WebService { 
 public Cong2So () { 
 } 
 [WebMethod] 
 public int cong(int a, int b) 
 { 
 return a + b; 
 } 
} 
 Trong file Conghaiso.cs, cài đặt phương thức cộng: 
335 
8.1.3.4 KIỂM TRA WEBSERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Chạy file cong2so.asmx để kiểm tra phương thức 
webservice vừa tạo 
336 
8.1.3.4 Thử nghiệm 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Kết quả : 
337 
8.1.3.4 ngôn ngữ WSDL 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Trang webservice được mô tả bằng ngôn ngữ 
WSDL (Web Service Description Languague) 
338 
8.1.3.5 SỬ DỤNG WEBSERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Sử dụng webservice trong ASP.NET 
protected void Button1_Click(object sender, EventArgs e) 
 { 
 CongHaiSo c2s = new CongHaiSo(); 
 int a = int.Parse(TextBox1.Text); 
 int b = int.Parse(TextBox2.Text); 
 Label1.Text = c2s.Cong2So(a, b).ToString(); 
 } 
 Kết quả : 
339 
8.1.3.5 SỬ DỤNG WEBSERVICE CÓ SẴN 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Bước 1 : Add Web Reference 
340 
8.1.3.5 SỬ DỤNG WEBSERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Bước 2 : Nhập thông tin đường dẫn 
341 
8.1.3.4 SỬ DỤNG WEBSERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
342 
8.1.3.5 SỬ DỤNG WEBSERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Bước 3 : Thiết kế giao diện 
343 
8.1.3.4 SỬ DỤNG WEBSERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Bước 4: Xử lý code : 
344 
8.1.3.5 SỬ DỤNG WEBSERVICE 
Khoa CNTT Trường CĐ CNTT TP.HCM 
 Kết quả được lấy ngày 10/11, lu