Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

gtasp.net

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 1

MỤC LỤC

Chương 01: TỔNG QUAN VỀ ASP.NET  ........................................................... Trang 1

I. Giới thiệu về ASP.Net.................................................................................................1

1. Tìm hiểu về ASP.Net  ......................................................................................1

2. Những ưu điểm của ASP.Net ..........................................................................1

3. Quá trình xử lý tập tin ASPX............................................................................2

4. Tìm hiểu về .Net Phatform và .Net Framework................................................3

II. Web Server  ............................................................................................................... 6

1. Internet Information Services ...........................................................................6

2. Cài đặt Web Server  ........................................................................................7

3. Cấu hình Internet Information Services ...........................................................9

III. Tạo ứng dụng Web đầu tiên ..................................................................................12

1. Khởi động MS Visual Studio .Net  .................................................................12

2. Tạo mới ứng dụng Web.................................................................................13

3. Bổ sung các điều khiển..................................................................................14

4. Thi hành ứng dụng  .......................................................................................15

5. Phân loại tập tin trong ASP.Net .....................................................................15

IV.  Làm quen với các thành phần giao diện trên VS .Net  ........................................16

1. Solution Explorer   .........................................................................................16

2. Property Window ..........................................................................................17

3. Toolbox  .........................................................................................................17

4. Document Outline Window ............................................................................18

Chương 02:  WEB SERVER CONTROL .....................................................................19

I. Điều khiển cơ bản chuẩn – Standard......................................................................19

1. Label..............................................................................................................20

2. TextBox .........................................................................................................20

3. Image.............................................................................................................20

4. Button, ImageButton, LinkButton ...................................................................21

5. HyperLink.......................................................................................................22

6. ListBox Và DropDownList ..............................................................................22

7. CheckBox & RadioButton ..............................................................................25

8. CheckBoxList & RadioButtonList ...................................................................25

II. Điều khiển kiểm tra dữ liệu

III. Một số điều khiển khác

IV. Đối tượng ViewState 

V. Asp.Net Page

Chương 03: CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU 

I. Điều khiển DataGrid...................................................................................... 62

I.1. Các thao tác định dạng lưới ...........................................................................62

I.2. Xử lý sắp xếp................................................................................................67

I.3. Xử lý phân trang ...........................................................................................69

I.4. Tùy biến các cột ...........................................................................................70

I.5. Cập nhật dữ liệu trực tiếp trên lưới.................................................................74

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 2

II. Điều khiển DataList ...................................................................................... 79

II.1. Sử dụng DataList để hiển thị dữ liệu...............................................................79

II.2. Cập nhật dữ liệu với DataList .........................................................................83

III. Điều khiển Repeater ..................................................................................... 87

IV. Các ví dụ mở rộng ......................................................................................... 90

IV.1. Xử lý đảo hướng sắp xếp trong DataGrid ........................................................90

IV.2. Tạo biểu tượng sắp xếp trong cột cho DataGrid...............................................91

IV.3. Định dạng hình thức hiển thị cho dòng dữ liệu thỏa điều kiện trên DataGrid ......92

IV.4. Tạo hiệu ứng chọn khi rê chuột qua các dòng dữ liệu ......................................93

Bài 4.................................................................................................................... 94

XÂY DỰNG LỚP XỬ LÝ DỮ LIỆU.......................................................................... 94

I. Thiết kế tổng quan........................................................................................ 96

I.1. Cấu trúc chi tiết lớp XL_BANG ........................................................................98

I.2. Xây dựng lớp xử lý nghiệp vụ.......................................................................102

I.3. Sử dụng lớp xử lý nghiệp vụ ........................................................................104

Bài 5.................................................................................................................. 108

Tài liệu hướng dẫn giảng dạy

Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 3/174

XÂY DỰNG ĐỐI TƯỢNG THỂ HIỆN.................................................................... 108

I. Tạo mới đối tượng thể hiện......................................................................... 109

II. Sử dụng đối tượng thể hiện ........................................................................ 111

III. Tạo phương thức cho đối tượng thể hiện.................................................... 112

IV. Tạo sự kiện cho đối tượng thể hiện ............................................................ 113

IV.1. Thiết kế .....................................................................................................114

IV.2. Xử lý..........................................................................................................114

Bài 6.................................................................................................................. 117

XÂY DỰNG VÀ QUẢN LÝ ỨNG DỤNG ................................................................. 117

I. Đối tượng Request, Response..................................................................... 118

I.1. Đối tượng Response....................................................................................118

I.2. Đối tượng Request ......................................................................................120

II. Đối tượng Session, Application................................................................... 122

II.1. Đối tượng Application..................................................................................123

II.2. Đối tượng Session.......................................................................................124

III. Đối tượng Server......................................................................................... 125

IV. Đối tượng Cookies ...................................................................................... 125

IV.1. Giới thiệu ...................................................................................................125

IV.2. Làm việc với Cookies ...................................................................................126

V. Tập tin quản lý và cấu hình ứng dụng......................................................... 127

V.1. Global.asax.................................................................................................127

V.2. Web.config.................................................................................................128

VI. Tổ chức & xây dựng ứng dụng.................................................................... 133

VI.1. Tổ chức lưu trữ ứng dụng............................................................................133

VI.2. Xây dựng ứng dụng ....................................................................................134

Bài 7.................................................................................................................. 136

WEB SERVICE ................................................................................................... 136

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 3

I. Tìm hiểu về Web Services ........................................................................... 137

II. Xây dựng Web Services .............................................................................. 140

Tài liệu hướng dẫn giảng dạy

Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 4/174

II.1. Tạo Web Services trong VS .Net...................................................................140

II.2. Kiểm tra Web Service ..................................................................................141

III. Sử dụng Web Service.................................................................................. 143

III.1. Sử dụng Web Service do người dùng xây dựng .............................................144

III.2. Sử dụng Web Services được cung cấp miễn phí trên mạng.............................144

IV. Xây dựng Web Services truy xuất dữ liệu................................................... 148

IV.1. Web Service: WS_KHACH_HANG..................................................................148

IV.2. Sử dụng WS_KHACH_HANG.........................................................................150

Bài 8.................................................................................................................. 152

PHỤ LỤC ........................................................................................................... 152

I. Cơ sở dữ liệu dùng trong ứng dụng ............................................................ 153

I.1. Thiết kế cơ sở dữ liệu..................................................................................153

I.2. Dữ liệu thử.................................................................................................156

II. Giới thiệu về các tag HTML ......................................................................... 157

II.1. Cơ bản về tag HTML....................................................................................157

II.2. Các tag nhập liệu........................................................................................163

III. Cascading Style Sheets - CSS...................................................................... 166

III.1. Giới thiệu CSS.............................................................................................166

III.2. Cú pháp CSS ..............................................................................................167

III.3. Sử dụng CSS trong trang HTML....................................................................169

Chương 01

TỔNG QUAN VỀ ASP.NET

 Giới thiệu về Asp.Net

 Web Server

 Tạo ứng dụng web đầu tiên

I. Giới thiệu về ASP.Net

1. Tìm hiểu về ASP.Net

Từ khoảng 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ủ  sử  dụng  hệ điều  hành 

Windows. ASP đã thể  hiện được những ưu điểm của mình 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 COM:  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…, đồng thời, ASP cũng hỗ trợ nhiều ngôn 

ngữ: VBScript, JavaScript. 

Chính những ưu điểm đó, ASP đã  được  yêu  thích  trong  một  thời  gian  dài. Tuy  nhiên, 

ASP vẫn còn tồn đọng một số khó khăn như Code ASP và HTML lẫn lộn, điều này làm cho quá 

trình viết code khó khăn, thể  hiện và  trình  bày  code  không  trong  sáng,  hạn  chế  khả năng sử

dụng lại code. Bên cạnh đó, khi triển khai cài đặt, do không được biên dịch trước nên dễ bị mất

source code, hạn chế về mặt tốc độ thực hiện. Quá trình xử lý Postback khó khăn, …

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 4

Đầu năm 2002, Microsoft giới thiệu một kỹ thuật lập trình Web khá mới mẻ với tên gọi 

ban đầu là ASP+,  tên chính thức sau  này là  ASP.Net. Với ASP.Net, không những không cần 

đòi hỏi bạn phải biết các tag HTML, thiết kế web, mà nó 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.

ASP.Net  là  kỹ  thuật  lập  trình  và  phát  triển  ứng  dụng  web  ở  phía  Server  (Server-side) 

dựa trên nền tảng của Microsoft .Net Framework.

Hầu hết, những người mới đến với lập trình web đều bắt đầu tìm hiểu những kỹ thuật ở

phía  Client (Client-side)  như:  HTML,  Java  Script,  CSS  (Cascading  Style  Sheets).  Khi  Web 

browser yêu cầu một trang web (trang web sử dụng kỹ thuật client-side), Web server tìm trang 

web mà Client yêu cầu, sau đó gởi về cho Client. Client nhận kết quả trả về từ Server và hiển 

thị lên màn hình.

ASP.Net  sử  dụng  kỹ  thuật  lập  trình  ở  phía  server  thì  hoàn  toàn  khác,  mã  lệnh  ở  phía 

server  (ví  dụ: mã  lệnh  trong  trang  ASP,  ASP.NET)  sẽ được  biên  dịch  và  thi  hành  tại  Web 

Server. Sau khi được Server đọc, biên  dịch  và  thi  hành,  kết  quả  tự động đượ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.

2. Những ưu điểm của ASP.Net

 ASP.Net  cho  phép  bạn  lựa  chọn  một  trong  các  ngôn  ngữ  lập  trình  mà  bạn  yêu  thích: 

Visual Basic.Net, J#, C#,…

 Trang ASP.Net được biên dịch trước 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.

 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, …

 ASPX 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:  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 ứng dụng trên Windows.

 Hỗ trợ quản lý trạng thái của các control

 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

o Không cần lock, không cần đăng ký DLL

o 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

o Global.aspx có nhiều sự kiện hơn

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 5

o Quản lý session trên nhiều Server, không cần Cookies

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:

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.

.Net Framework

Kiến trúc .Net Framework

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 6

 Hệ điều hành

Cung cấp  các  chức năng xây dựng  ứng  dụng 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) để  bạn  có  thể  gọi  thi 

hành  các  chức  năng mà đối tượng đó cung  cấp.  Tuy  nhiên,  lời kêu  gọi  của  bạn có  được 

"hưởng  ứng"  hay  không  còn  tùy  thuộc  vào  khả năng của  hệ điều  hành đang chạy  ứng  dụng 

của bạn.

Các chức năng đơn giản như hiển thị một hộp thông báo (Messagebox) sẽ được .NET 

Framework sử  dụng  các  hàm  API  của Windows.  Chức năng phức  tạp hơn như sử  dụng  các 

COMponent  sẽ  yêu cầu  Windows  phải cài đặt  Microsoft  Transaction  Server  (MTS)  hay  các 

chức năng trên Web cần Windows phải cài đặt Internet Information Server (IIS).

Như  vậy,  bạn  cần  biết  rằng  lựa  chọn  1  hệ  điều  hành  để  cài  đặt  và  sử  dụng  .NET 

Framework cũng không kém phần quan trọng. Cài đặt .NET Framework trên các hệ điều hành 

Windows 2000, 2000 Server, XP, 2003 Server, Vista sẽ đơn giản và tiện dụng hơn trong khi lập 

trình.

  Common Language Runtime

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. 

Common Language  Runtime  (CLR)  giữ  vai  trò  quản  lý  việc  thi  hành  các  ứng  dụng  viết  bằng 

.NET trên Windows. 

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. Nó cũ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, Garbage collector, Exception handler, COM 

marshaller, Security engine,…

Trong  các  phiên  bản  hệ điều  hành Windows  mới như XP.NET và Windows 2003, Win 

Vista CLR được gắn kèm với hệ điều hành. Điều này đảm bảo ứng dụng viết ra trên máy tính 

của chúng  ta  sẽ  chạy trên máy tính  khác  mà  không  cần cài đặt, các bước  thực  hiện  chỉ đơn 

giản là một lệnh xcopy của DOS!

 Bộ thư viện các lớp đối tượng

Nếu phải giải nghĩa từ "Framework" trong thuật ngữ .NET Framework thì đây là lúc thích 

hợp  nhất. Framework  chính  là  một  tập  hợp hay 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. Có thể một số người trong chúng ta đã nghe qua về MFC và JFC. 

Microsoft Foundation Class là bộ thư viện mà lập trình viên Visual C++ sử dụng trong khi 

Java  Foundation  Class  là  bộ thư viện  dành  cho  các  lập  trình  viên  Java.  Giờ đây, có thể  coi 

.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ể bắt đầu xây dựng ứng dụng bằng Notepad.exe!!!… Nhiều người lầm tưởng rằng các 

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 7

môi trường phát triển phần mềm như Visual Studio 98 hay Visual Studio.NET là tất cả những gì 

cần để  viết chương trình. Thực  ra,  chúng  là  những  phần mềm  dùng làm  "vỏ  bọc"  bên  ngoài. 

Với chúng, chúng ta sẽ viết được các đoạn lệnh đủ các màu xanh, đỏ; lỗi cú pháp báo ngay khi

đang gõ  lệnh;  thuộc tính  của các đối tượng được đặt  ngay  trên  cửa  sổ  properties,  giao  diện 

được thiết kế theo phong cách trực quan… Như vậy, chúng ta có thể hình dung được tầm quan 

trọng của .NET Framework.

Nếu  không  có  cái  cốt  lõi  .NET  Framework,  Visual  Studio.NET  cũng chỉ  là  cái  vỏ  bọc! 

Nhưng nếu không có Visual Studio.NET, công việc của lập trình viên .NET cũng lắm bước gian 

nan!

o 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. Ví dụ các lớp trong thư viện này là String, Integer, Exception,…

o 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 

để  trong  việc  thao  tác với  các  dữ  liệu thông thường.  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,…

o 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. 

ASP.NET không phải là phiên bản mới của ASP 3.0. Ứ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.  Bên  cạnh đó là 

một  "phong  cách"  lập  trình  mới mà Microsoft đặt  cho  nó một  tên  gọi  rất  kêu:  code 

behind. 

Đây là cách mà lập trình viên xây dựng các ứng dụng Windows based thường 

sử dụng – giao diện và lệnh được tách riêng. Tuy nhiên, nếu bạn đã từng quen với

việc lập trình ứng dụng web, đây đúng là một sự "đổi đời" vì bạn đã được giải phóng

khỏi mớ lệnh HTML lộn xộn tới hoa cả mắt.

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. Nó cũng cho 

phép chúng ta chuyển một ứng dụng trước đây viết chỉ để chạy trên Windows thành 

một ứng dụng Web khá dễ dàng. Ví dụ cho các lớp trong thư viện này là WebControl, 

HTMLControl, …

o Web services

Web  services  có  thể  hiểu  khá  sát  nghĩa 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. Ví  dụ,  công  ty du  lịch  của  bạn đ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 

khách sạn 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 một Web service để cho biết thông tin về các phòng 

trống tại một thời điểm. Dựa vào đó, phần mềm của bạn sẽ biết rằng liệu có đủ chỗ

để đặt phòng cho khách du lịch không? Nếu đủ, phần mềm lại có thể dùng một.

Web service khác cung cấp chức năng đặt phòng để thuê khách sạn. Điểm lợi 

của Web service ở đây là bạn không cần một người làm việc liên lạc với khách sạn 

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 8

để hỏi thông tin phòng, sau đó, với đủ các thông tin về nhiều loại phòng người đó sẽ

xác định loại phòng nào cần đặt, số lượng đặt bao nhiêu, đủ hay không đủ rồi lại liên 

lạc  lại  với  khách  sạn để đặt  phòng.  Đừng  quên  là  khách  sạn  lúc này  cũng cần  có 

người để làm việc với nhân viên của bạn và chưa chắc họ có thể liên lạc thành công.

Web service được cung cấp dựa vào ASP.NET và sự hỗ trợ từ phía hệ điều 

hành của Internet Information Server.

o 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 based. 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, UserControl,…

 Phân nhóm các lớp đối tượng theo loại

Một  khái  niệm không được  thể  hiện  trong  hình  vẽ  trên nhưng cần đề  cập đến  là 

Namespace. Đây 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 tên là Data. 

Các lớp đối tượng dành cho việc vẽ hay hiển thị chữ đặt trong namespace tên là Drawing.

Một  namespace  có  thể  là  con  của  một  namespace  lớn hơn. Namespace lớn  nhất 

trong .NET Framework là System.

Hệ thống tên miền (Namespace)

Lợi điểm  của  namespace  là  phân  nhóm  các  lớp đối tượng, giúp người  dùng  dễ

nhận  biết  và sử dụng.  Ngoài  ra,  namespace  tránh việc  các  lớp đối tượng  có tên  trùng 

với nhau không sử dụng được. .NET Framework cho  phép chúng ta tạo ra các lớp đối 

tượng và các namespace của riêng mình. 

Với hơn 5000 tên có sẵn, việc đặt trùng tên lớp của mình với một lớp đối tượng 

đã có là điều khó tránh khỏi. Namespace cho phép việc này xảy ra bằng cách sử dụng 1

tên đầy đủ để nói đến 1 lớp đối tượng. Ví dụ, nếu muốn dùng lớp WebControls, chúng ta 

có  thể  dùng  tên  tắt  của  nó  là WebControls  hay  tên  đầy  đủ  là: 

System.Web.UI.WebControls.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 9

Đặ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  như chúng ta thấy ở  hình  vẽ trên. Đ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 (sẽ được nói tới trong các chương sau).

II. Web Server

Trong  phần  này  giới  thiệu  về  IIS  (phần  mềm  Web  Server  của  Microsot  dành  cho

Windows), đồng thời hướng dẫn cài đặt, cấu hình và kiểm tra Web Server trên các hệ thống sử

dụng Windows 2000,XP, Vista, Server 2003.

1. Internet Information Services (IIS)

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,  đầu  tiên  được  phát  hành  rời  trong  bản 

Service pack của WinNT.

 Các phiên bản Windows 2000 đã có tích hợp IIS 5.0.

 Windows XP tích hợp IIS 5.5

 Windows  XP  .NET  Server  tích  hợp  IIS  6  hỗ  trợ  các  tính  năng  dành  cho  .NET  của 

ASP.NET và Web Service.

 Windows Vista tích hợp IIS 7.0

2. Cài đặt Web Server

a. Cài đặt Web Server trên Windows 2000/Windows XP Professional

Windows 2000, Xp  tích hợp sẵn IIS nhưng không tự động cài đặt do đó, bạn phải tự cài 

IIS nếu hệ thống chưa cài.

 Bước 1. Chọn Control Panel | Add/Remove programs.

 Bước 2. Add/Remove Windows Components.

 Bước 3. Đánh dấu vào mục Internet Information Services (IIS).

 Bước 4. Chọn nút Next để cài đặt.

Sau khi cài đặt IIS, thư mục InetPub tự động được tạo ra trong ổ C: và chứa thư 

mục  con  wwwroot.  Có  thể  truy  cập  đến  Website  bằng  cách:  http://localhost    hoặc 

http://127.0.0.1 

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 10

 Ghi  chú:  Để kiểm tra cài đặt: Khởi động trình duyệt truy cập địa chỉ : http://Localhost

Kết quả thành công.

b. Cài đặt Web Server trên Windows Vista

 Bước 1: Chọn Start  Settings  Control Panel

 Bước 2:  Chọn Classic View  Chọn Programs and features

 Bước 3: Chọn Turn Windows features on or off

 Bước 4: Đánh dấu vào mục Internet Information Services (IIS)  Chọn Ok để cài đặt

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 11

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 12

Kiềm tra kết quả cài đặt:  Khởi động trình duyệt nhập địa chỉ http://localhost  

c. Cài đặt Web Server trên Windows Server 2003

Cài đặt Web Server trên Windows Server 2003 cũng tương tự như cài đặt Web Server 

trên Windows 2000.

 Bước 1. Chọn Control Panel | Add/Remove programs.

 Bước 2. Add/Remove Windows Components.

 Bước 3. Đánh dấu vào Application Server.

 Bước 4: Chọn Next để cài đặt 

3. Cấu hình Internet Information Services

Để  cấu  hình  IIS,  vào  Control  Panel    Administrative  Tools   Internet  Services 

Manager. Trên các hệ điều hành Windows 2000/XP, Vista  Microsoft sử dụng công cụ Microsoft 

Management Console (MMC) để làm công cụ quản lý. 

a. Cấu hình IIS quy định trang chủ mặc định

 Trên Win 2000, XP 

o Start    Settings   Control  Panel    Administratrive  tools   Mở mục Internet 

Infomtic Services

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 13

o Click phải mục  Default Website  Properties Chọn trang Documents  để quy 

định trang chủ mặc định

VD: Default.Aspx

Default.asp

Index.asp

Home.html

Index.htm

 Cấu hình IIS trên Win Vista

o Start    Settings   Control  Panel    Administratrive  tools   Mở  mục  IIS 

Manager 

o Click phải mục  Default Document

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 14

b. Cấu hình quy định thư mục ảo – Virtual Directory: 

Một Web Server có thể quản lý nhiều ứng dụng Web đồng thời. Ta có thể tổ chức một 

thư mục  con  trong  wwwroot  cho  mỗi  ứng  dụng nhưng tố hơn  bạn  nên  tạo  ánh  xạ (Virtual 

Directory) liên kết đến thư mục đó.Để tạo một virtual directory:

 Trên Windows 2000, Xp

Click phải: Default WebsiteNew/ Virtual Directory Next

    Next     Nextt

Khai báo nhãn cho thư mục ảo (Myweb)     Khai báo thư mục vật lý (D:\MyWebsite)

Xác lập quyền truy cập Next  Finish

 Trên Win Vista

Click phải: Default WebsiteAdd Application (hoặc Virtual Directory)

Khai báo nhãn (Alias) và chỉ định thư mục vật lý lưu trữ Website(Physical path)

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 15

Chạy  thử ứng dụng để kiểm tra:

 Hoặc từ cửa sổ IIS Manager: click phải trang cần xem (Default.aspx)  Browse

 Hoặc từ trình duyệt nhập: http://Localhost/Maytinh

IV. Tạo ứng dụng đầu tiên

1. Khởi động MS Visual Studio .Net

Chúng ta sẽ bắt đầu bằng việc làm quen với môi trường phát triển ứng dụng (IDE) của 

Visual Studio.NET 2005.

Start  Programs  Microsoft Visual Studio 2005  Microsoft Visual Studio 2005

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 16

2. Tạo ứng dụng web

Bước 1. Chọn từ thực đơn File  New  Website

Chọn các dạng ứng dụng tạo (ASP.Net Website) Vị trí lưu trữ (D:\Wellcom) Ngôn 

ngữ lập trình (C#)  Chon Ok

Kết quả:

 Cửa sổ Solution Explorer

 Trang Default.aspx (Design)

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 17

 Trang Default.aspx (Source)

 Trang Default.aspx.cs

3. Bổ sung điều khiển 

 Chọn trang Default.aspx  Chuyển trang sang chế độ làm việc Design

 Nhập một 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ừ  thanh công cụ Toolbox vào trang, đặt tên lần lượt là : lbNgay, 

lbThoigian.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 18

 Chuyển sang trang code Defaulr.aspx.cs (Double click vào trang đang thiết kế)

 Nhập code cho sự kiện Page Load:

Lưu ý: Phải lưu tập tin với tùy chọn Save with Encoding… nếu có sử dụng Font Unicode.

4. Thi hành ứng dụng

o Kiểm lỗi trước khi chạy: Từ Menu Build  Chọn Build Web Site

o Chấp nhận bật chế độ debug cho Website

o Chạy chương trình Bấm Ctrl + F5 : để chạy chương trình (không debug) và F5 để

chạy debug.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 19

5. Phân loại tập tin trong ASP.Net

ASP.Net ASP Diễn giải

.asax .asa Tập tin global.asax trong ASP .Net thay thế cho tập tin global.asa của ASP, 

là 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.

.asmx Tập tin Web Service của ứng dụng ASP.Net

.aspx .asp 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 .js Tập tin mã nguồn của Jscript

.vb Tập tin mã nguồn viết theo ngôn ngữ VB.Net

V. Làm quen với các thành phần giao diện trên VS .Net

1. Solution Explorer

 Hiển thị cửa số Solution Explorer: Thực đơn View | Solution Explorer

 Thao tác với cửa sổ 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ể:

o Thực hiện các chức năng: sao chép, cắt, dán trên tập tin, thư mục như 

Windows Explorer.

o Tổ chức thư mục quản lý ứng dụng: Sử dụng chức năng Add | New Folder 

từ thực đơn ngữ cảnh.

o Thêm thành phần mới cho ứng dụng: Sử dụng chức năng Add | Add New 

Item…từ thực đơn ngữ cảnh. Xuất hiện hộp thoại 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

  …

 Xác định trang web khởi động cho ứng dụng: Chọn trang cần khởi động Nhấp 

chuột phải (xuất hiện thực đơn ngữ cảnh) Chọn Set As Start Page.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 20

 Xác định Project khởi động (trong trường hợp Solution có nhiều Project): Chọn Set 

as StartUp Project từ thực đơn ngữ cảnh.

2. Property Window

Hiển thị cửa số Properties Window: Thực đơn View | Properties Window.

Thông qua cửa sổ thuộc tính, chúng ta có thể thiết lập thuộc tính cho trang web và các 

đối tượng có trong trang web.

3. Toolbox

Hiển thị Toolbox: Thực đơn View Toolbox

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 21

4. Document Outline Window

Hiển thị cửa sổ Document Outline: Thực đơn 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.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 22

Chương 02:

WEB SERVER CONTROL

 Điều khiển chuẩn – Standard

 Điều khiển kiểm tra dữ liệu Validation

 Một số điều khiển khác

 Đối tượng ViewState

I. Điều khiển chuẩn – Standard  

Những lý do nên sử dụng ASP.Net Standard Web Control:

 Đơn giản, tương tự như các điều khiển trên Windows Form.

 Đồng nhất: Các điều khiển Web server có các thuộc tính giống nhau   dễ tìm hiểu 

và sử dụng.

 Hiệu quả: Các điều khiển Web Server tự động phát sinh ra các tag HTML theo từng 

loại Browser.

Bảng liệt kê các thuộc tính chung của các Web control

Thuộc tính Kiểu Ý nghĩa

(ID) Chuỗi Qui định tên của điều khiển. Tên của điều khiển là duy nhất.

AccessKey String Qui định ký tự để di chuyển nhanh đến điều khiển - ký tự xử

lý phím nóng.

Attributes AttributeCollection Tập hợp các thuộc tính của điều khiển HTML

BackColor Color Qui định màu nền của điều khiển.

BorderColor  Color Qui định màu đường viền của điều khiển.

BorderStyle BorderStyle Qui định kiểu đường viền của điều khiển.

BorderWidth Unit Qui định độ rộng của đường viền.

CssClass String Qui định hình thức hiển thị của điều khiển qua tên CSS.

Enabled Boolean Qui định điều khiển có được hiển thị hay không. Giá trị mặc

định của thuộc tính này là True – được phép hiển thị.

Font FontInfo Qui định Font hiển thị cho điều khiển

ForeColor Color Qui định màu chữ hiển thị trên điều khiển

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 23

Height Unit Qui định chiều cao của điều khiển

ToolTip String Dòng chữ sẽ hiển thị khi rê chuột vào điều khiển.

Width Unit Qui định độ rộng của điều khiển.

1. Label

Label thường được sử dụng để hiển thị và trình bày nội dung trên trang web. Nội dung 

được hiển thị trong label được xác định thông qua thuộc tính Text. Thuộc tính Text có thể nhận 

và 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 = "<B>Còn đây là chuỗi văn bản được in đậm</B>";

2. TextBox

TextBox là điều khiển được dùng để nhập và hiển thị dữ liệu. TextBox thường được sử

dụng nhiều với các ứng dụng trên windows form.

Các thuộc tính:

 Text: Nội dung chứa trong Textbox

 TextMode: Qui định chức năng của Textbox, có các giá trị sau:

o SingleLine: Hiển thị và nhập liệu 1 dòng văn bản

o MultiLine: Hiển thị và nhập liệu nhiều dòng văn bản

o Password: Hiển thị dấu * thay cho các ký tự có trong Textbox.

 Rows: Trong trường hợp thuộc tính TextMode = MultiLine, thuộc tính Rows sẽ qui định 

số dòng văn bản được hiển thị.

 Maxlength: Qui định số ký tự tối đa được nhập vào cho TextBox

 Wrap: Thuộc tính này qui định việc  hiển thị  của văn bản có được phép tự động  xuống 

dòng khi kích thước ngang của của điều khiển không đủ để hiển thị dòng nội dung văn 

bản. Giá trị mặc định của thuộc tính này là True - tự động xuống dòng.

Ví dụ:

3. Image

Điều khiển này được dùng để hiển thị hình ảnh lên trang Web.

Các thuộc tính:

 ImageURL: Đường dẫn đến tập tin hình ảnh cần hiển thị.

 AlternateText:  Chuỗi  văn  bản  sẽ  hiển  thị  khi  tập  tin  được  thiết  lập  trong  thuộc  tính 

ImageURL không tồn tại.

 ImageAlign: Vị trí hiển thị giữa hình và nội dung văn bản.

o NotSet

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 24

o Left

o Middle

o TextTop

o Right

4. Button, ImageButton, LinkButton

 Các điều khiển Button, ImageButton, LinkButton mặc định đều là các nút Submit Button, 

mỗi khi được nhấn vào sẽ PostBack về Server.

 Khi chúng ta thiết lập giá tri thuộc tính CommandName cho các điều khiển này, chúng ta 

gọi tên chung cho các điều khiển này là Command Button.

Các thuộc tính chung của Button, ImageButton, LinkButton

Thuộc tính Ý nghĩa

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.

Ví dụ: Tạo Website Tinhtoan gồm các điều khiển: Label, Textbox, Button

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 25

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();

    }

Khi thi hành ứng dụng

5. HyperLink

Điều khiển này đượ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: Qui định hình hiển thị trên điều khiển.

 Text: Chuỗi văn bản sẽ được hiển thị trên điều khiển. Trong trường hợp cả 2 thuộc 

tính ImageURL và Text được thiết lập, thuộc tính ImageURL được ưu tiên, thuộc tính 

Text sẽ được hiển thị như Tooltip.

 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

o _blank: Hiển thị trang liên kết ở một cửa sổ mới.

o _self: Hiển thị trang liên kết tại chính cửa sổ chứa liên kết đó.

o _parent: Hiển thị trang liên kết ở frame cha.

Ví dụ:

         hplASPNet.Text = "Trang chủ ASP.Net";

        hplASPNet.ImageUrl = "~/Pictures/logoaspnet.jpg";

         hplASPNet.NavigateUrl ="http://www.asp.net";

hplASPNet.Target = "_blank";

Kết quả hiển trị trên trang Web:

Ví dụ: Tạo Website Lienket gồm 3 điều khiển Hyperlink

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 26

6. Listbox và DropdownList

ListBox và DropdownList là điều  khiển  hiển  thị  danh  sách  lựa  chọn mà người  dùng  có 

thể chọn một hoặc nhiều (chỉ dành cho ListBox). Các mục lựa chọn có thể được thêm vào danh 

sách thông qua lệnh hoặc ở cửa sổ thuộc tính (Property Windows).

Các thuộc tính: 

 AutoPostBack: Thuộc tính này qui định điều  khiển có được phép tự động PostBack  về

Server khi chỉ số của mục chọn bị thay đổi. Giá trị mặc định của thuộc tính này là False -không tự động Postback.

 Items : Đây là tập hợp chứa các mục chọn của điều khiển. Ta có thể thêm vào mục chọn 

vào thời điểm thiết kế thông qua cửa sổ ListItem Collection Editor, hoặc thông qua lệnh.

 Rows: Qui định chiều cao của ListBox theo số dòng hiển thị.

 SelectionMode:  Thuộc  tính  này  xác  định  cách  thức  chọn  các  mục  trong  ListBox. 

SelectionMode chỉ được phép thay đổi trong quá trình thiết kế, vào lúc thực thi chương 

trình, thuộc tính này chỉ đọc.

o Single: Chỉ được chọn một mục có trong danh sách (mặc định). 

o Multiple: Cho phép chọn nhiều lựa chọn.

Tìm hiểu về tập hợp Items

 Add: Thêm mục mới vào cuối danh sách, sử dụng phương thức Items.Add

Items.Add(<String>);

 Insert:  Thêm  mục  mới  vào  danh  sách  tại  một  vị  trí  nào  đó,  sử  dụng  phương  thức 

Items.Insert

Items.Insert(<index>,<String>);

 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(<Chuoi>);

Trong trường  hợp các đối tượng  Item  là  kiểu  chuỗi,  ta  truyền  vào  một  chuỗi để

xóa. Nếu có nhiều giá trị giống nhau trong danh sách, chỉ có mục chọn đầu tiên bị xóa.

 RemoveAt: Xóa một item tại vị trí index ra khỏi danh sách.

Items.RemoveAt(<index>);

o Clear: Phương thức Clear của tập hợp Items được dùng để xóa tất cả những Item có 

trong danh sách. Cú pháp

Items.Clear();

Xử lý mục chọn

Các thuộc tính sau sẽ giúp bạn xác định chỉ số, giá trị của mục đang được chọn. Trong 

trường hợp điều khiển cho phép chọn nhiều, ta duyệt qua các Item trong tập hợp Items, 

o Sử dụng 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.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 27

 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.

Ví dụ: Tạo Website Dulich  gồm 1 listbox, 2 label , 1 Button trong đó điều khiển Listbox là điều 

khiển danh sách lstKhu_dl:  SelectionMode=Multiple ;  Rows=4

Khi thiết kế:

Xử lý sự kiện:

    protected void Page_Load(object sender, EventArgs e)

    {

        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(object sender, EventArgs e)

    {    

      lbDiadanh.Text = "";

        for (int i = 0; i <= lstDiadanh.Items.Count - 1; i ++)

        {

            if (lstDiadanh.Items[i].Selected)

                lbDiadanh.Text += "<li>" + lstDiadanh.Items[i].Value;

        }

        /* Hoặc

        foreach (ListItem item in lstDiadanh.Items )

          {

         if (item.Selected)

             lbDiadanh.Text  += "<li>" + item.Value    ;

         } */

    }

Khi thi hành:

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 28

7. Checkbox, RadioButton

Các thuộc tính

 Checked: Cho biết trạng thái của mục chọn - có được chọn hay không

 TextAlign: Qui định vị trí hiển thị của điều khiển so với chuỗi văn bản.

 AutoPostBack: Thuộc tính này qui định điều  khiển 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. Giá trị mặc định của thuộc tính này 

là False - không tự động Postback.

 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.

Ví dụ: Nhóm các RadioButton Giới tính, Thu nhập, Nhóm Checkbox Ngoại ngữ

Danh sách các điều khiển

8. CheckBoxList, RadioButtonList

Hai điều khiển này được dùng để tạo ra một nhóm các CheckBox/Radio Button. Do đây 

là điều khiển  danh  sách  nên  nó  cũng 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 CheckbocList) vào Form 

 Chọn Edit Items

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 29

b. Các thuộc tính

 RepeatColumns: Qui định số cột hiển thị.

 RepeatDirection: Qui định hình thức hiển thị

o Vertical: Theo chiều dọc

o  Horizontal: Theo chiều ngang

 AutoPostBack: Thuộc tính này qui định điều  khiển 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. Giá trị mặc định của thuộc tính này 

là False - không tự động Postback.

c. Ví dụ

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

Khi thi hành:

Ví  dụ:  Bổ  sung  thêm  vào  Website  Dulich  1  trang  Thongtincanhan    gồm:  1  Textbox,  2 

RadioButton  giới  tính,  2  Checkbox  ngọai  ngữ,  3  radioButton  thu  nhập  listbox,  2  label  ,  1 

RadioButtonList Trình độ, 1 Button Đăng ký.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 30

Xử lý sự kiện:

protected void Button1_Click(object sender, EventArgs e)

    {

        string,gt="",,,;

            ten = txtTen.Text;

            if (rdtNu.Checked == true)

                gt = "Nữ";

            else

                gt = "Nam";

            if (chkAnh_van.Checked == true)

                ngoaingu = " Tiếng anh ";

            if (ChkPhap_van.Checked == true)

                ngoaingu = ngoaingu + " Tiếng pháp ";

            if (rdtThu_nhapA.Checked == true)

                thunhap = " 1 triệu ";

            else if (rdtThu_nhapB.Checked == true)

                thunhap = " từ 1 đến 3 triệu";

            else

                thunhap = " trên 3 triệu ";

            trinhdo = rdblistTrinhdo.SelectedItem.Value;

            lbThongtin.Text = "THÔNG TIN VỀ BẠN <li> Tên: " + ten 

+ "<li> Giới tính:" + gt + " <li> Ngoại ngữ :"

+ ngoaingu + "<li> Mức thu nhập:" + thunhap

                 + "<li> Trình độ:"  + trinhdo ;

 }

Khi thi hành:

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 31

II. Điều khiển kiểm tra dữ liệu

Trong phần này chúng ta sẽ tìm hiểu về các điều khiển được dùng để kiểm tra dữ liệu.

Như các bạn đã biết, 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.

i

ều Ví  dụ: Minh họa thuộc tính Display: Tại ô nhập lại mật khẩu, ta có 2 điều khiển kiểm tra dữ

liệu: một điều khiển kiểm tra không được phép rỗng (rfvNhap_lai), một điều khiển kiểm tra xem 

nhập lại mật khẩu có giống với mật khẩu đã nhập ở trên hay không.

rfvNhap_lai.Display = Static

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 32

rfvNhap_lai.Display = Dynamic

1. Điều khiển Required Field Validator

Điều khiển này được dùng để kiểm tra giá trị trong điều khiển phải được nhập.

Sử dụng điều khiển này để kiểm tra ràng buộc dữ liệu khác rỗng (bắt buộc nhập).

Thuộc tính

 InitialValue: Giá trị  khởi động.  Giá trị  bạn nhập vào phải  khác với giá trị của thuộc tính 

này. Giá trị mặc định của thuộc tính này là chuỗi rỗng.

2. Điều khiển Compare Validator

Điều khiển này được dùng để so sánh giá trị của một điều khiển với giá trị của một điều 

khiển khác hoặc một giá trị được xác định trước.

Thông qua thuộc tính Operator, chúng ta có thể thực hiện các phép so sánh như: =, <>, 

>, >=, <, <= hoặc dùng để kiểm tra kiểu dữ liệu (DataTypeCheck).

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.

Lưu ý: Trong trường hợp không nhập dữ liệu, điều khiển sẽ không thực hiện kiểm tra vi phạm.

Các thuộc tính

 ControlToCompare: Tên điều khiển cần so sánh giá trị.  Nếu bạn  chọn giá trị  của thuộc 

tính Operator = DataTypeCheck thì không cần phải xác định giá trị cho thuộc tính này.

 Operator: Qui định phép so sánh, kiểm tra kiểu dữ liệu

o Equal: = (Đây là giá trị mặc định)

o GreaterThan: >

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 33

o GreaterThanEqual: >=

o LessThan: <

o LessThanEqual: <=

o NotEqual: <>

o DataTypeCheck: Kiểm tra kiểu dữ liệu

 Type: Qui định kiểu dữ liệu để kiểm tra hoặc so sánh.

o String

o Integer

o Double

o Date

o Currency

  ValueToCompare: Giá trị cần so sánh. Trong trường hợp bạn xác định giá trị của cả 2 

thuộc  tính  ControlToCompare  và  ValueToCompare  thì  giá  trị  của điều  khiển được  qui 

định bởi thuộc tính ControlToCompare được ưu tiên dùng để kiểm tra.

3. Điều khiển Range Validator

Điều khiển này được dùng để kiểm tra giá trị trong điều khiển phải nằm trong đoạn [min-max]   Sử dụng điều khiển này để kiểm tra ràng buộc miền giá trị của dữ liệu.

Lưu ý: Trong trường hợp không nhập dữ liệu, điều khiển sẽ không thực hiện kiểm tra vi phạm.

Các 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 dữ liệu 

sau:

o String

o Integer

o Double

o Date

o Currency

4. Điều khiển Regular Expression Validator

Điều khiển này được dùng để kiểm tra giá trị của điều khiển phải theo mẫu được qui 

định trước: địa chỉ email, số điện thoại, mã vùng, số chứng minh thư, …

Lưu ý: Trong trường hợp không nhập dữ liệu, điều khiển sẽ không thực hiện kiểm tra vi phạm.

Thuộc tính:

 ValidationExpression: Qui định mẫu kiểm tra dữ liệu.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 34

Bảng mô tả các ký hiệu thường sử dụng trong Validation Expression

5. Điều khiển Custom Validator

Đ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.

6. Điều khiển Validation Summary

Điều khiển này được 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.

Các thuộc tính

 HeaderText: Dòng tiêu đề của thông báo lỗi

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 35

 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. Giá trị mặc định của thuộc tính này là False - không hiển thị.

 ShowSummary: Qui định bảng thông báo lỗi có được phép hiển thị hay không. Giá trị

mặc định của thuộc tính này là True - được phép hiển thị.

Ví dụ: Tạo Website Dangkythanhvien Sử dụng các điều khiển ValidateControl. 

Trong ví dụ dưới đây, chúng ta thực hiện 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.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 36

Thuộc tính Text của các điều khiển kiểm tra dữ liệu đều là: (*)

Xử lý sự kiện:

Private Sub butDang_ky_Click(…)…

lblThong_bao.Text = "Đăng ký thành công";

End Sub

Các thông báo lỗi xuất hiện trên màn hình nhập liệu khi dữ liệu nhập không hợp lệ.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 37

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ệ:

Nếu tất cả đều hợp lệ

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 38

III. Một số điều khiển khác

1. Điều khiển Literal

Tương tự như điều khiển Label, điều khiển Literal cũng được sử dụng để hiển thị chuỗi 

văn bản trên trang Web.

Nếu  muốn  hiển  thị  một  chuỗi văn bản  trên  trang Web,  chúng  ta  có  thể đánh nội  dung 

trực tiếp  vào trang Web  mà  không  cần  phải  sử  dụng điều  khiển.  Chỉ  sử  dụng các điều  khiển 

như Label, Literal để hiển thị khi cần thay đổi nội dung hiển thị ở phía server.

Điểm khác biệt chính giữa Label và Literal là khi hiển thị nội dung lên trang web (lúc thi 

hành), điều khiển Literal không tạo thêm một tag Html nào cả, còn Label sẽ tạo ra một tag span 

(được sử dụng để lập trình ở phía client).

Ví dụ:

Khi thiết kế.

Khi thi hành

Lệnh xử lý:

    protected void Page_Load(object sender, EventArgs e)

    {

        Label1.Text="<b>Đây là chuỗi ký tự trong label</b>";

        Literal1.Text = "<i> Đây là chuỗi ký tự trong Literial</i>";

    }

Chọn chức năng từ thực đơn View | Source trên Browser:

<span><b>Đây là chuỗi ký tự trong 

label</b></span><br />

<i> Đây là chuỗi ký tự trong Literial</i>

2. Điều khiển AdRotator

Điều khiển AdRotator được dùng để tạo ra các banner quảng cáo cho trang web, nó tự

động thay đổi các hình ảnh (đã được thiết lập trước) mỗi khi có yêu cầu, PostBack về server.

a. Thuộc tính

 AdvertisementFile:  Tên  tập  tin  dữ  liệu (dưới  dạng xml) cho điều  khiển. Dưới đây là cú 

pháp của tập tin Advertisement (*.xml)

<Advertisements>

<Ad>

<ImageUrl>Đường dẫn đến tập tin hình ảnh</ImageUrl>

<NavigateUrl>Đường dẫn đến liên kết</NavigateUrl>

<AlternateText>Chuỗi văn bản được hiển thị như Tooltip</AlternateText>

<Keyword>Từ khóa dùng để lọc hình ảnh</Keyword>

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 39

<Impressions>Tần suất hiển thị của hình ảnh</Impressions>

</Ad>

</Advertisements>

Lưu ý: Phải nhập đúng các giá trị trong tag như mẫu trên. Các giá trị trong tag có phân biệt chữ

Hoa chữ thường. Trong đó

 ImageUrl: Đường dẫn đến một tập tin hình ảnh

 NavigateUrl: Đường dẫn đến trang web sẽ được liên kết đến khi người dùng nhấn vào 

hình ảnh đang hiển thị.

  AlternateText:  Giá  trị  này  sẽ được  hiển  thị  nếu như đường  dẫn đến  tập  tin  hình  ảnh 

(qua thuộc tính NavigateUrl) không tồn tại. Đối với một số trình duyệt, tham số này được 

hiển thị như ToolTip của hình quảng cáo.

 Keyword: Được dùng để  phân loại  các quảng cáo.  Thông  qua giá trị  này, ta có thể  lọc 

các quảng cáo theo một điều kiện nào đó.

 Impressions: Tham số này quyết định tầng suất hiển thị của hình ảnh. Giá trị  này càng 

lớn, khả năng hiển thị càng nhiều.

 KeywordFilter: Được dùng để chọn lọc và hiển thị những hình quảng cáo có giá trị của 

tham số Keyword = giá trị của tham số này.

Giá trị của tham số này mặc định không được thiết lập  Hiển thị tất cả những hình có 

trong tập tin XML. Trong trường hợp nếu không có hình nào có giá trị Keyword bằng giá trị

của thuộc tính này, sẽ không có hình nào được hiển thị.

 Target: Qui định cửa sổ hiển thị trang liên kết

 _blank: Trang liên kết sẽ được mở ở một cửa sổ mới.

 _self: Trang liên kết sẽ được mở ở chính cửa sổ chứa điều khiển.

  _parent: Trang liên kết sẽ được mở ở cửa sổ cha.

b. Sự kiện

  AdCreated: Xảy ra khi điều khiển tạo ra các quảng cáo.

Ví dụ: Tạo Website  Quangcao (Tạo Quảng cáo 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

o Sử dụng chức năng Add New Item… từ thực đơn ngữ cảnh

o Chọn XML File trong hộp thoại Add New Item

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 40

o Nhập vào cú pháp qui định  cho  tập  tin  Quangcao.xml  (theo  cú  pháp  của  tập  tin 

Advertisement)

<?xml ?>

<Advertisements>

  <Ad>

    <ImageUrl>Pictures\Baihatviet.gif</ImageUrl>

<NavigateUrl>http://www.Baihatviet.net</NavigateUrl>

    <AlternateText>Web Nhạc bài hát 

việt</AlternateText>

    <Keyword>Music</Keyword>

    <Impressions>10</Impressions>

  </Ad>

<Advertisements>

o Chuyển màn hình qua trang Data, nhập liệu trực tiếp trên màn hình này

 Click phải màn hình đang code chọn View Data Grid

Nhập thêm các liên kết quảng cáo sau:

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 41

Bước 3. Thiết lập thuộc tính cho điều khiển adQuangcao

o AdvertisementFile: Quangcao.xml

o Target: _blank (Khi nhấn vào sẽ hiển thị liên kết ở cửa sổ mới.)

o KeywordFilter: Không thiết lập (Hiển thị tất cả các hình ảnh)

Bước 4. Thi hành ứng dụng

3. Điều khiển Calendar

Một điều chắc chắn rằng điều khiển Calendar đã quá quen thuộc với các bạn lập trình 

ứng  dụng trên  windows,  nó  có  giao  diện  trực  quan,  vì  vậy, người  dùng  có  thể  chọn  ngày  dễ

dàng.

a. Thuộc tính

 DayHeaderStyle: Qui định hình thức hiển thị tiêu đề của các ngày trong tuần

 DayStyle: Qui định hình thức hiển thị của các ngày trong điều khiển.

 NextPrevStyle: Qui định  hình  thức  hiển  thị  của tháng trước/sau  của tháng đang được 

chọn.

 SeleltedDayStyle: Qui định hình thức hiển thị của ngày đang được chọn.

 SeleltedDate: Giá trị ngày được chọn trên điều khiển

 TitleStyle: Qui định hình thức hiển thị dòng tiêu đề của tháng được chọn

 TodayDayStyle: Qui định hình thức hiển thị của ngày hiện hành (trên server).

 WeekendDayStyle: Qui định hình thức hiển thị của các ngày cuối tuần (thứ 7, chủ nhật)

 OtherMonthDayStyle: Qui định hình thức hiển thị  của các ngày không  nằm  trong tháng 

hiện hành.

b. Sự kiện

 SelectionChanged: Sự kiện này xảy ra khi bạn chọn một ngày khác với giá trị ngày đang 

được chọn hiện hành

 VisibleMonthChanged: Xự kiện này xảy ra khi bạn chọn tháng khác với tháng hiện hành

Ví dụ: Tạo trang Calendard

Bước 1: Tạo Calendard vào trang

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 42

Bước 2: Chọn Auto Format (Chọn mẫu định dạng)

Khi thiết kế

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(object sender, EventArgs e)    {

        lbThongbao.Text ="Bạn đang chọn " +  Calendar1.SelectedDate.ToString("dd/MM/yyyy");

    }

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 43

Khi thi hành

4. Điều khiển File Upload.

Điều khiển FileUpload cho phép người sử dụng Upload file từ chính ứng dụng Web của

mình. File  sau  khi  Upload  có  thể  lưu  trữ ở  1  nơi  nào  đó  có  thể  là  trên  ổ  cứng  hay  trong

Database. Điều khiển FileUpload hỗ trợ các thuộc tính sau:

Thuộc tính Ý nghĩa

Enable Cho phép bạn vô hiệu hoá điều khiển FileUpload.

FileBytes Cho phép lấy nội dung file đã được upload như một mảng Byte.

FileContent Cho phép 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ị đúng khi File được Upload

Điều khiển FileUpload hỗ trợ các phương thức

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

o SaveAs: Cho phép bạn lưu file được upload lên hệ thống.

Thuộc  tính  PostedFile  của điều khiển FileUpload  cho  phép lấy thông  tin  từ  File  upload

được bao bọc trong đối tượng HttpPostedFile. đối tượng này sẽ đưa thêm thông tin về Upload

file.

Lớp HttpPostedFile gồm các thuộc tính sau:

o ContentLength: Lấy về kích thước của File Upload tính theo byte

o ContentType: Lấy kiểu MIME của File Upload

o FileName: Cho phép lấy tên của file được upload.

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

Lớp HttpPostedFile chỉ hỗ trợ phương thức

o SaveAs: Cho phép bạn lưu file được upload lên hệ thống.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 44

Ví dụ: Trong ví dụ sau, chúng ta sẽ thực hiện Upload tập tin lên server, cụ thể hơn, tập tin vừa 

Upload sẽ được lưu trong thư mục Upload.

Màn hình ở chế độ thiết kế

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

    }

Khi thi hành:

Nếu thành công

5.  Điều khiển Panel và PlaceHolder

Hai điều khiển Panel và PlaceHolder được sử dùng để chứa các điều khiển khác. Thuộc 

tính thường dùng  của 2 điều  khiển  này  là  Visible.  Nếu  giá  trị  của  thuộc  tính  này  =  True,  các 

điều khiển  chứa bên trong  sẽ được hiển thị, ngược lại (Visible = False), không có điều  khiển 

nào chứa bên trong được hiển thị.

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.

Các thuộc tính:

 DefaultButton:  Cho  phép  bạn định  nghĩa một  button  mặc  định  trong  panel  mà 

button mặc định này sẽ được thực hiện khi bạn nhấn phím Enter.

 Direction: Cho phép bạn gán hoặc thiết đặt hướng hiển thị nội dung được đưa ra 

trong panel, có thể là các giá trị:NotSet, LeftToRight, and RightToLeft.

 GroupingText: Cho phép bạn trình bày Panel như 1 Fieldset với một chú giải riêng 

biệt.

 HorizontalAlign:  Cho phép  bạn chỉ ra hướng  ngang thể  hiện  nội  dung của  panel 

và nó có thẻ là các giá trị: Center, Justify, Left, NotSet, and Right.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 45

 ScrollBars: Cho phép bạn hiển thị scrollbars khi bạn cố định chiều cao hoặc chiều 

rộng của panel và nội dung trong panel vượt quá độ rộng hoặc độ cao đó, nó có 

thể là các giá trị: Auto, Both, Horizontal, None, and Vertical.

Ví dụ: Tao trang sử dụng Panel gồm: 1 panelpage chứa 1 panelsothich va 1 panel nghenghiep, 

trong panel sothich có vài checkbox, trong panel nghề nghệp hiện thị 100 nghề  (Nghề 1, Nghề

2, . . .) được điền vào khi trang được load.

Thêm vào panelpage 2 check box: chkSothich và chkNghenghiep. Khi trang hiện thị  

người dùng đánh check hoặc bỏ check vào checkbox nào thì panel tương ứng sẽ hiện hoặc ẩn.

Thiết kế:

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;

    }

Thi hành:

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 46

6. Điều khiển hiển thị các trang – MultiView 

Điều khiển  MultiView  cho  phép  bạn  ẩn  hoặc  hiện  các  phần  khác  nhau của  trang Web,

điều khiển này tiện ích khi bạn tạo một TabPage. Nó thực sự tiện ích khi bạn muốn 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, bạn sử dụng Multiview

để lựa chọn các điều khiển View để trình bày.

Điều khiển MultiView hỗ trợ các 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 bạn lấy về tập hợp các điều khiển View chứa đựng trong điều 

khiển MultiView.

Điều khiển MultiView hỗ trợ hai 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 bạn thiết lập điều khiển View được hiên thị.

Và MultiView hỗ trợ sự kiện sau:

 ActiveViewChanged: Xảy ra khi điều khiển View được lựa chọn

Ví  dụ:  Tạo 1  website MultiView:  Sử  dụng  MultiView kết  hợp  với điều khiển  Menu để  tạo  một 

TabPage

Thiết kế

 Trên trang thiết kế tạo: 1 Multiview1  bên trong gồm 3 View (View1 View2, View3)

 Tạo Control Menu1 từ nhóm Control Navigation : Gồm 3 Tab (Tab1, Tab2, Tab3)

o Tạo Control Menu vào Form

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 47

o 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)

o Bổ sung nội dung vào các view tương ứng

Xử lý sự kiện

<script>

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){

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 48

MultiView1.ActiveViewIndex = 0;

}

}

</script>

Thi hành:

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 49

III. Đối Tượng View State

Đố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, các trang web khi được tạo sẽ  cho  phép sử

dụng đối tượng ViewState thông qua thuộc tính EnableViewState (của trang web) = True.

Gán giá trị cho ViewState:

ViewState("Tên trạng thái") = <giá trị>;

Nhận giá trị từ đối tượng ViewState:

<biến> = ViewState("Tên trạng thái");

Ví dụ:

Xử lý sự kiện:

    protected void btDem_Click(object sender, EventArgs e)

    {

     lbThongbao.Text =  

Convert.ToString(int.Parse(lbThongbao.Text)+1);

    }

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 chúng ta 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.

Chọn chức năng View | Source từ browser

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 50

IV. Thiết kế Website với MasterPage

MasterPage là cách để thiết kế layout chung cho website. Ví dụ website của bạn có layout 

gồm 5 phần banner, footer, left, right Và content(phần chứa nội dung hiển thị cho các tin). Ta 

thấy rằng trên trang web có các phần có cách trình bày không thay đổi trong quá trình duyệt tin. 

banner, footer, left, right: bạn có thể để các phần này vào một MasterPage và tất các trang web 

trong website của bạn sẽ áp dụng layout này thông qua contentpage

Tạo MasterPage

Tạo MasterPage giống với tạo các trang aspx bình thường nhưng trên hộp Add New 

Item bạn chọn MasterPage bạn thấy dưới ô đặt tên phần mở rộng của nó sẽ là Master. Bạn có 

thể tạo nhiều MasterPage cho ứng dụng web của mình.

Xóa Place Holder hiện có  và dùng table thiết kế layout như sau:

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 51

 Tạo phần banner (Phần trên)

 Tạo phần Menu (Cột trái)

 Tạo phần quảng cáo (Cột phải)

 Tạo phần footer (Phần dưới)

 Tạo phần nội dung (Giữa): Đặt ContetPalceHolder

Sử dụng trang Masterpage để thiết kế các trang

Tạo mới trang web Default.aspx và trang Tintuc.aspx

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 52

Điều chỉnh MasterPage 

Khi có bất kỳ sự điều chỉnh nào trên trang  Masterpage thì các trang được tạo từ trang 

Masterpage sẽ tự cập nhật.

Ví  dụ: Bổ sung vào  phần trái của trang Masterpage 2 nhãn  liên  kết (Hyperlink) mơ 2 

trang tương ứng đã tạo (Default.aspx và Tintuc.aspx)

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 53

Kết quả khi thi hành

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 54

Chương 3

KẾT NỐI CƠ SỞ DỮ LIỆU TRONG ASP.NET

 Sử dụng các thành phần kết nối CSDL như : SQLDataSource, Access Data 

Source, XML Data Source, . . .

 Cách truyền tham số vào các điều khiển 

I. SQL DATA SOURCE

1. Giới thiệu

Điều khiển SqlDataSource dung để  kết  nối  CSDL nếu  dữ  liệu  của  ứng  dụng được lưu 

trữ trong các hệ quản trị CSDL như: SQLServer, Ocracle Server, . . .

Chọn đối tượng CSDL như Table, View hay câu lệnh truy  vấn SQL và có thể  khai báo 

điều  kiện  lọc  dữ  liệu  (Where)  với  nhiều  cách  như:  giá  trị  định  sẳn,  đối  tượng  Session, 

Request.form, Request.QueryString . . .

2. Kết nối và trình bày CSDL

a. Tạo kết nối

Tạo trang aspx và kéo điều khiển SQLDataSource từ ngăn data trên thanh Tollbox

Chọn tiếp vào Conigure Data Source

Nếu trước đó đã có tạo kết nối CSDL thì chọn vào Combobox để chọn CSDL đã kết nối. 

Để tạo mới kết nối CSDL thì chọn New Connection

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 55

Tạo kết nối CSDL mới

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 56

 Khai báo các thông số cho SQLServer và chọn CSDL cần kết nối

 Chọn Next

 Chọn Next

 Xác định nguồn dữ liệu từ Table, Quyery hay câu lệnh truy vấn có thể chỉ

định điều kiện lọc dữ liệu và sắp xếp.

Chỉ định các cột dữ liệu

Kiểm tra kết quả kết nối

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 57

Khai báo điều kiện mệnh đề Where (Nếu có)

Khai báo sắp xếp (Nếu cần)

 Chọn Test Query để kiểm tra kết quả nguồn dữ liệu.  Chọn Finish 

để hòan thành

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 58

Phần mã của giao tiếp này có được  như sau:

<asp:SqlDataSource

ConnectionString="<%$ConnectionStrings:QLBansachConnectionString 

%>"

SelectCommand="SELECT [MaTG], [TenTG], [DiachiTG], [DienthoaiTG] 

FROM [TACGIA] ORDER BY [TenTG]">

</asp:SqlDataSource>

b. Trình bày dữ liệu lên trang

Để trình bày dữ liệu trên Webform sau khi thực hiện kết nối CSDL ta sẽ  sử dụng trình 

điều khiển lưới Gridview.

Tạo Gridview vào trang từ ngăn Data trên Thanh Toolbox

Chọn Choose DataSource là: SqldataSource1 đã tạo

Ghi chú:

 Chọn mẫu định dạng lưới: Auto Format

 Để tạo phân trang dữ liệu: Đánh dấu chọn : Enable Paging

 Để cho phép sắp xếp khi click vào tiếu đề cột đánh dấu chọn: Enable 

Sorting

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 59

Thi hành tarng DSTacgia.aspx:

 Click tiêu đề lưới để kiểm tra tính sắp xếp

 Click số thứ tự trang (Cuối lưới) để kiểm tra tính phân trang

3. Điều khiển SQL Data Source và tham số.

a. Điều khiển SQL DataSource và Request.QueryString

Để lọc dữ liệu trong nguồn 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 trang.)

 Tạo trang cho phép truyền tham số qua liên kết.

Khi click vào liên kết trang liên kết có địa chỉ kèm theo tham số dạng như sau:

http://localhost:49222/KetnoiCSDL/SachNXB.aspx?MaNXB=3

Thực hiện:

o Tạo trang NhaXB.aspx với nguồn dữ liệu là tòan bộ danh mục nhà xúât bản được 

trình bày trên lưới GridView như sau

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 60

o Điều chỉnh bổ sung và lưới 1 cột liên kết

Chọn Edit Column từ GiridView Task

Thực hiện bổ sung 1 cột dạng HyperLinkField

Với các thuộc tính:

 HeaderText: Nhãn tiêu đề cột

 Text: Nhãn hiện thị trong cột (Giống nhau trên tất cả các ô) Hoặc

 DatTextField: Dùng giá trị từ 1 field chỉ định trong nguồn dữ liệu

 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}

Trong đó giá trị tham số  ghi dưới dạng chỉ số các tham số được khai báo 

trong thuộc tính DataNavigateUrlFields bắt đầu là 0 và cách nhau là dấu ,

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 61

Thi hành:

 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).

Chỉ định nguồn dữ liệu

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 62

Khai báo điều kiện (Where)  với tham số là QueryString. Đặt tên QueryStringField là: 

MaNXB   Add

Thi hành :

Trang NhaXB.aspx

Click vào liên kết Xem sách của 1 nhà xuất bản (VD: Với MaNXB là 2) 

Các sách của Nhà xuất bản tương ứng sẽ được trình bày

b. Điều khiển SQL DataSource và Request.Form

Để lọc dữ liệu trong nguồn dữ liệu theo điều kiện thì giá trị tham số là giá trị trên form.

Tạo trang Lietkesach.aspx gồm:

o 1 Control Textbox chỉ định thuộc tính ID: MaNXB

o 1  Button  chỉ định  thuộc  tính  PostbackURL:  ~/Lietkesach.aspx  (Chính  trang  thiết 

kế)

o Tạo SqlDataSource với nguồn dữ liệu như sau:

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 63

o Điều kiện cho nguồn dữ liệu

Với giá trị điều kiện Form field là: MaNXB (tên Textbx trên trang)

Thực thi:Nhập MANXB vào textbox Click nút Xem

c. Điều khiển SQL DataSource và điều khiển trình chủ

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 64

Ta 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  Chudesach.aspx  thực  hiện  liệt  kê  danh  mục  sách  có  chủ đề được 

chọn từ điều khiển trình chủ DropdownList.

 Thiết kế Dropdownlist (ddlChude) với nguồn dữ liệu cho từ Table Chude

o Tạo SQL DataSource (SqlDataSource1) cho DropDownList Với nguồn dữ liệu cho 

DropDownList là Table Chude:

o Tạo DropDownList vào trang đặt thuộc tính 

 ID: ddlChude

 DataSourceID: SqlDataSource1

 DataTextField: TenCD (Field hiện thị)

 AutoPostBack: True

 DataValuefield: MaCD (Field giá trị để truyền tham số)

 Tạo GridView (GridView1) Với nguồn dữ liệu từ Table Sach

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 65

Và tham số điều kiện (Where)

o Thi hành: Chọn 1 chủ đề sách từ DropdownList thì các sách tương ứng của chủ

đề sẽ hiển thị.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 66

d. Điều khiển SQL DataSource và thủ tục nội tại

Tương tự như trường  hợp  kết  nối  CSDL  bằng  phát  biểu  SQL  ta  có  thể  sử  dụng điều 

khiển kết nối CSDL SqlDatasource để truy cập CSDL SQL Server bằng thủ tục nội tại (Stored 

Procedure)

Ví  dụ  trong  CSDL  SQLServer  QLBanSach  ta  tạo  1  thủ  tục  (Stored  Procedure) 

Sachtheogia cho phép liệt kê các quyển sách với 2 tham số cho Procedure là Giatu và Giaden.

Use QLBansach

Create Proc Sachtheogia

@Giatu int, @Giaden Int

as

Select Masach, Tensach, Dongia, Mota, Tenchude, TenNXB,Ngaycapnhat

From sach s, Chude c, nhaxuatban n

Where  c.MaCD=s.MaCD  and  n.MaNXB=s.MaNXB  and  Dongia  Between  @Giatu  and 

@Giaden

Lưu ý : Trong thủ tục có khai báo 2 tham số tên @Giatu và @Giaden

Khi cấu hình Data Source cho điều khiển SqlDataSource

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 67

Ta chọn : Specify a Custom SQL satament or stored procedure

Tiếp tục chọn Stored Procedure cần kết nối.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 68

Xác định giá trị cho tham số của Procedure có thể là: Giá trị trực tiếp, QueryString, Form, 

hay  điều  khiển  trình  chủ  (Ví  dụ  sử  dụng  điều  khiển  trình  chủ  DropDownlist1, 

DropDownList2 tương ứng 2 tham số Giatu và Giaden)

Thi hành:

Hãy Click chọn Giá từ DropDownList1 và Giá đến DropDownList2thì các sách thõa điều 

kiện giá sẽ hiện thị tương ứng vào GridView

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 69

II. KẾT NỐI CƠ SỞ DỮ LIỆU VỚI ACCESS, XML

1. Điều khiển Access Data Source 

Tương tự như điều khiển kết nối cơ sở dữ liêu SQLDataSource dùng để kết nối với cơ 

sở dữ liệu SQLserver điều khiển kết nối cơ sở dữ liệu AccessDataSource dùng để kết nối 

với cơ sở dữ liệu Access MDB).

Như vây khi có nhu cấu kết nối với CSDL Acces ta dùng điều khiển AccessDataSource 

từ ngăn Data trên thanh Toolbox.

Ví  dụ  thiết  kế  trang  DanhsachKH.aspx  truy  xuất  và  hiện  thị  Danh  sách  khách  hang  từ

Table khachhang của CSDL QLBansach.mdb (Access)  

 Tạo AccessDataSource vào trang

 Chọn Configure Data Source . . .: Để thực hiện kết nối

 Chọn Nút Browse để  tìm  và  chọn  CSDL  Access  :  QLBansach  (Thông thướng được  tổ

chức lưu trữ trong thư mục App_Data của ứng dụng)

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 70

 Chọn Ok và chọn Next để tiếp tục

 Xác định nguồn dữ liệu (Khai báo điều kiện và sắp xếp nếu có) tiếp tục chọn Next

 Chọn Test Query để xem kết quả, chọn Finish để hòan tất

 Tạo điều khiển lưới gridView và chỉ định nguồn dữ liệu là AccessdataSource1 vừa tạo.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 71

 Thi hành xem kết quả

Ghi chú:

Để truyền giá trị cho các tham số theo các hình thức: Form, QueryString, Control, . . . ta 

khai báo tương tự như sử dụng điều khiển SQLDataSource .

2. Điều khiển XML DataSource 

Ngòai các điều khiển kết nối CSDL SQLDataSource, AccessDataSource chúng ta có thể

sử dụng điều khiển kết nối CSDL định dạng XML.

Tuy  nhiên  khác  với  SQLDataSource,  AccessDataSource  khi  sử  dụng  điều  khiển 

XMDataSource ta cần có tập tin XML.

Sử dụng điều khiển XMLDataSource từ ngăn Data trên thanh Toolbox.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 72

Ví dụ thiết kế trang DanhsachSV.aspx hiện thị từ tập tin XML  (DanhsachSV.XML)

 Tạo tập tin DanhsachSV.XML

<?xml?>

<DSSinhvien>

  <Sinhvien

Diachi="123 Trần Hưng Đạo, Q5" />

  <Sinhvien

Diachi="45 Hai Bà Trưng, Q1" />

  <Sinhvien

Diachi="31 Lý Thường Kiệt,TB"/>

</DSSinhvien>

 Triệu gọi trang DanhsaxhSV.xml lên trình duyệt có kết quả như sau:

 Tạo điều khiển XMLDataSource vào trang DanhsachSV.aspx

 Chọn Configure Data Source . . .: Để thực hiện kết nối

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 73

 Chọn Nút Browse để tìm và chọn tập tin DanhsachSV.

 Chọn Ok để hòan tất

 Tạo điều khiển lưới gridView và chỉ định nguồn dữ liệu là AccessdataSource1 vừa tạo.

 Thi hành xem kết quả

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 74

III. KẾT NỐI VÀ CẬP NHẬT CSDL

SQLDataSource và Access DataSource ngoài chức năng thong thường cho phép tạo kết 

nối CSDL và truy xúât dữ liệu còn cho thực hiện các thao tác cập nhật dữ liệu như: Thêm, Xóa, 

Sửa (Insert, Update. Delete)

Ví dụ minh họa: Thực hiện chức năng “Nhập sách mới” vào Table Sach CSDL  trong 

QLBansach.

Trang web được thiết kế với các Control tương ứng dư liệu cần nhập mới vào Table 

Sach

 Tạo  Control  SqlDataSource  vào  trang   Tạo  kết  nối  với  CSDL  QLBansach  cho 

SqlDataSource

o Chọn “Specify columns from a table or view” 

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 75

o Name: Sach

o Columns : chọn tất cả các cột  cần nhập mới dữ liệu tương ứng 

o Chọn Advanced … Chọn “Generate INSERT, UPDATE, and DELETE statements” 

(Tự động tạo các câu truy vấn INSERT, UPDATE, DELETE)

o Click Next  Finish

o Phải chuột SqlDataSource1, chọn Property, chọn thuộc tính

o  “InsertQuery” : Câu lệnh nhập liệu

o DeleteQuery: Câu lệnh xóa dữ liệu

o UpdateQuery: Câu lệnh cập nhật sự điều chỉnh dữ liệu.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 76

Liên kết 1 cột trong bảng với 1 control trong màn hình (ví dụ cột Tensach liên kết với 

control txtTensach) 

o Parameters : MaBanTin  (tên field cần nhập liệu)

o Parameter source : Control 

o ControlID : txtMaBanTin (Tên Control chứa DL cần them)

Tương tự cho các cột khác 

Trong trường hợp cột Hinhminhoa thì bấm vào “Show advanced properties” 

o PropertyName chọn FileName

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 77

o Viết hàm xử lý sự kiện click cho nút Lưu 

protected void btnLuu_Click(object sender, EventArgs e)

    {

        SqlDataSource1.Insert();

    }

o Chạy và kiểm tra chương trình.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 78

Chương 4

CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU

 Sử dụng các điều khiển GridView, Data List và Repeater để hiển thị dữ liệu.

I. Điều khiển GridView

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 VS .Net trong quá trình thiết kế.

1. Tạo GridView vào trang

Kéo Control GridView vào trang

2. Định dạng tự động

Thực  hiện  chọn  những  mẫu định  dạng  có  sẳn quy định  về  khung  viền  màu  nên  bằng 

cách Chọn Auto Format từ khung DataGrid Task 

3. 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 Access, SQLServer, . . 

 Trong cửa sổ DataGrid Task tại mục Choose Data Source chọn : New Data Source

Chèn them cột mới

Điều chỉnh các cột

Kết nối nguồn dữ liệu

Tạo các cột tùy biến

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 79

o Với CSDL Access

Xác định  nguồn  dữ  liệu  từ  Table,  Quyery  hay  câu  lệnh  truy  vấn  có  thể  chỉ định 

điều kiện lọc dữ liệu và sắp xếp.

Với CSDL Access

Tìm chọn tập tin CSDL Access

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 80

Chọn Test Query để kiểm tra kết quả nguồn dữ liệu.  Chọn Finish để hòan 

thành

o Với CSDL SQLServer

Khai báo tham số điều kiện

Chỉ định sắp xếp

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 81

   Khai báo các thông số và chọn CSDL cần kết nối

Với CSDL SQLServer 2000/2005

Tạo kết nối CSDL mới

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 82

 Chọn Ok

 Xác định nguồn dữ liệu từ Table, Quyery hay câu lệnh truy vấn có thể chỉ

định điều kiện lọc dữ liệu và sắp xếp.

Kiểm tra kết quả kết nối

Khai báo tham số điều kiện

Chỉ định sắp xếp

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 83

- Chọn Test Query để kiểm tra kết quả nguồn dữ liệu.  Chọn Finish để hòan thành

Thi hành xem kết quả:

4. Thêm cột

 Trong cửa sổ DataGrid Task chọn : Add New Column

 Chọn Loại field cần tạo : BoundField

 Khai báo tiêu đề côt : Header Text

 Chỉ định tên field dữ liệu: DataField

 Ok hòan thành

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 84

5. Hiệu chỉnh, Tạo mới các cột

 Trong cửa sổ DataGrid Task chọn : Edit Column

 AvailableFields: Chọn lọai Field liên kết dữ liệu

o BoundField: Cột có liên kết với nguồn dữ liệu dạng Textbox.

o Checkbox Field: Cột có liên kết với nguồn dữ liệu dạng Checkbox.

o Hyperlink Field: Cột có liên kết dữ liệu dạng liên kết.

o Button Field: Cột dạng nút lệnh

o CommandField:  Cột  dạng  nút  lệnh  đã  được  thiết  kế  sẵn.  Điều  khiển 

GridView cung cấp cho chúng ta 3 loại cột dạng này:

 Select: Nút lệnh chọn dòng dữ liệu

 Edit,  Cancel,  Update:  Các  nút  lệnh  hỗ  trợ  chức năng cập  nhật  dữ

liệu trực tiếp trên lưới.

 Delete: Nút lệnh xóa dòng dữ liệu

Chúng ta sẽ có dịp tìm hiểu kỹ hơn về các nút lệnh này trong phần 

Cập nhật dữ liệu trực tiếp trên lưới.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 85

o TemplateField: Cột do người dùng tự thiết kế. Đây là loại cột có khả năng 

làm việc khá linh họat. 

Ví  dụ  bạn  cần  hiển  thị  danh  sách  khách  hàng.  Tại  cột  Phái,  bạn 

muốn  hiển  thị dạng  Nam/Nữ. Chúng  ta  sẽ  tìm  hiểu sâu hơn về  Template 

Column ở phần sau.

 BoundColumn properties: Qui định thông tin chi tiết cho các cột

o HeaderText, Footer Text: Thông tin tiêu đề trên/dưới của cột

o Header Image: Hình hiển thị trên tiêu đề cột (thay thế thông tin tiêu đề cột - Header 

Text).

o Sort Expression: Biểu thức sắp xếp của cột.

o Visible: Qui định cột có được hiển thị hay không.

o DataField: Qui định tên field hay tên thuộc tính của đối tượng dữ liệu cần hiển thị.

o Data formatting expression: Biểu thức định dạng dữ liệu.

Mẫu định dạng: {0:<chuỗi định dạng>}. Ví dụ:

+ Định dạng số: {0:000.00}, {0:0.##}

+ Định dạng ngày giờ: {0:dd/MM/yyyy}, {0:hh/mm/ss tt}

 Convert this Field into a Template Column: Chuyển cột hiện hành thành cột dạng Template 

Column.

6. Thiết lập các thuộc tính định dạng lưới

Để thực hiện các thao tác thiết lập các thuộc tính, chúng ta chọn GridView  Properties.

 Hiện / Ẩn : Header / Footer - Phần đầu và chân của GridView

o Show header: Qui định dòng tiêu đề trên có được phép hiển thị hay không. (mặc 

định là có hiển thị dòng tiêu đề)

o Show footer: Qui định dòng tiêu đề dưới có được phép hiển thị hay không. (mặc 

định là không hiển thị dòng tiêu đề dưới)

 Định dạng dòng Header/Footer: HeaderStyle / FooterStyle

 Định dạng dòng dữ liệu lẽ/chẵn: RowStyleAlternatingRowStyle

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 86

 Sắp xếp: AllowSorting

Allow  sorting:  Có  cho  phép  sắp  xếp  dữ  liệu  hay  không.  (mặc định  là  không  cho 

phép sắp xếp)

 Phân trang: AlowPaging

o Định dạng cho phân trang

 Page size: Qui định số dòng của mỗi trang.

 Possition: Qui định  vị  trí  hiển  thị  của  bộ  nút  di chuyển.  Ở  phía trên  thanh 

tiêu đề, ở phía dưới hay cả hai.

 Mode: Qui định  hình thức hiển thị  của bộ  nút  di chuyển. Hiển thị  dạng số

trang hay là các chuỗi ký tự đại diện (Next page/Previous page button text). 

Trong trường  hợp  hiển thị  dạng  số, Numeric buttons qui định số  nút  lệnh 

được hiển thị tối đa.

Google hiển thị kết quả được phân trang theo dạng số

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 87

II. Điều khiển DataList

1. Sử dụng DataList để hiển thị dữ liệ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).

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 88

Sử dụng DataList hiển thị thông tin sách

Một số thuộc tính cần chú ý của DataList

 RepeatDirection: Qui định hướng hiển thị dữ liệu

o Horizontal: Hiển thị dữ liệu theo chiều ngang

o Vertical (mặc định): Hiển thị dữ liệu theo chiều đứng

 RepeatColumns: Qui định số cột hiển thị của DataList

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.

Chọn chức năng thiết kế cho DataList

Ghi chú: 

Trong quá trình thực hành, để công việc thiết kế được dễ dàng, các bạn thực hiện thiết 

kế ở bên ngoài điều khiển DataList. Sử dụng Table để định vị trí hiển thị của các điều khiển.

Sau khi hoàn tất công việc thiết kế, chúng ta kéo kết quả đã thiết kế vào vị trí cần hiển thị trong

DataList.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 89

Ví dụ: Hiển thị thông tin sách với DataList

Thiết kế thông tin sách với DataList

Kết quả trên trang Web

III. Điều khiển Repeater

Như 2 điều khiển DataList & DataGrid, điều khiển Repeater cũng được dùng để hiển thị

dữ liệu. Tuy nhiên, để hiển thị dữ liệu, chúng ta phải tự thiết kế hình thức hiển thị thông qua các 

tag HTML.

Điều khiển Repeater có các tag sau:

  <HeaderTemplate></HeaderTemplate> (tùy chọn)

Qui định hình thức hiển thị cho tiêu đề. (Chỉ xuất hiện 1 lần, phía trên của điều khiển)

 <ItemTemplate></ItemTemplate> (Bắt buộc phải có)

Qui định hình thức hiển thị cho các mục dữ liệu trong điều khiển.

 <AlternatingItemTemplate></AlternatingItemTemplate> (tùy chọn)

Qui định hình thức hiển thị cho các mục dữ liệu trong điều khiển. Nội dung được qui 

định trong cặp tag này sẽ hiển thị xen kẽ với các nội dung trong cặp tag 

<ItemTemplate> </ItemTemplate>

 <SeparatorTemplate></SeparatorTemplate> (tùy chọn)

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 90

Qui định hình thức hiển thị giữa các dòng dữ liệu

 <FooterTemplate></FooterTemplate> (tùy chọn)

Qui định hình thức hiển thị cho tiêu đề dưới. (Chỉ xuất hiện 1 lần, phía dưới của 

điều khiển)

Ví dụ:

Bước 1. Tạo mới điều khiển Repeater: rptChudesach vào trang Web.

Điều khiển rptChudesach trên 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 qua xem trang Web dưới dạng HTML

<asp:Repeater>

</asp:Repeater>

Bước 3. Bổ sung các tag sau

<asp:Repeater>

        <HeaderTemplate>

            <table  cellspacing="0">

            <tr>

            <td>

            <strong>Mã CĐ</strong>

            </td>

            <td>

            <strong>Tên chủ đề </strong>

            </td>

            </tr>

            </HeaderTemplate>

            <ItemTemplate>

            <tr>

            <td>

            <%#  Eval("MaCd")     %>

            </td>

            <td>

            <%# Eval("Tenchude")%>

            </td>

            </tr>

            </ItemTemplate>

            <AlternatingItemTemplate>

            <tr>

            <td>

            <%# Eval("MaCD")%>

            </td>

            <td>

            <%# Eval("TenChude")%>

            </td>

            </tr>

            </AlternatingItemTemplate>

            <FooterTemplate>

            </table>

            </FooterTemplate>

        </asp:Repeater>

Bước 4. Xem lại màn hình thiết kế và thực thi kết quả.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 91

V. Sử dụng DetailView và FormView 

Hai điều khiển này cho phép bạn làm việc với một trường dữ liệu đơn tại mỗi thời điểm 

Cả hai điều khiển này cho phép bản thay đổi, thêm mới hay xoá dữ liệu như một bản ghi cơ sở

dữ  liệu,  và nó  cho  phép  bạn  chuyển  sang  trang  tiếp theo  hay  quay  lại trang trước  thông  qua 

thiết lập dữ liệu. 

1. DetailView 

a. Hiển thị dữ liệu với DetailView 

DetailView được đưa ra hiển thị như một bảng(<Table>) trong HTML để hiển thị dữ liệu 

một bản ghi. 

Ví dụ: Trang XemthongtinKH.aspx 

b. Sử dụng  Fields với điều khiển DetailView 

DetailView hỗ trợ tất cả các Field như GridView 

o BoundField: cho phép bạn hiển thị giá trị của dữ liệu như Text 

o CheckBoxField: hiển thị dữ liệu dưới dạng một CheckBox 

o CommandField: hiển thị liên kết cho phép chỉnh sửa, thêm mới, xoá dữ liệu. 

o ButtonField: hiển thị dữ liệu như một button(ImageButton, ) 

o HyperLinkField: hiển thị môt liên kết 

o ImageField: hiển thị ảnh 

o TemplateField: cho phép hiển thị các đìều khiển tuỳ biến. 

c. Xử lý phân trang với điều khiển DetailView 

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 92

Để 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 thuộc tính: Pagersettings

d. Minh họa:

Trong ví dụ trên bạn liên kết dữ liệu với Table Khachhang đưa vào 5 BoundField và một 

CheckBoxField,  điền  vào  dữ  liệu  với  thuộc  tính  DataField  và  thiết  đặt  cho  nó  tiêu  dề  với 

HeaderText. Tạo phân trang và định dạng trình bày tại góc trên bên phải. Kết xuất của chương 

trình 

2. DetailView 

a. Hiển thị dữ liệu với FormView 

FormView được đưa ra hiển thị dữ liệu với các điều khiển tùy biến để hiển thị dữ liệu 

một bản ghi. Ví dụ: Trang XemthongtinNXB.aspx 

b. Trình bày dữ liệu sử dụng  Edit Template 

FormView hỗ trợ trình bày dữ liệu dạng tùy biến cho tất cả các Field DataList

o Tạo FormView vào trang và lien kết dữ liệu

o Tại cửa sổ thiết kế chọn Edit Tempalte từ cửa sổ FormView Task 

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 93

o 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

c. 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 thuộc tính: Pagersettings

d. Minh họa:

Trong ví dụ trên bạn liên kết dữ liệu với Table NhaXuatBan đưa vào 4 Label,  điền vào 

dữ liệu với thuộc tính Text cho các File tương tứng và thiết đặt cho nó tiêu dề với HeaderText. 

Tạo phân trang và định dạng trình bày tại phía dưới giữa trang

Kết xuất của chương trình 

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 94

Chương 5

XỬ LÝ DỮ LIỆU VỚI ADO.NET

 I. Tìm hiểu về ADO.NET

Hầu hết ứng dụng hay các website đều cần phải có cơ sở dữ liệu, để lưu trữ dữ liệu, xử

lý thông tin và đưa ra các báo cáo, hỗ trợ tìm kiếm… Khi dữ liệu trở thành trung tâm của ứng 

dụng thì 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 

đề mà người thiết kế và người xây dựng ứng dụng quan tâm khi sử dụng dữ liệu 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 của nhiều người dùng trên dữ liệu 

 Đảm bảo thời gian hồi đáp ngắn cho mỗi người dùng 

 Bảo mật dữ liệu 

 Trao đổi dữ liệu giữa các hệ thống khác nhau 

Những  vấn  đề này  được  giải  quyết  dựa  vào  khả năng của  các  hệ  quản  trị cơ sở  dữ

liệu(HQT CSDL) và các phần mềm xử lý dữ liệu do HQT CSDL cung cấp. 

.Net  truy  xuất  dữ  liệu  qua ADO.NET, đặc điểm  chính  của  ADO.NET  là  khả năng làm 

việc với dữ liệu không kết nối, dữ liệu được lưu trữ trong bộ nhớ như một csdl thu nhỏ gọi là 

dataset,  nhằm  tăng  tốc  độ  tính  toán,  xử  lý  tính  toán  và  hạn  chế  sử  dụng  tài  nguyên  trên 

Database Server.

Đặc điểm quan trọng thứ 2 là khả năng xử lý dữ liệu chuẩn XML, dữ liệu ở dạng XMl có 

thể trao đổi giữa bất kỳ hệ thống nào nên ứng dụng của bạn sẽ có nhiều khả năng làm việc với 

nhiều ứng dụng khác. 

1. Kiến trúc ADO .Net 

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. 

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 95

o DataReader là đối tượng mới, giúp truy cập dữ liệu nhanh chóng nhưng forward-only 

và read-only giống như ADO RecordSet sử dụng Server cursor, OpenFowardOnly và 

LockReadOnly. 

o DataSet cũng là một đối tượng mới, không chỉ là dữ liệu, DataSet có thể coi là một 

bản sao gọn nhẹ của CSDL trong bộ nhớ với nhiều bảng và các mối quan hệ.  

o 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. 

2. Minh họa tạo kết nối cơ sở dữ liệu

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=");

     //Mở kết nối

        cnn.Open();

     //Command điều khiển truy vấn sql  

        SqlCommand cmd = cnn.CreateCommand(); 

        cmd.CommandText = "select HotenKH from Khachhang where MaKH=5"; 

     //lấy về chuỗi giá trị trong cơ sở dữ liệu 

        string result = (string)cmd.ExecuteScalar(); 

     //đóng kết nối 

       cnn.Close(); 

     //in giá trị ra màn hình 

        Response.Write(result); 

    }

}

Thi hành 

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ả

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 96

II. Các đối tượng trong ADO.Net

1. Đối tượng Connection 

Vai  trò  của  Connection  trong  ADO.net  là  tạo  kết  nối  giữa  ứng  dụng  với  nguồn  dữ 

liệu(CSDL) 

Data Provider  :

o System.Data.Oledb  : Sử dụng với Access 

o System.Data.SqlClient : Sử dụng với SQLServer

Ứng với mỗi tên miến ta có một connection tương ứng:

o System.Data.Oledb.OledbConnection 

o System.Data.SqlClient.SqlConnection

Ngòai ra Ado.net còn hỗ trợ các Data Provider khác như

o System.data.OcracleClient : Dành cho Ocracle

o MicroSoft.data.Odbc  : Dành cho  dạng kết nối thong qua Odbc Connectionủa Hệ 

điều hành

o Microsoft.Data.Sqlxml: Dành cho XML trên Sqlserver

Connection String

Trước khi thực hiện kết nối Connectionần khai báo các thong tin cho Connection 

thông  qua  thuộc  tính  Connection  String. Cách  khai báo  thay  đổi  tùy  thuộc  vào  Data 

Provider. Gồm có các thành phần sau:

o Nếu kết nối với CSDL Access

Provider: Khai báo Data Provider Connectionủa Hệ QT CSDL Access

Data Source: Nguồn dữ liệu (Tên CSDL.mdb) 

User ID: Tên người dùng

Password : Mật khẩu

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)

    {

        //Khai báo và khởi tạo biến Connection 

         String    StrCnn="Provider=Microsoft.Jet.OLEDB.4.0; 

Data~/App_Data/QLBansach.mdb");

        OleDbConnection  cnn = new OleDbConnection (StrCnn);

        //Mở kết nối

        cnn.Open();

        //Command điều khiển truy vấn sql  

        OleDbCommand  cmd = cnn.CreateCommand();

        cmd.CommandText = "select HotenKH from Khachhang where MaKH=2";

        //lấy về chuỗi giá trị trong cơ sở dữ liệu 

        string result = (string)cmd.ExecuteScalar();

        //đóng kết nối 

        cnn.Close();

        //in giá trị ra màn hình 

        Response.Write(result);

    }

}

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 97

o Nếu kết nối với CSDL SQLServer

Provider: Khai báo Data Provider Connectionủa Hệ QT CSDL SQLServer

Data Source:Tên máy cài đặt SQLServer

Initial Catalog: Tên CSDL

User ID: Tên người dùng

Password : Mật khẩu

Các thuộc tính Của Connection

o DataBase: : Tương ứng với Initial Catalog(SQL) hay tên  CSDL  muốn làm  việc 

(Access)

o DataSource: Tương ứng với DataSource Tên máy SQL hay tên CSDL

o Provider: Tương ứng với Provider

o State: Tình trạng kết nối Connectionủa Connection với các giá trị

 Broken: Kết nối đã bị ngắt chỉ xảy ra sau 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ở

Các phương thức 

Change Databse: Thay đổi DataBase làm việc

Close : Đóng kết nối sử dụng đóng Connection đang mở

Dispose: Xóa tòan bộ tài nguyên liên quan đấn Connection trên vùng nhớ.

Open:  Thực  hiện  kết  nối  Connectionới  các  thông  tin  đã  khai  báo  trong 

ConnectionString

Ví dụ: Kiểm tra kết nối với CSDL SQLServer

    protected void Button1_Click(object sender, EventArgs e)

    {

        //Khai báo và khởi tạo biến Connection 

        SqlConnection cnn = new SqlConnection("Data Source=;Initial Catalog=QLbansach;User ID=sa;Password=");

        //Mở kết nối

        cnn.Open();

        TextBox1.Text = "State = " + cnn.State; ;

        // Thực hiện các câu lệnh SELECT, INSERT, DELETE, UPDATE.

        cnn.Close();

        //Đóng kết nối

    }

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 98

2. Đối tượng Command

Sau khi tạo kết nối với nguồn dữ liệu, mọi thao tác với nguồn dữ liệu đó đều đượ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 như 

sau:

System.Data.OleDb.OleDbCommand

System.Data.SqlClient.SqlCommand

Tạo Command 

Chúng ta có thể tạo Command thông qua đối tượng Connection bàng cách:

<Loai command>  <Biến Command> As New <Loai command>;

<Biến command>.Connection=<Biến Connection>;

<Biến Command>.CommandText=<Lệnh SQL>;

       Hoặc

<Loai Command>  <Biến Command> As New <Loại >Command(<Lệnh SQL>);

<Biến Command>.Connection=<Biến Connection>;

Các thuộc tính

CommandText : Lệnh SQL hay tên Stored Procedure muốn thực hiện trên nguồn dữ liệu

CommandType: Giá trị cho biết nội dugn Commandtext là gì:

Text: (Mặc định) là câu lệnh SQL

StoredProcedure: Tên thủ tục

TableDirect: Tên Connectionủa table

VD:

SqlCommand cmd As SqlCommand = New SqlCommand();

cmd.Connection = cnn;

cmd.CommandType = CommandType.Text;

cmd.CommandText = "Select* From Khachhang Where MaKH=2";

Parameters

Lệnh SQL trong commandText có thể sử dụng dấu ? thay cho trị chưa xác định và khi 

thực hiện sẽ dùng đối tượng Parameters để truyền gái trị vào  dấu ? . Tùy  theo  Command 

Parameter sẽ khai báo từ lớp OledbParameter hay SqlParameter. Cú pháp khai báo sau:

OleDbParameter | SqlParameter <tên Parameter> As 

New OleDbParameter | SqlParameter();

OleDbParameter | SqlParameter <Ten Parameter> As 

New OleDbparameter | SqlParameter(<Tên>);

OleDbParameter | SqlParameter <Tên parameter> As 

New OleDbParameter | SqlParamter(<tên>,<giá>);

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

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 99

ReturnValue: Loại tham số nhận giá trị trả về Connectionủa một thủ tục

OleDbType / SqlDbType: Kiểu dữ liệu OleDb hay SQLDb  Connectionủa tham số.

ParameterName: Tên tham số

Value: Giá trị tham số

Dùng phương thức CreateParameter và Add Command của tập hợp Parameters.

VD: Khi sử dụng OleDbCommand

cmd.CommandText=”Select * From Khachhang Where MaKH=?”;

OleDbParameter Par As OleDbParameter= 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 As SqlParameter = cmd.CreateParameter();

Par.ParameterName=”@MaKH”;

Par.Value=”KH01”;

cmd.Parameters.Add(Par);

Đưa tham số vào tập hợp Parameters

VD: Khi sử dụng OleDbCommand

cmd.CommandText=”Select * From BangDiem Where Masv=?  And MaMH=?”;

OleDbParameter Par1 As OleDbParameter= 

cmd.CreateParameters.Add(“Sinhvien”,OleDbType.Char,4);

Par1.Value=”SV01”

OleDbParameter Par2 As OleDbParameter= 

cmd.CreateParameters.Add(“Monhoc”,OleDbType.Char,4);

Par2.Value=”MH01”

VD: Khi sử dụng SqlDbCommand

cmd.CommandText=”Select * From BangDiem  Where Masv=@MaSV 

and MaMH = @MaMH ”;

SqlDbParameter Par1 As SqlDbParameter= 

cmd.CreateParameters.Add(“@MaSV”,SqlType.Char,4);

Par1.Value=”SV01”

SqlDbParameter Par2 As SqlDbParameter= 

cmd.CreateParameters.Add(“@MaMH”,SqlType.Char,4);

Par2.Value=”MH01”;

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 Connectionủa sinh viên đó. Vì  vậy chúng ta Connectionần 

truyền 3 tham số: 1 trả về, 2 đưa vào. Tham số trả về phải được truyền cho Command 

trước tiên

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 100

cmd.CommandText=”spKetQuaThi”;

cmd.CommandType=CommandType.StoredProcedure;

OleDbParameter ts3 As New OleDbParameter();

ts3.Direction=ParameterDirection.ReturnValue;

 ts3.OleDbType=OleDn.OleDbType.Int;

cmd.parameters.Add(ts3);

OleDbParameter ts1 as OleDbParameter=

cmd.Parameters.Add(“@MaSV”,OleDbType.Char,4);

Ts1.Value=”Sv01”;

 OleDbParameter ts2 as OleDbParameter=

cmd.Parameters.Add(“@MAMH”,OleDbType.Char,4);

Ts1.Value=”MH01”;

Thực hiện Command

Phương thức ExecuteReader: Phương thức này trả về một đố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 dữ liệu nên phải duy trì kết nối đến khi đọc xong cú pháp.

   SqlDataReader  <Tên DataReader> As SqlDataReader;

   <Tên DataReader> = <tên Command>.ExecuteReader;

VD:     SqlDataReader   reader As SqlDataReader;

           reader = cmd.ExecuteReader;

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 ExcuteScalar: Trả về từ phát biết SQL dạng Select chỉ có một cột một 

hàng. 

3. Đối tượng 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,  DataReader  thuộc  tên  miền 

System.data.OleDbDatReader  hoặc System.Data.SqlDataRaeder

Các thuộc tính

FieldCout: Số Connectionột trên dòng hiện hành của DataReader

IsClosed : Cho biết dataReader đã đóng

Item: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ừ  0.

Các phương thức

Close: Đóng DataReader

GetFieldType: Trả về kiểu dữ liệu của cột truyền vào.

GetName: Trả về tên của cột truyền vào

GetValue: Tar3 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 dataRaeder đóng lại bằng lệnh Close.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 101

4. Đối tượng DataAdapter

Để lầy dữ liệu từ nguồn dữ liệu về cho ứng dụng, chúng ta sử dụng một đối tượng gọi là 

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 trong nguồn dữ 

liệu.

 DataAdapte là một bộ gồm 4 đối tượng:

- SelectCommand: Cho phép lấy thông tin từ nguồn dữ liệu về.

- InsertCommand cho phép thêm dữ liệu vào bảng trong nguồn dữ liệu.

- UpdateCommand cho phép điều chỉnh dữ liệu của bảng trong nguồn dữ liệu.

- DeleteCommand cho phép xóa dữ liệu của bảng trong nguồn dữ liệu.

a. Tạo DataAdapter

Khai  báo  rõ  DataAdapter  sử  dụng  theo  DataProvider  nào:  sqlDataAdapter  hay 

OledbDataAdapter hai lớp này thuộc tên miền: 

System.Data.OleDb.OleDbDataAdapter

System.Data.SqlClient.SqlDataAdapter

Cú pháp tạo DataAdapter

New <Loai>DataAdapter();

New <Loai>DataAdapter(<Đối tượng SelectCommand>);

<Đối tượng SelectCommand>: Có sẳn với nội dụng lệnh truy xuất.

New  <Loai>DataAdapter(<Lệnh>,<Đối tượng Connection>)

DataAdapter chỉ thao tác với một nguồn dữ liệu qua một đố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.

VD:

OleDbDataAdapter DA As New OleDbDataAdapter();

DA.SelectCommand.CommandText=”Select * From Sinhvien”;

AD.SelectCommand.Connection.ConnectionString=”Provider=MicroSoft.Jet.OleDb.4.0; 

Data Source=c:\QuanLySV.mdb”;

b. Các thuộc tín chí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. 

c. Các chức năng của DataAdapter

- Lấy dữ liệu từ nguồn: Sử dụng DataAdapter để lấy dữ liệu về cho các đối tượng

o DataTable: Fill(<DataTable>)

o DataSet: Fill(<DataSet>)          Dữ  liệu  lấy  về  DataSet  dưới  dạng  các 

dataTable với tên mặc định là: Table,Table1, Table2. . .:

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 102

o Đổ dữ liệu vào Datset cho bảng DataTable nếu chưa có sẽ tạo mới: 

Fill(<DataSet>,<Tên dataTable>)

- Phương thức trả về mẫu tin lấy về được

Dim DS as New Dataset()

Dim so As Integer

so= DA.Fill(DS,”Sinhvien”) 

- Để cập nhật dữ liệu về nguồn

Update(<mảng dòng>): Cập nhật các dòng (Các đối tượng DataRow) vào nguồn dữ liệu.

Update(<Dataset>): 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(<DataTable>): Cập nhật tất cả các thay đổi trên DataTable vào nguồn dữ liệu.

Update(<Dataset>,<Tên  bảng>)  Cập  nhật  các  they  đổi  trên  bảng  trong  Dataset  vào 

nguồn dữ liệu..

5. Đối tượng 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.

a. Khai báo

New System.Data.Dataset()

Hoặc

New System.Data.Dataset(<tên Dataset>)

b. 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.Addd(<Tên bảng>) 

Một bảng mới tạo ra theo đúng <tên bả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(<Tên bảng>) 

Xóa bảng ra khỏi tập hợp Table. 

- Kiểm tra bảng có thuộc về Dataset

Tables.Contains(<Tên bảng>)

- Lấy  chỉ số của bảng

Tables.IndexOf(<tên bảng>)

- Lấy số bảng trong Dataset

Tables.Count

- Lấy ra một bảng trong Dataset

Tables(<Chỉ số>)

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 103

- Để cập nhật các thay đổi trên Dataset

AcceptChanges()

- Để 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 sau của Dataset

Clone()

- Để xóa bỏ Dataset

Gọi phương thức 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(<DataColumn trên bảng cha>,<Data Column trên bảng con>)

- Xóa quan hệ giữa hai bảng trong Dataset.

Relations.Remove(<quan hệ>)

6. Đối tượng 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(<Tên bảng>);

DataTable được hình thành từ các DataColumn, DataRow.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 104

III. Một số minh họa

1. Kết nối cơ sở dữ liệu

protected void Button1_Click(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=");

            //Mở kết nối

            cnn.Open();

        // Thực hiện các câu lệnh SELECT, INSERT, DELETE, UPDATE.

        TextBox1.Text = "State = " + cnn.State;

        //Đóng kết nối

        cnn.Close();

    }

2. Kết nối, thao tác dữ liệu, sử dụng đối tượng Command với câu lệnh SELECT

protected void Button2_Click(object sender, EventArgs e)

    {

        try

        {

            //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=");

//Khai báo và khởi tạo biến Command

            SqlCommand cmd = new SqlCommand();

            //Khai báo biến Command sử dụng Connection nào để đến database?

            cmd.Connection = cnn;

            //Biến Commnad thao tác với database bằng 

//(1.Câu lệnh, 2.Tên bảng, 3.Tên Store) nào?

            cmd.CommandText = "SELECT COUNT(*) FROM Chude";

            //Cho biết CommandText chính là câu lệnh.

            cmd.CommandType = CommandType.Text;

            //Mở kết nối

            cnn.Open();

            // Lấy dữ liệu về bằng phương thức ExecuteScalar.

            int count = (int)cmd.ExecuteScalar();

            //Xuất kết quả ra WebForm

            TextBox2.Text = count.ToString();

            //Đóng kết nối.

            cnn.Close();

        }

        catch (Exception)

        {

            //Xuất kết quả ra WebForm

            TextBox2.Text = "Không thành công!";

        }

    }

3. Kết nối, thao tác dữ liệu, sử dụng đối tượng Command với câu lệnh INSERT, 

UPDATE, DELETE

protected void Button3_Click(object sender, EventArgs e)

    {

        try

        {

            //Khai báo và khởi tạo biến Connection 

            SqlConnection cnn = new SqlConnection("Data Source=(local);

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 105

Initial Catalog=QLbansach;User ID=sa;Password=");

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = cnn;

            //Biến Commnad thao tác với database bằng câu lệnh 

//(INSERT, UPDATE, DELETE)

            cmd.CommandText = "INSERT INTO CHUDE(TenCD) VALUES(N'Văn hóa')";

            cmd.CommandType = CommandType.Text;

            cnn.Open();

            //Thao tác dữ liệu (INSERT, UPDATE, DELETE) 

//bằng phương thức ExecuteNonQuery.

            cmd.ExecuteNonQuery();

            //Xuất kết quả ra WebForm

            TextBox3.Text = "Thành công!";

            cnn.Close();

        }

        catch (Exception)

        {

            //Xuất kết quả ra WebForm

            TextBox3.Text = "Không thành công!";

        }

    }

4. Kết nối, thao tác dữ liệu, sử dụng đối tượng Command với câu lệnh INSERT, 

UPDATE, DELETE + Truyền tham số.

protected void Button4_Click(object sender, EventArgs e)

    {

        try

        {

//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=");

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = cnn;

            //Khai báo và khởi tạo tham số

            SqlParameter parTenLinhVuc = 

new SqlParameter("@TENCHUDE", SqlDbType.NVarChar, 50);

           cmd.CommandText = 

"INSERT INTO CHUDE VALUES(@TENCHUDE)";

            cmd.CommandType = CommandType.Text;

            //Thêm biến tham số cho Command

            cmd.Parameters.Add(parTenchude);

            //Gán giá trị cho biến tham số

           parTenLinhVuc.Value = TextBox1.Text;

            cnn.Open();

            cmd.ExecuteNonQuery();

            cnn.Close();

            lbThongbao.Text = "Thành công!";

        }

        catch (Exception)

        {

            lbThongbao.Text = "Không thành công!";

        }

    }

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 106

5. Kết nối, thao tác dữ liệu, sử dụng đối tượng Command với câu lệnh INSERT, 

UPDATE, DELETE + Truyền tham số.

protected void Button5_Click(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=");

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = cnn;

        cmd.CommandText = "SELECT * FROM Nhaxuatban";

        cmd.CommandType = CommandType.Text;

        cnn.Open();

        //Lấy danh sách nhà xuất bản bỏ vào biến DataReader

        IDataReader dr = cmd.ExecuteReader();

        String list = "";

        //Duyệt qua DataReader

        while (dr.Read())

        {

            list = list + dr["TenNXB"].ToString().Trim() + " ";

        }

        dr.Close();

        TextBox6.Text = list.ToString();

        cnn.Close();

    }

6. Kết nối cơ sở dữ liệu + gọi store để lấy dữ liệu.

CREATE PROCEDURE GetNhaxuatban

AS

BEGIN

SELECT * FROM Nhaxuatban

END

GO

protected void Button6_Click(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=");

        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();

        TextBox7.Text = list.ToString();

        cnn.Close();

    }

7. Kết nối cơ sở dữ liệu + gọi store để lấy dữ liệu + truyền tham số.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 107

CREATE PROCEDURE GetchudeByMachude

@Machude char(15)

AS

BEGIN

SELECT * FROM CHUDE WHERE MaCD=@Machude

END

GO

protected void Button7_Click(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=");

        SqlCommand cmd = new SqlCommand("GetchudeByMachude", cnn);

        cmd.Connection = cnn;

        cmd.CommandType = CommandType.StoredProcedure;

        //Khai báo và khởi tạo biến Command

        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();

        TextBox2.Text = list.ToString();

        cnn.Close();

    }

8. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + update dữ liệu

protected void Button8_Click(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=");

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

            }

        TextBox1.Text = ds.Tables[0].Rows[2].ItemArray[1].ToString();

        GridView1.DataSource = ds.Tables[0];

        GridView1.DataBind();

        //Không sử dụng SqlCommandBuilder thì không thể update dữ liệu.

        da.Update(ds);

    }

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 108

9. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + gọi store

protected void Button9_Click(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=");

        //Khai báo và khởi tạo SqlDataAdapter

        SqlDataAdapter da = new SqlDataAdapter("GETNHAXUATBAN", cnn);

        //Khai báo và khởi tạo DataSet 

        DataSet ds = new DataSet();

        //Lấy dữ liệu trả về đổ vào dataset ds

        da.Fill(ds);

        TextBox11.Text = ds.Tables[0].Rows[2].ItemArray[1].ToString();

        GridView2.DataSource = ds.Tables[0];

        GridView2.DataBind();

    }

10. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + gọi store + truyền tham số

protected void Button10_Click(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=");

        SqlCommand cmd = new SqlCommand("GetchudeByMachude", cnn);

        cmd.Connection = cnn;

        cmd.CommandType = CommandType.StoredProcedure;

        //Khai báo và khởi tạo tham số

        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];

        GridView1.DataBind();

        cnn.Close();

    }

11. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + đối số là Command

protected void Button10_Click(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=");

        SqlCommand cmd = new SqlCommand("GETNHAXUATBAN ", 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();

    }

}

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 109

Chương 4

CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU

 Sử dụng các điều khiển Data List, DataGrid và Repeater để hiển thị dữ liệu.

 Liên kết dữ liệu với các kiểu tập hợp:ArrayList, SortedList, HashTable, …

I. Điều khiển DataGrid

DataGrid  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 VS .Net trong quá trình thiết kế.

Bổ  sung Control  DataGrid vào  Thanh ToolBox (Nếu chưa có): Click phải thanh toolbox 

chọn Choose Items.

Đánh dấu vào mục DataGrid (System.Web.UI.WebControls)  Ok

1. Tạo DataGrid vào trang

Kéo Control DataGrid vào trang

Định dạng tự động

Thiết lập thuộc tính

Kết nối nguồn dữ liệu

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 110

2. Định dạng tự động

Thực  hiện  chọn  những  mẫu định  dạng  có  sẳn quy định  về  khung  viền  màu  nền  bằng 

cách Chọn Auto Format từ khung DataGrid Task 

3. Kết nối nguồn dữ liệu

Chọn New Data Source từ mục Choose Data Source

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 111

Chọn lọai nguồn dữ liệu (DataBase)

Đặt tên cho nguồn dữ liệu (Sieuthi)

Chọn New Connection  Chọn Microsoft SQL Server  Continue

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 112

Khai báo các thông số của CSDL => Chọn Test Connection để kiểm tra. Chọn Ok để

đồng ý kết nối.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 113

Khai báo dữ liệu cần truy xuất.

Chọn Test Query để kiểm tra kết quả.  Chọn Finish để hòan tất

4. Thiết lập các thuộc tính

Để  thực  hiện các  thao tác thiết lập  các thuộc tính, chúng  ta chọn  chức năng Property 

Builder… từ khung DataGrid Task.

a. Trang General

Trong trang này, có các mục chọn sau:

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 114

 Show header: Qui định dòng tiêu đề trên có được phép hiển thị hay không. (mặc định là 

có hiển thị dòng tiêu đề)

 Show footer: Qui định dòng tiêu đề dưới có được phép hiển thị hay không. (mặc định là 

không hiển thị dòng tiêu đề dưới)

 Allow sorting: Có cho phép sắp xếp dữ liệu hay không. (mặc định là không cho phép sắp 

xếp)

Các mục chọn trong Tab General

b. Trang Columns (Quản lý thông tin các cột)

Trang Columns quản lý thông tin các cột sẽ hiển thị trên lưới.

Trang Columns

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 115

 Create columns automatically at runtime: Khi chọn chức năng này, DataGrid sẽ tự

động phát sinh đầy đủ  các  cột  có  trong  nguồn  dữ  liệu.  Nếu  chúng  ta  muốn  qui 

định các cột cần hiển thị, chúng ta không chọn chức năng này.

 Column list: Qui định các cột được hiển thị trong lưới.

o Bound Column: Cột có liên kết với nguồn dữ liệu.

o Button  Column:  Cột  dạng  nút  lệnh  đã  được  thiết  kế  sẵn.  Điều  khiển 

DataGrid cung cấp cho chúng ta 3 loại cột dạng này:

 Select: Nút lệnh chọn dòng dữ liệu

 Edit,  Cancel,  Update:  Các  nút  lệnh  hỗ  trợ  chức năng cập  nhật  dữ

liệu trực tiếp trên lưới.

 Delete: Nút lệnh xóa dòng dữ liệu

Chúng ta sẽ có dịp tìm hiểu kỹ hơn về các nút lệnh này trong phần 

Cập nhật dữ liệu trực tiếp trên lưới.

o Hyperlink Column: Cột có liên kết dữ liệu dạng liên kết.

o Template  Column:  Cột do người  dùng  tự  thiết  kế. Đây là loại  cột  có  khả

năng làm việc khá linh họat. 

Ví  dụ  bạn  cần  hiển  thị  danh  sách  khách  hàng.  Tại  cột  Phái,  bạn 

không muốn  hiển thị  Nam/Nữ, thay vào đó, bạn muốn  hiển thị điều  khiển 

checkbox  thay  thế,  nếu  checkbox  được  chọn  -  thể hiện  phái  Nam  và 

ngược lại. Trong tình huống này, TemplateColumn là sự chọn lựa tốt dành

cho bạn. Chúng ta sẽ tìm hiểu sâu hơn về Template Column ở phần sau.

 BoundColumn properties: Qui định thông tin chi tiết cho các cột

o HeaderText, Footer Text: Thông tin tiêu đề trên/dưới của cột

o Header  Image:  Hình  hiển  thị  trên  tiêu  đề  cột  (thay  thế  thông  tin  tiêu đề  cột  -Header Text).

o Sort Expression: Biểu thức sắp xếp của cột.

o Visible: Qui định cột có được hiển thị hay không.

o DataField: Qui định tên field hay tên thuộc tính của đối tượng dữ liệu cần hiển thị.

o Data formatting expression: Biểu thức định dạng dữ liệu.

Mẫu định dạng: {0:<chuỗi định dạng>}. Ví dụ:

+ Định dạng số: {0:000.00}, {0:0.##}

+ Định dạng ngày giờ: {0:dd/MM/yyyy}, {0:hh/mm/ss tt}

o Read Only: Chọn giá trị này để cột chỉ được phép đọc, không cho phép cập nhật 

dữ liệu.

o Convert  this  column  into  a  Template  Column:  Chuyển  cột  hiện  hành  thành  cột 

dạng Template Column.

c. Trang Paging (Quản lý phân trang)

Trang này quản lý việc phân trang của DataGrid.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 116

  Allow paging: Có cho phép phân trang hay không.

 Page size: Qui định số dòng của mỗi trang.

 Show  navigation buttons:  Có  hiển thị  bộ nút để  di chuyển từ  trang  này  qua trang khác 

hay không. Giá trị mặc định là True.

 Possition: Qui định vị trí hiển thị của bộ nút di chuyển. Ở phía trên thanh tiêu đề, ở phía 

dưới hay cả hai.

 Mode: Qui định hình thức hiển thị của bộ nút di chuyển. Hiển thị dạng số trang hay là các 

chuỗi  ký  tự đại  diện (Next page/Previous page button text). Trong trường  hợp  hiển  thị

dạng số, Numeric buttons qui định số nút lệnh được hiển thị tối đa.

Google hiển thị kết quả được phân trang theo dạng số

d. Trang Format (Định dạng)

Trang  Format  quản lý  việc định  dạng  hiển  thị trên điều  khiển DataGrid. Các định  dạng 

chung như: Màu chữ, màu nền, Font chữ, kích cỡ, in đậm /in nghiêng/gạch dưới và canh lề.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 117

Trang Format

 DataGrid: Qui định các định dạng chung cho lưới

 Header: Định dạng cho dòng tiêu đề.

 Footer: Định dạng cho dòng tiêu đề dưới.

 Pager: Định dạng cho dòng chứa các nút lệnh phân trang.

 Items

o Normal Items: Định dạng cho các dòng dữ liệu.

o Alternating Items: Định dạng hiển thị cho các dòng lẻ.

o Selected Items:Định dạng hiển thị cho dòng đang được chọn.

o Edit  Mode Items: Định  dạng  hiển  thị  cho  dòng  đang ở  trạng  thái  hiệu  chỉnh  dữ

liệu.

 Columns: Qui định độ rộng và các định dạng riêng cho từng cột.

e. Trang Borders (Khung viền)

Trang Borders quản lý việc kẻ khung viền cho lưới.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 118

 Cell margin

o Cell padding: Qui định khoảng cách giữa nội dung trong ô với đường viền của ô.

o Cell spacing: Qui định khoảng cách giữa các ô

Thi hành

2. Xử lý sắp xếp

Sắp xếp dữ liệu trên lưới là một công việc rất cần thiết đối với người sử dụng. Hãy thử

tưởng tượng xem trong trường hợp chúng ta có khá nhiều dữ liệu hiển thị trên màn hình (giả

sử  là danh  sách nhân  viên  chẳng  hạn),  thật khó để  chọn  ra các  nhân  viên  có  thâm  niên  làm 

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 119

việc lâu nhất hay các nhân viên có số giờ tham gia đề án nhiều nhất…. Với chức năng sắp xếp 

trên lưới sẽ giúp cho người dùng dễ dàng chọn ra các nhân viên thỏa mãn các yêu cầu trên.

Để thực hiện được thao tác sắp xếp dữ liệu trên lưới, chúng ta cần phải thực hiện các 

công việc sau:

Giá trị thuộc tính Allow sorting = True

Nhập giá trị cho thuộc tính Sort expression của các cột cần sắp xếp.

Xử  lý  sự  kiện  SortCommand(ByVal  source  As  Object,  ByVal  e  As 

System.Web.UI.WebControls.

DataGridSortCommandEventArgs)

Trong sự kiện trên, giá trị e.SortExpression cho biết thông tin của cột được chọn sắp xếp.

Ví dụ:

Private Sub Page_Load(…) Handles MyBase.Load

If Not IsPostBack Then

dtgKhach_hang.DataSource = Doc_ds_khach_hang()

dtgKhach_hang.DataBind()

End If

End Sub

Private Sub dtgKhach_hang_SortCommand(…,e …)…

dtgKhach_hang.DataSource = Doc_ds_khach_hang(e.SortExpression)

dtgKhach_hang.DataBind()

End Sub

Public Function Doc_ds_khach_hang(Optional ByVal

pChuoi_sap_xep As String = "") As DataTable

Dim sKet_noi As String

sKet_noi = "Provider=Microsoft.Jet.Oledb.4.0;Data..\Data\QlBanSach.mdb")

Dim cnKet_noi As New OleDbConnection(sKet_noi)

Dim dsCSDL As New DataSet

Dim sLenh_sql As String = "Select * From KHACH_HANG"

sLenh_sql &= IIf(pChuoi_sap_xep = "", _

"", " Order by " & pChuoi_sap_xep)

'Mở và đóng kết nối ngay khi thực hiện xong

cnKet_noi.Open()

Dim daBo_doc_ghi As New OleDbDataAdapter(sLenh_sql, cnKet_noi)

cnKet_noi.Close()

daBo_doc_ghi.Fill(dsCSDL, "KHACH_HANG")

Return dsCSDL.Tables("KHACH_HANG")

End Function

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 120

Sắp xếp khách hàng tăng dần theo tên

3. Xử lý phân trang

Phân trang dữ liệu không những giúp cho việc xem và tìm kiếm thông tin được dễ dàng 

mà còn giảm được khối lượng dữ liệu cần được truyền tải từ Server về Client. Việc phân trang 

trong ASP.Net được thực hiện khá dễ dàng, chỉ với một số thao tác đơn giản.

Để thực hiện phân trang, chúng ta cần phải thực hiện các công việc sau:

Qui định  các  thông  số  cần  thiết  cho  việc  phân  trang  (xem  Quản  lý  phân  trang  ở  phần 

Các thao tác định dạng lưới).

Xử lý sự kiện PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.

WebControls.DataGridPageChangedEventArgs)

Trong sự kiện trên, giá trị e.NewPageIndex cho biết trang được chọn để hiển thị dữ liệu.

Định dạng phân trang

Mã lệnh xử lý:

Private Sub Page_Load(…) Handles MyBase.Load

If Not IsPostBack Then

Lien_ket_du_lieu()

End If

End Sub

Private Sub dtgKhach_hang_PageIndexChanged(…, e …) …

dtgKhach_hang.CurrentPageIndex = e.NewPageIndex

Lien_ket_du_lieu()

End Sub

Dữ liệu hiển thị được phân trang

4. Tùy biến các cột

Trong phần này, chúng tôi sẽ hướng dẫn các bạn tùy biến các cột trên lưới, cụ thể hơn, chúng 

ta sẽ

hiển thị checkbox thay cho giá trị True/False của cột giới tính.

Để thực hiện việc tùy biến các cột, chúng ta cần phải thực hiện 2 giai đoạn sau:

Giai đoạn 1: Thiết kế

Trong giai đoạn này, chúng ta tùy biến cột theo một yêu cầu cụ thể. Thay vì phải hiển thị ô dữ

liệu bình thường (như họ khách hàng, tên khách hàng, …), chúng ta có thể sử dụng điều khiển

Checkbox để thay thế cho cột có giá trị luận lý, sử dụng điều khiển Image, Image button hay

Hyperlink để hiển thị hình ảnh thay cho chuỗi đường dẫn dẫn đến hình ảnh đó, …

Giai đoạn 2: Xử lý

Sau khi thực hiện hoàn tất giai đoạn thiết kế, đây là lúc chúng ta phải viết các lệnh xử lý để

hiển thị dữ liệu theo yêu cầu của mình.

I.4.1. Giai đoạn 1: Thiết kế

Bước 1. Thêm mới cột Phái, kiểu Template Column. Nhập giá trị Header text, Sort expression 

cho

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 121

cột này (nếu cần)

Bổ sung cột Phái kiểu Template Column

Bước 2. Từ thực đơn ngữ cảnh, chọn Edit Template \ Column[X] –YYY

(X: Số thứ tự của cột; Y: Chuỗi tiêu đề của cột)

Chúng ta chọn cột cần hiệu chỉnh.

Chọn chức năng hiệu chỉnh cột Phái

Bước 3. Thêm điều khiển checkbox chkPhai, vào mục ItemTemplate

Tùy biến cột Phái

Bước 4. Chọn End Template Editing từ thực đơn ngữ cảnh sau khi thiết kế xong.

Điều khiển lưới sau khi đã được tùy biến cột Phái

I.4.2. Giai đoạn 2: Xử lý

Khác với Bound column, cột kiểu Template column không tự động hiển thị dữ liệu. Mà làm sao 

hiển

thị dữ liệu được khi chính bản thân các điều khiển (mới được tạo khi thiết kế) không có qui định

field cần được hiển thị từ nguồn dữ liệu. Do đó, để hiển thị dữ liệu (theo ý đồ của chúng ta), ta

phải viết lệnh các xử lý trong sự kiện ItemDataBound

Mã lệnh xử lý:

(1)Private Sub dtgKhach_hang_ItemDataBound(…,e …) …

(2) If e.Item.ItemIndex < 0 Then Exit Sub

(3) Dim chkPhai As CheckBox

(4) chkPhai = e.Item.FindControl("chkPhai")

(5) chkPhai.Checked = e.Item.DataItem("Gioi_tinh")

(6)End Sub

Trước khi đi vào tìm  hiểu  các  lệnh  xử lý trong đoạn  lệnh  trên,  chúng  ta  cũng nên  tìm  hiểu  ý 

nghĩa

sự kiện ItemDataBound của DataGrid. Sự kiện ItemDataBound xảy ra ngay khi phương thức

DataBind được gọi (lẽ đương nhiên là ta phải gán nguồn dữ liệu cho lưới trước đó). Ứng với 

mỗi

dòng dữ liệu sẽ xảy ra một sự kiện ItemDataBound tương ứng.

Phân tích xử lý trong đoạn lệnh trên:

Dòng lệnh (2): Dòng lệnh này kiểm tra xem lần xảy ra sự kiện này có phải dành cho dòng dữ

liệu

hay không. Tại sao cần phải kiểm tra điều kiện này? Bởi vì không chỉ ứng với mỗi dòng dữ liệu, 

còn có các dòng Header, Footer và Pager, … cũng xảy ra trong sự kiện này.

chkPhai

Để biết được lần xảy ra sự kiện dành cho dòng nào, chúng ta kiềm tra giá trị của thuộc tính

e.Item.ItemType. Thuộc tính này có các giá trị sau:

Các giá trị của thuộc tính ItemType

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 122

AlternatingItem: Xảy ra ứng với dòng dữ liệu có chỉ số lẻ (dòng dữ liệu đầu tiên tính từ 0).

EditItem: Ứng với dòng ở trạng thái hiệu chỉnh dữ liệu.

Footer: Ứng với dòng tiêu đề dưới.

Header: Ứng với dòng tiêu đề.

Item: Xảy ra ứng với dòng dữ liệu có chỉ số chẳn.

Pager: Ứng với dòng phân trang.

SelectedItem: Ứng với dòng ở trạng thái đang được chọn.

Seperator: Ứng với dòng phân cách

Bên  cạnh đó, nếu  ta  chỉ quan tâm đến  lần  xảy  ra  sự  kiện  này  có  phải  là  dòng  dữ  liệu  hay 

không, ta

có thể sử dụng thuộc tính e.ItemIndex.

e.Item.ItemIndex < 0: Đây không phải là dòng dữ liệu

e.Item.ItemIndex >= 0: Đây là dòng dữ liệu. Giá trị của thuộc tính này cho biết chỉ số của

dòng dữ liệu hiện hành.

Dòng  lệnh  (3,4):  Nhiệm vụ chính ở 2 dòng lệnh này là chúng ta khai báo các điều khiển ứng 

với

các điều khiển được đặt vào lúc thiết kế. Sử dụng phương thức e.Item.FindControl(<Tên điều

khiển>) để lấy điều khiển hiện có trong dòng đang xảy ra sự kiện.

chkPhai = e.Item.FindControl("chkPhai") 'hay

chkPhai =Ctype(e.Item.FindControl("chkPhai"),CheckBox)

Bảng

KHACH_HANG

Dòng lệnh (5): Sau khi lấy được điều khiển ứng với dòng đang xảy ra sự kiện, tùy theo dữ liệu 

ta sẽ hiển thị lên điều khiển giá trị tương ứng. Để lấy được dữ liệu của dòng hiện hành, ta sử

dụng

thuộc tính e.Item.DataItem(<Tên field/Tên thuộc tính>)

chkPhai.Checked = e.Item.DataItem("Gioi_tinh")

Kết quả hiển thị

Đối với những xử lý phức tạp, sự kiện ItemDataBound sẽ là sự lựa chọn hàng đầu trong việc

tùy biến hiển thị dữ liệu. Tuy nhiên, đối với những xử lý đơn giản, chúng ta có thể thực hiện

liên kết dữ liệu trong quá trình thiết kế.

Chọn Edit Template cột Phái, chọn điều khiển chkPhai.

Chọn điều khiển chkPhai trong lúc thiết kế

Trên cửa sổ thuộc tính, chọn (DataBindings)

Chọn chức năng DataBidings

Trên cửa sổ thuộc tính, chọn (DataBindings). Hộp thoại  DataBindings của điều khiển chkPhai 

xuất

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 123

hiện.

Các thuộc  tính có  thể  liên  kết  dữ  liệu  của điều  khiển xuất  hiện  trong  Danh  sách  bên  trái  hộp 

thoại.

Chọn thuộc tính cần liên kết, chọn loại  liên kết là Custom binding expression, nhập chuỗi liên 

kết dữ

liệu trong điều khiển bên dưới theo cú pháp:

Container.DataItem("Tên field")

Ở ví dụ này, chúng ta thực hiện liên kết thuộc tính Checked của điều khiển chkPhai với field

Gioi_tinh có trong nguồn dữ liệu của lưới.

I.5. Cập nhật dữ liệu trực tiếp trên lưới

Cập nhật dữ liệu trực tiếp trên lưới trong ASP.Net được hỗ trợ khá tốt về giao diện. Công việc 

còn

lại của chúng ta là thiết kế các nút lệnh như: Chọn, Sửa/Ghi - Không, Hủy, … và viết các lệnh 

cập

nhật dữ liệu.

I.5.1. Giai đoạn thiết kế

Trong cửa sổ thuộc tính của lưới, chúng ta tạo bộ nút lệnh cần thiết hỗ trợ cho việc cập nhật dữ

liệu. Ở ví dụ này, chúng tôi tạo bộ nút (Select - chọn), (Edit, Update, Cancel - Sửa, Ghi, Không) 

(Delete - Hủy)

Đối với các nút lệnh trên, các bạn cần chú ý đến giá trị của thuộc tính Command name. Ứng 

với

mỗi  nút  lệnh  có  giá  trị  CommandName  khác  nhau,  nhờ đó, ta viết  lệnh  xử  lý  với  chức năng 

tương

ứng được chọn.

Select: Command name = "Select"

Edit, Update/Cancel: Command name = "Edit", "Update"/"Cancel"

Delete: Command name = "Delete"

Tạo bộ nút lệnh Thêm - Sửa/Ghi/Không - Hủy

Tìm hiểu về thuộc tính Command Name

Cũng cần bàn thêm một chút ở đây về thuộc tính Command Name. Như các bạn cũng biết, các 

nút

lệnh ở trên (Chọn, Thêm - Sửa / Ghi / Không - Hủy) là do VS.Net hỗ trợ, giá trị thuộc tính

CommandName của các nút lệnh trên là những giá trị mặc định được qui định sẵn.

Ứng với mỗi CommandName mặc định, sẽ có các sự kiện để ta thực hiện các xử lý tương ứng:

Command Sự kiện EditCommand

Command Sự kiện UpdateCommand

Command Sự kiện CancelCommand

Command Sự kiện DeleteCommand

Chắc hẳn các bạn sẽ thắc mắc tại sao không có sự kiện SelectCommand? Bốn sự kiện được 

liệt kê

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 124

trên là 4 sự kiện dành riêng, tương ứng với giá trị của các Command name mặc định là Edit,

Update, Cancel, Delete. Đối với những CommandName có giá trị khác, chúng ta sẽ sử dụng sự

kiện

dành chung cho tất cả các nút lệnh có thuộc tính CommandName (Button, Linkbutton,

ImageButton) được đặt trên lưới - sự kiện ItemCommand.

Tại sao vậy? Vì khi ta đặt các nút lệnh vào lưới (sử dụng cột Template column), chúng (các nút

lệnh) không còn sự kiện Click nữa, thay vào đó, tất cả các nút lệnh khi được nhấn sẽ gây ra sự

kiện ItemCommand.  Dựa vào  giá trị e.CommandName  (tham  số trong  sự  kiện) để chúng ta 

xác

định nút lệnh nào đã được nhấn.

Cũng  cần  lưu  ý  thêm  ở  đây  là  bất  kỳ  nút  lệnh  nào  khi  được  nhấn  đều  gây  ra  sự  kiện 

ItemCommand.

Do đó, đối với các nút lệnh có giá trị thuộc tính CommandName là Edit, Update, Cancel, Delete 

khi

được  nhấn  vẫn  gây  ra  sự  kiện ItemCommand trước  khi  gây  ra  các  sự  kiện  dành  riêng  cho 

chúng.

Giao diện lưới sau khi thêm bộ nút lệnh

I.5.2. Giai đoạn xử lý

Xử lý chọn mẩu tin

Chọn mẫu tin trên lưới

Private Sub dtgKhach_hang_ItemCommand(…, e …) …

If e.CommandName = "Select" Then

dtgKhach_hang.SelectedIndex = e.Item.ItemIndex

Lien_ket_du_lieu()

End If

End Sub

Xử lý sửa, ghi, không

Muốn cập nhật dữ liệu, ta cần xác định khách hàng được cập nhật thông qua Mã khách hàng.

Để lấy Mã khách hàng:

Gán thuộc tính DataKeyField của điều khiển lưới = "MKH"

<lưới>.DataKeys(<chỉ số i>) Trả về Mkh tại dòng <chỉ số i>

Chọn mẫu tin để cập nhật dữ liệu

Private Sub Page_Load(…) …

If Not IsPostBack Then

dtgKhach_hang.DataKeyField = "MKH"

Lien_ket_du_lieu()

End If

End Sub

Private Sub dtgKhach_hang_EditCommand(…, e …) …

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 125

dtgKhach_hang.EditItemIndex = e.Item.ItemIndex

Lien_ket_du_lieu()

End Sub

Private Sub dtgKhach_hang_UpdateCommand(…, e …) …

'Khai báo và khởi tạo biến kết nối: cnKet_noi

'Lấy dữ liệu mà người dùng vừa cập nhật

Dim lHo_kh As TextBox = e.Item.Cells(0).Controls(0)

Dim lTen_kh As TextBox = e.Item.Cells(1).Controls(0)

Dim lPhai As CheckBox = e.Item.FindControl("chkPhai")

Dim lMkh As Integer = dtgKhach_hang.DataKeys(e.Item.ItemIndex)

'Tạo đối tượng Command để cập nhật dữ liệu

Dim cmdLenh As New OleDbCommand

cmdLenh.Connection = cnKet_noi

cmdLenh.CommandText = "Update KHACH_HANG " & _

"Set Ho_khach_hang=?, Ten_khach_hang=?, " & _

"Gioi_tinh=? Where MKH=?"

'Truyền tham số cho đối tượng Command

cmdLenh.CommandType = CommandType.Text

cmdLenh.Parameters.Add("Ho_kh", lHo_kh.Text)

cmdLenh.Parameters.Add("Ten_kh", lTen_kh.Text)

cmdLenh.Parameters.Add("Phai", lPhai.Checked)

cmdLenh.Parameters.Add("Mkh", lMkh)

'Thi hành Command

cnKet_noi.Open()

cmdLenh.ExecuteNonQuery()

cnKet_noi.Close()

'Tắt chế độ cập nhật dữ liệu

dtgKhach_hang.EditItemIndex = -1

'Hiển thị dữ liệu mới cập nhật lên lưới

Lien_ket_du_lieu()

End Sub

Private Sub dtgKhach_hang_CancelCommand(…, e …) …

dtgKhach_hang.EditItemIndex = -1

Lien_ket_du_lieu()

End Sub

Hiệu chỉnh độ rộng của các Textbox khi dòng ở trạng thái sửa

Bạn có thể bổ sung đoạn lệnh sau (trong sự kiện ItemDataBound) để hiệu chỉnh độ rộng các

Textbox của dòng ở trạng thái sửa.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 126

If e.Item.ItemType = ListItemType.EditItem Then

CType(e.Item.Cells(0).Controls(0),TextBox).Width = New Unit(133)

CType(e.Item.Cells(1).Controls(0), TextBox).Width = New Unit(63)

End If

Xử lý hủy mẫu tin

Private Sub dtgKhach_hang_DeleteCommand(…, e …) …

'Thực hiện xóa dòng dữ liệu ở đây

'Xử lý tương tự như Update Command

'Hiển thị dữ liệu mới cập nhật lên lưới

Lien_ket_du_lieu()

End Sub

II. Điều khiển DataList

II.1. Sử dụng DataList để hiển thị dữ liệu

Như điều khiển DataGrid, đ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

DataGrid).

Huy Cận Về Tác Giả Và Tác Phẩm

NXB: Giáo dục

Cuốn Huy Cận Về Tác Gia Và Tác Phẩm tập hợp những bài nghiên

cứu, phê bình của các nhà văn, nhà thơ, các cán bộ giảng dạy, các

nhà nghiên cứu phê bình văn học, các nhà nghiên cứu văn hóa nước

ngoài đã được công bố trên sách, báo, tạp chí. Các bài viết này được

sắp xếp theo thứ tự thời gian và chủ đề, để bạn đọc có thể hình ...

Giá: 45,500.00 VND

[Đặt hàng] [Xem Tiếp]

Địa Chất Công Trình (Giáo Trình Dùng Cho Sinh Viên Ngành Xây

Dựng Cầu Đường)

NXB: Giao thông vận tải

Địa chất công trình là một môn được đưa vào chương trình đào tạo kỹ

sư ngành Xây dựng cầu đường của trường Đại học GTVT từ lâu.

Những hiểu biết về địa chất công trình sẽ giúp ích nhiều cho kỹ sư cầu

đường trong khảo sát, thiết kế và thi công các công trình giao thông ...

Giá: 14,000.00 VND

[Đặt hàng] [Xem Tiếp]

Sử dụng DataList hiển thị thông tin sách

Một số thuộc tính cần chú ý của DataList

RepeatDirection: Qui định hướng hiển thị dữ liệu

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 127

Horizontal: Hiển thị dữ liệu theo chiều ngang

RepeatDirection = Horizontal

Vertical (mặc định): Hiển thị dữ liệu theo chiều đứng

RepeatDirection = Vertical

RepeatColumns: Qui định số cột hiển thị của DataList

L'Enquête Corse

Đặt mua

Unspeakable

Đặt mua

Bottle Rocket

Đặt mua

Ripper

Đặt mua

Enduring Love

Đặt mua

The Good Thief

Đặt mua

RepeatColumns = 3

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

DataGrid.

Chọn Edit Template | ItemTemplate từ thực đơn ngữ cảnh để thực hiện thiết kế hình thức hiển 

thị

cho DataList.

Chọn chức năng thiết kế cho DataList

Trong quá trình thực hành, để công việc thiết kế được dễ dàng, các bạn thực hiện thiết kế ở

bên ngoài điều khiển DataList. Sử dụng Table (thực đơn Insert Table) để định vị trí hiển

thị của các điều khiển.

Sau khi hoàn tất công việc thiết kế, chúng ta kéo kết quả đã thiết kế vào vị trí cần hiển thị trong

DataList.

Ví dụ: Hiển thị thông tin sách với DataList

Thiết kế thông tin sách với DataList

Như cột Template Column của DataGrid, xử lý hiển thị dữ liệu cho DataList được viết trong sự

kiện

ItemDataBound. Xử lý nhấn của các Button đặt trong DataList được viết trong sự kiện

ItemCommand.

Private Sub Page_Load(…, e …) Handles MyBase.Load

If Not IsPostBack Then

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 128

Lien_ket_du_lieu()

End If

End Sub

Public Sub Lien_ket_du_lieu()

dtSach = Doc_danh_sach_Sach()

dtlSach.DataSource = dtSach

dtlSach.DataKeyField = "Ms"

dtlSach.DataBind()

End Sub

Private Sub dtlSach_ItemDataBound(…, e …) …

Dim lDong as Integer = e.Item.ItemIndex

If lDong < 0 Then Exit Sub

'Hiển thị Tên sách

Dim lnkTs As LinkButton

lnkTs = e.Item.FindControl("lnkTen_sach")

lnkTs.Text = e.Item.DataItem("Ten_sach")

'Hiển thị thông tin mô tả tóm tắt nội dung

Label

HyperLink

LinkButton

Tài liệu hướng dẫn giảng dạy

Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 82/174

Dim lblMt As Label

lblMt = e.Item.FindControl("lblMo_ta")

lblMt.Text = Left(e.Item.DataItem("Mo_ta"), 200) & "..."

'Hiển thị hình ảnh minh họa

Dim hplHinh As HyperLink

hplHinh = e.Item.FindControl("hplHinh_mh")

hplHinh.ImageUrl = "../Data_Pic/" & e.Item.DataItem("Hinh_minh_hoa")

'Hiển thị giá bán sách

Dim lblGia As Label

lblGia = e.Item.FindControl("lblGia_ban")

lblGia.Text = e.Item.DataItem("Don_gia")

End Sub

Kết quả hiển thị thông tin sách trên trang Web

Kết quả trên trang Web

Tài liệu hướng dẫn giảng dạy

Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 83/174

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 129

II.2. Cập nhật dữ liệu với DataList

Ngoài  việc  hiển  thị  dữ  liệu,  DataList  cũng hỗ  trợ  các  thao  tác  cập  nhật  dữ  liệu. Để  thực  hiện 

chức

năng cập nhật dữ liệu với DataList, chúng ta cần phải thiết kế thêm vùng EditIemTemplate cho

DataList. (xem hình)

II.2.1. Các bước xử lý

a. Thiết kế

Thiết kế cả 2 vùng ItemTemplate và EditItemTemplate. Thực hiện các thao tác liên kết dữ liệu 

cho

các điều khiển trong vùng EditItemTemplate thông qua cửa sổ thuộc tính tương tự như trong

ItemTemplate.

Chú ý: Chúng ta hoàn toàn có thể thực hiện việc liên kết dữ liệu trong sự kiện ItemDataBound.

Chọn chức năng DataBindings cho ô Đơn giá

Liên kết dữ liệu với cột Don_gia

Yêu cầu thiết kế

Tên điều khiển Thiết lập thuộc tính

Hieu_chinh: ImageButton CommandName: Edit

Ghi_nhan: ImageButton CommandName: Update

CommandArgument:

DataBinder.Eval(Container, "DataItem.Ms")

Lưu lại mã số của sách đang hiệu chỉnh.

Bo_qua: ImageButton CommandName: Cancel

Tài liệu hướng dẫn giảng dạy

Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 85/174

b. Xử lý lệnh để cập nhật dữ liệu

Xử lý các sự kiện EditCommand, CancelCommand, UpdateCommand để thực hiện/bỏ qua việc 

thay

đổi dữ liệu.

Private Sub Page_Load(…, e …) Handles MyBase.Load

'Put user code to initialize the page here

If Not IsPostBack Then

Lien_ket_du_lieu()

End If

End Sub

Private Sub dtlHang_hoa_EditCommand(…, e …) …

dtlHang_hoa.EditItemIndex = e.Item.ItemIndex

Lien_ket_du_lieu()

End Sub

Private Sub dtlHang_hoa_CancelCommand(…, e …) …

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 130

dtlHang_hoa.EditItemIndex = -1

Lien_ket_du_lieu()

End Sub

Private Sub dtlHang_hoa_UpdateCommand(…, e …) …

'Xử lý cập nhật dữ liệu tại đây

Dim Don_gia_sua As TextBox

Don_gia_sua = e.Item.FindControl("Don_gia_sua")

'Don_gia_sua.Text Trả về đơn giá mới được sửa

'……

dtlHang_hoa.EditItemIndex = -1

Lien_ket_du_lieu()

End Sub

Tài liệu hướng dẫn giảng dạy

Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 86/174

DataList ở chế độ đang hiệu chỉnh

III. Điều khiển Repeater

Như 2 điều khiển DataList & DataGrid, điều khiển Repeater cũng được dùng để hiển thị dữ liệu. 

Tuy

nhiên, để hiển thị dữ liệu, chúng ta phải tự thiết kế hình thức hiển thị thông qua các tag HTML.

Điều khiển Repeater có các tag sau:

<HeaderTemplate></HeaderTemplate> (tùy chọn)

Qui định hình thức hiển thị cho tiêu đề. (Chỉ xuất hiện 1 lần, phía trên của điều khiển)

<ItemTemplate></ItemTemplate> (Bắt buộc phải có)

Qui định hình thức hiển thị cho các mục dữ liệu trong điều khiển.

<AlternatingItemTemplate></AlternatingItemTemplate> (tùy chọn)

Qui định hình thức hiển thị cho các mục dữ liệu trong điều khiển. Nội dung được qui định trong

cặp tag này sẽ hiển thị xen kẽ với các nội dung trong cặp tag <ItemTemplate>

</ItemTemplate>

<SeparatorTemplate></SeparatorTemplate> (tùy chọn)

Qui định hình thức hiển thị giữa các dòng dữ liệu

<FooterTemplate></FooterTemplate> (tùy chọn)

Qui định hình thức hiển thị cho tiêu đề dưới. (Chỉ xuất hiện 1 lần, phía dưới của điều khiển)

Ví dụ:

Bước 1. Tạo mới điều khiển Repeater: rptKhach_hang vào trang Web.

Điều khiển rptKhach_hang trên trang Web

Bước 2. Chuyển qua xem trang Web dưới dạng HTML

<asp:Repeater>

<asp:Repeater>

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 131

Bước 3. Bổ sung các tag sau

<asp:Repeater>

<HeaderTemplate>

<table>

<tr>

<td>

<strong>Họ khách hàng</strong>

</td>

<td>

<strong>Tên khách hàng</strong>

</td>

<td>

<strong>Địa chỉ</strong>

</td>

<td>

<strong>Điện thoại</strong>

</td>

</tr>

</HeaderTemplate>

<ItemTemplate>

<tr>

<td>

<%# Container.DataItem("Ho_khach_hang") %>

</td>

<td>

<%# Container.DataItem("Ten_khach_hang") %>

</td>

<td>

<%# Container.DataItem("Dia_chi")%>

</td>

<td>

<%# Container.DataItem("Dien_thoai") %>

</td>

</tr>

</ItemTemplate>

<AlternatingItemTemplate>

<tr>

<td>

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 132

<%# Container.DataItem("Ho_khach_hang") %>

</td>

<td>

<%# Container.DataItem("Ten_khach_hang") %>

</td>

<td>

<%# Container.DataItem("Dia_chi")%>

</td>

<td>

<%# Container.DataItem("Dien_thoai") %>

</td>

</tr>

</AlternatingItemTemplate>

<FooterTemplate>

</table>

</FooterTemplate>

</asp:Repeater>

Bước 4. Xem lại màn hình thiết kế

Bước 5. Tạo nguồn dữ liệu cho điều khiển

Private Sub Page_Load(…) Handles MyBase.Load

'Tạo dữ liệu cho đối tượng DataTable: dtKhach_hang

rptKhach_hang.DataSource = dtKhach_hang

rptKhach_hang.DataBind()

End Sub

Bước 6. Thi hành ứng dụng

Tài liệu hướng dẫn giảng dạy

Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 90/174

IV. Các ví dụ mở rộng

IV.1. Xử lý đảo hướng sắp xếp trong DataGrid

Ví dụ minh họa dưới đây xử lý đảo hướng sắp xếp trong DataGrid. Đồng thời, trong ví dụ này,

chúng tôi thực hiện liên kết dữ liệu qua đối tượng DataView để thực hiện sắp xếp trên nguồn 

dữ

liệu.

Private Sub Page_Load(…, e …) Handles MyBase.Load

If Not IsPostBack Then Lien_ket_du_lieu()

End Sub

Public Sub Lien_ket_du_lieu()

Dim dtKhach_hang As DataTable = Doc_ds_khach_hang()

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 133

Dim dvKhach_hang As New DataView(dtKhach_hang)

dvKhach_hang.Sort = ViewState("SortExpression")

If ViewState("SortAscending") = "false" Then

dvKhach_hang.Sort &= " desc"

End If

dtgKhach_hang.DataSource = dvKhach_hang

dtgKhach_hang.DataBind()

End Sub

Public Function Doc_ds_khach_hang() As DataTable

Dim sKet_noi As String

sKet_noi = "Provider=Microsoft.Jet.Oledb.4.0;Data..\Data\QlBanSach.mdb")

Dim cnKet_noi As New OleDbConnection(sKet_noi)

Dim dsCSDL As New DataSet

'Mở và đóng kết nối ngay khi thực hiện xong

cnKet_noi.Open()

Dim daBo_doc_ghi As New OleDbDataAdapter _

("Select * From KHACH_HANG", cnKet_noi)

cnKet_noi.Close()

daBo_doc_ghi.Fill(dsCSDL, "KHACH_HANG")

Return dsCSDL.Tables("KHACH_HANG")

End Function

Private Sub dtgKhach_hang_SortCommand(…, e …) …

Dim sSap_xep As String = ViewState("SortExpression")

Tài liệu hướng dẫn giảng dạy

Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 91/174

Dim sHuong As String = ViewState("SortAscending")

ViewState("SortExpression") = e.SortExpression

If (e.SortExpression = sSap_xep) Then

ViewState("SortAscending") = IIf(sHuong = "false", "true", "false")

End If

Lien_ket_du_lieu()

End Sub

IV.2. Tạo biểu tượng sắp xếp trong cột cho DataGrid

Sắp xếp tăng dần theo tên khách hàng

Private Sub dtgKhach_hang_ItemDataBound(…, e …) …

If e.Item.ItemType = ListItemType.Header Then

Dim sSap_xep As String = ViewState("SortExpression")

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 134

Dim sHuong As String = ViewState("SortAscending")

Dim sKy_hieu As String = IIf(sHuong = "false", " 6", " 5")

Dim i%

For i = 0 To dtgKhach_hang.Columns.Count - 1

If sSap_xep = _

dtgKhach_hang.Columns(i).SortExpression Then

Dim cell As TableCell = e.Item.Cells(i)

Dim lblKy_hieu As New Label

lblKy_hieu.Text = sKy_hieu

lblKy_hieu.Font.Name = "webdings"

lblKy_hieu.Font.Size = FontUnit.XSmall

cell.Controls.Add(lblKy_hieu)

End If

Next

End If

End Sub

IV.3. Định dạng hình thức hiển thị cho dòng dữ liệu thỏa điều

kiện trên DataGrid

Trong ví dụ sau, chúng ta thực hiện tô màu cho những khách hàng có tên bắt đầu bằng ký tự

H.

Private Sub dtgKhach_hang_ItemDataBound(…, e …) …

If e.Item.ItemIndex < 0 Then Exit Sub

Dim sTen_kh As String

sTen_kh = e.Item.DataItem("Ten_khach_hang")

'Tiến hành kiểm tra điều kiện,

'nếu thỏa thực hiện các xử lý định dạng

If sTen_kh.StartsWith("H") Then

e.Item.BackColor = Color.LemonChiffon

e.Item.Cells(1).Font.Bold = True

End If

End Sub

Tô màu những khách hàng có tên bắt đầu bằng ký tự H

IV.4. Tạo hiệu ứng chọn khi rê chuột qua các dòng dữ liệu

Private Sub dtgKhach_hang_ItemDataBound(…, e …) …

If e.Item.ItemIndex < 0 Then Exit Sub

e.Item.Attributes("onMouseOver") = _

"this.style.backgroundColor='#FFF8DC'"

e.Item.Attributes("onMouseOut") = _

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 135

"this.style.backgroundColor=''"

End Sub

Tạo hiệu ứng chọn dòng dữ liệu trên lưới

Kinh nghiệm giảng dạy:

Các điều khiển liên kết dữ liệu (DataGrid, DataList, Repeater) hỗ trợ khá tốt việc hiển

thị dữ liệu trên trang web.

Do hỗ trợ khá nhiều chức năng, giáo viên nên hướng dẫn học viên sử dụng tuần tự

từng chức năng mà các điều khiển hỗ trợ. Sau khi nắm vững các thao tác của từng

chức năng, học viên có thể phối hợp các chức năng lên cùng một bài tập.

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 136

TÀI LIỆU THAM KHẢO

1. MSDN Library - April 2003 & MSDN Library - July 2005

2. MSDN Traning: Developing Microsoft ASP.NET Web Applications Using Visual Studio.NET

3. MSDN Traning: Programming with Microsoft ADO.NET

4. ASP.NET Web Developer’s Guide

5. ASP.NET By Example [Steven A. Smith]

6.  Developing  Web  Applications  with  Visual  Basic  .NET  and  ASP.NET  [John  Alexander,  Billy 

Hollis]

7. Programming ASP.NET, 2nd Edition [Dan Hurwitz, Jesse Liberty]

8. Inside ASP.NET [Scott Worley]

9. ASP NET Bible [Mridula Parihar]

10. ASP.NET for Web Designers [Peter Ladka]

11. Professional ADO.NET Programming [Wrox]

12. Cascading Style Sheets - The Designer's Edge [Molly E. Holzschlag ]

13. JavaScript Bible - Gold Edition [Danny Goodman]

14. Real World Web Services [Yasser Shohoud]

15. Trang chủ ASP.Net: http://www.asp.net

16. Trường học trực tuyến của W3C: http://www.w3schools.com

1. Đối tượng transaction được tạo bởi phương thức nào :

a. NewTransaction

b. StartTransaction

c. BeginTransaction

d. CreateTransaction

2. Điều nào sau đây không phải là ưu điểm của Server control so với HTML control :

a. Duy trì dữ liệu trên control

b. Hiển thị không phụ thuộc vào trình duyệt

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 137

c. Có các sự kiện riêng biệt

d. Tốc độ hiển thị nhanh

3. Phương thức di chuyển nào sau đây cho phép giữ lại thông tin từ web form xuất phát :

a. Respose.Redirect

b. Server.Transfer

c. Server.Execute

d. Cả 3 phương thức trên

4. Ứng dụng web không sử dụng các control nào :

a. Windows controls

b. Server controls

c. HTML controls

d. User controls

e. Custom controls

5. Phương thức nào sau đây chắc chắn không làm thay đổi dữ liệu :

a. ExecuteNonQuery

b. ExecuteReader

c. ExecuteScalar

d. ExecuteReadOnly

6. Lệnh SQL nào dùng để thêm một dòng mới vào một bảng trong cơ cở dữ liệu :

a. INSERT NEW

b. ADD ROW

c. INSERT ROW

d. INSERT INTO

7. Chúng ta sử dụng giao dịch khi :

a. Lập trình các ứng dụng thương mại điện tử

b. Lập trình các ứng dụng cơ sở dữ liệu phức tạp

c. Thực hiện nhiều lệnh cơ sở dữ liệu như một lệnh

d. Cả 3 câu trên đều đúng

8. Mức cô lập (isolation level) cao nhât của một giao dịch là :

a. RepeatableRead

b. Serializable

c. Chaos

d. ReadUncommitted

e. ReadCommitted

9. Thành phần nào không phải là thuộc tính của đối tượng Dat Adapter :

a. SQLCommand

b. DeleteCommand

c. UpdateCommand

d. InsertCommand

10. Yếu tố nào sau đây không phải là sự khác biệt giữa Web form và Windows form :

a. Các loại control trên form

b. Chu trình sống

c. Giao diện người dùng

d. Khả năng lưu trữ dữ liệu

11. Các bước để tạo nơi lưu trữ một ứng dụng ASP.Net là :

a. Tạo thư mục vật lý, tạo thư mục ảo, tạo subweb

b. Tạo thư mục ảo, tạo subweb, tạo thư mục vật lý

c. Tạo thư mục ảo, tạo thư mục vật lý, tạo subweb

d. Tạo thư mục vật lý, tạo subweb, tạo thư mục ảo

12. Các sự kiện Application và Section diễn ra theo trình tự nào :

a. Application_Start, Application_End, Section_Start, Section_End

b. Application_Start, Section_Start, Section_End, Application_End

c. Section_Start, Application_Start, Application_End, Section_End

d. Section_Start, Section_End, Application_Start, Application_End

13. Các trình tự trên web form diễn ra theo trình tự nào :

a. Page_Init, Page_Load, Page_Unload, Page_Dispose

b. Page_Load, Page_Init, Page_Unload, Page_Dispose

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 138

c. Page_Load, Page_Unload, Page_Init, Page_Dispose

d. Page_Load, Page_Init, Page_Dispose, Page_Unload

14. Cookie là :

a. Một chuỗi kí tự trong dòng địa chỉ web

b. Một file nằm trên server

c. Một file nằm trên Client

d. Một file XML

15. Ứng dụng email như Outlook Express là loại ứng dụng :

a. Internet

b. Web

c. Ngang hàng (peer-to-peer)

d. Cả 3 câu trên đều sai

16. Ứng dụng web :

a. Chỉ chạy trên một máy đơn

b. Có kiến trúc Client/Server

c. Là tất cả ứng dụng có sử dụng Internet

d. Cả 3 câu trên đều đúng

17. Địa chỉ URL của ứng dụng web được xác định bởi :

a. Thư mục ảo của ứng dụng

b. Thư mục vật lý của ứng dụng

c. Tên của Project

d. Cả 3 câu đều sai

18. Ta có thể lưu trữ dữ liệu chung cho tât cả người dùng ở :

a. Biến Application

b. Biến Section

c. View State

d. Cả 3 nơi nói trên

19. Dữ liệu trên các control của web form được lưu trữ ở :

a. View state

b. Biến Application

c. Biến Section

d. Các biến toàn cục

20. Từ khóa nào không phải là từ khóa thứa kế trong C# :

a. new

b. protected

c. inherit

d. override

21. Dùng lệnh nào sau đây để di chuyển đến trang web hello.html :

a. Server.Transfer ("hello.html")

b. Response.Redirect ("hello.html")

c. Server.Execute ("hello.html")

d. Tất cả đều đúng

22. Control Kiểm chứng nào không có trong ASP.NET :

a. RequiredValidator

b. CompareValidator

c. RangeValidator

d. CustomValidator

23. Phương thức nào sau đây của Data Set dùng để cập nhật dữ liệu :

a. Fill

b. AcceptChanges

c. RejectChange

d. Update

24. Lệnh dùng để hoàn tất một giao dịch là :

a. Finish

b. Commit

c. Rollback

d. Update

Bài Giảng Môn Lập Trình Website  ASP.Net

Biên sọan: Dương Thành Phết Trang 139

25. Phát biểu nào sai :

a. Phần thực thi của ứng dụng web chạy dưới sự điều khiển của web server

b. Thông tin được truyền từ server đến client bằng giao thức FTP

c. Ứng dụng web không cần phải được cài đặt trên phía client

d. Dịch vụ web là một loại ứng dụng Internet

26. Tên của một thư mục ảo có dạng :

a. c:\myproject

b. http://www.mycompany.com/myproject

c. aspnet://myproject

d. c:\myproject\aspnet

Bạn đang đọc truyện trên: Truyen247.Pro

Tags: