Tài liệu hướng dẫn Chương trình kỹ thuật viên - Học phần 3 - Lập trình ứng dựng web vs ASP.NET

pdf 175 trang hapham 2010
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu hướng dẫn Chương trình kỹ thuật viên - Học phần 3 - Lập trình ứng dựng web vs ASP.NET", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftai_lieu_huong_dan_chuong_trinh_ky_thuat_vien_hoc_phan_3_lap.pdf

Nội dung text: Tài liệu hướng dẫn Chương trình kỹ thuật viên - Học phần 3 - Lập trình ứng dựng web vs ASP.NET

  1. TRUNG TÂM TIN HỌC – ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM 227 Nguyễn Văn Cừ - Quận 5- Tp.Hồ Chí Minh Tel: 8351056 – Fax 8324466 – Email: ttth@hcmuns.edu.vn TÀI LIỆU HƯỚNG DẪN GIẢNG DẠY CHƯƠNG TRÌNH KỸ THUẬT VIÊN Học phần 3 LẬP TRÌNH ỨNG DỤNG WEB VỚI ASP.NET Mã tài liệu: DT_NCM_LT_TLGD_ASP.NET Phiên bản 1.0 – Tháng 06/05
  2. Tài liệu hướng dẫn giảng dạy MỤC LỤC GIỚI THIỆU 5 GIÁO TRÌNH LÝ THUYẾT 6 TÀI LIỆU THAM KHẢO 6 Bài 1 7 TỔNG QUAN VỀ ASP.NET 7 I. Tổng quan về lập trình ứng dụng Web 8 I.1. HTTP và HTML - Nền mĩng của Kỹ thuật lập trình web 8 I.2. Tìm hiểu các mơ hình ứng dụng 10 II. Giới thiệu về ASP.Net 12 II.1. Tìm hiểu về .Net Phatform 12 II.2. Tìm hiểu về .Net Framework 12 II.3. Tìm hiểu về ASP.Net 16 II.4. Những ưu điểm của ASP.Net 16 II.5. Quá trình xử lý tập tin ASPX 17 III. Web Server 18 III.1. Internet Information Services 18 III.2. Cài đặt Web Server 19 III.3. Cấu hình Internet Information Services 22 III.4. Tạo các ứng dụng web trên IIS 23 IV. Tạo ứng dụng Web đầu tiên 24 IV.1. Khởi động MS Visual Studio .Net 24 IV.2. Tạo mới ứng dụng Web 25 IV.3. Phân loại tập tin trong ASP.Net 27 IV.4. Làm quen với các thành phần giao diện trên VS .Net 28 Bài 2 32 WEB SERVER CONTROL 32 I. HTML Control 33 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 1/174
  3. Tài liệu hướng dẫn giảng dạy II. ASP.Net Web Control 35 II.1. Asp.Net Page 35 II.2. Điều khiển cơ bản 36 II.3. Điều khiển kiểm tra dữ liệu 46 II.4. Một số điều khiển khác 53 II.5. Đối tượng ViewState 59 Bài 3 61 CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU 61 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 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 2/174
  4. Tài liệu hướng dẫn giảng dạy 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 I. Tìm hiểu về Web Services 137 II. Xây dựng Web Services 140 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 3/174
  5. Tài liệu hướng dẫn giảng dạy 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 4/174
  6. Tài liệu hướng dẫn giảng dạy GIỚI THIỆU Sau khi hồn thành khĩa học này, học viên sẽ cĩ các khả năng: ƒ Cài đặt và cấu hình Web Server. ƒ Thiết kế, xây dựng, phát triển ứng dụng web với Asp.Net Với thời lượng là 36 tiết LT và 60 tiết TH được phân bổ như sau: STT Bài học Số tiết LT Số tiết TH 1 Tổng quan về Asp.Net 3 5 2 Asp Server Control 6 10 3 Các điều khiển liên kết dữ liệu 6 10 4 Xây dựng lớp xử lý dữ liệu 3 5 5 Xây dựng các đối tượng thể hiện 6 10 6 Xây dựng và quản lý ứng dụng web 9 15 7 Web Services 3 5 Tổng số tiết: 36 60 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 5/174
  7. Tài liệu hướng dẫn giảng dạy GIÁO TRÌNH LÝ THUYẾT TÀI LIỆU THAM KHẢO Trong quá trình biên soạn tài liệu hướng dẫn giảng dạy và giáo trình, chúng tơi cĩ tham khảo một số tài liệu sau: 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: 16. Trường học trực tuyến của W3C: Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 6/174
  8. Tài liệu hướng dẫn giảng dạy HƯỚNG DẪN PHẦN LÝ THUYẾT Bài 1 TỔNG QUAN VỀ ASP.NET Tĩm tắt Lý thuyết 3 tiết - Thực hành 5 tiết Mục tiêu Các mục chính Bài tập Tìm hiểu các kỹ thuật lập trình ứng 1. Tổng quan về lập trình ứng dụng 1.1, 1.2, 1.3, 1.4, dụng web và các mơ hình ứng dụng. web 1.6, 1.7 Cài đặt và cấu hình Web Server. 2. Giới thiệu về Asp.Net Bài làm thêm: 3. Web Server Tìm hiểu mơi trường phát triển ứng 1.5 dụng web với Visual Studio.Net. 4. Tạo ứng dụng web đầu tiên Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 7/174
  9. Tài liệu hướng dẫn giảng dạy I. Tổng quan về lập trình ứng dụng Web Ứng dụng Web là một hệ thống phức tạp, dựa trên nhiều yếu tố: phần cứng, phần mềm, giao thức, ngơn ngữ và thành phần giao diện. Trong phần này, chúng tơi sẽ giới thiệu sơ lược cho bạn về các thành phần cơ bản của ứng dụng Web: HTTP (giao thức trao đổi tài nguyên) và HTML (ngơn ngữ xây dựng trang web). I.1. HTTP và HTML - Nền mĩng của Kỹ thuật lập trình web I.1.1. HTTP (Hypertext Transfer Protocol) Kỹ thuật cơ bản của lập trình ứng dụng web khởi đầu là HyperText Transfer Protocol (HTTP), đĩ là một giao thức cho phép các máy tính trao đổi thơng tin với nhau qua mạng máy tính. HTTP được xác định qua URLs (Uniform Resource Locators), với cấu trúc chuỗi cĩ định dạng như sau: http: // [: ] [ [? ]] Sau tiền tố http://, chuỗi URL sẽ chứa tên host hay địa chỉ IP của máy server (cĩ thể cĩ số cổng đi kèm), tiếp theo là đường dẫn dẫn đến tập tin server được yêu cầu. Tùy chọn sau cùng là tham số, cịn được gọi là query string (chuỗi tham số/chuỗi truy vấn). Ví dụ: Phân tích địa chỉ Trang web index.asp được lưu trữ trong thư mục /comersus6/store tại Web Server với host là www.comersus.com Một số thuật ngữ: ƒ Internet: là một hệ thống gồm nhiều máy tính ở khắp nơi trên thế giới nối lại với nhau. ƒ WWW: World Wide Web (mạng tồn cầu), thường được dùng khi nĩi về Internet ƒ Web Server: Máy tính lưu trữ các trang web ƒ Web Client: Máy tính dùng để truy cập các trang web ƒ Web Browser: Phần mềm dùng để truy cập web Một số web browser phổ biến: Internet Explorer, Netscape Navigator, Avant Browser, Opera, Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 8/174
  10. Tài liệu hướng dẫn giảng dạy I.1.2. HTML (Hypertext Markup Language) Trang web HTML là một tập tin văn bản được viết bằng ngơn ngữ HTML, ngơn ngữ này cịn được biết đến với tên gọi: ngơn ngữ đánh dấu văn bản. Ngơn ngữ đánh dấu HTML sử dụng các ký hiệu quy định sẵn (được gọi là tag) để trình bày nội dung văn bản. Nội dung Định dạng Kết quả hiển thị Trang chủ Windows Server System Microsoft Ví dụ: Nội dung trang web AspDotNet.htm ASP.Net Chào các bạn đã đến với ASP.Net!!! Ghi chú: Các bạn cĩ thể đọc thêm các tag HTML ở phần Phụ lục B Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 9/174
  11. Tài liệu hướng dẫn giảng dạy I.2. Tìm hiểu các mơ hình ứng dụng I.2.1. Mơ hình ứng dụng 2 lớp Yêu cầu Trả lời Client Database Server Đây là một dạng mơ hình đơn giản, khá phổ biến của một ứng dụng phân tán. Trong mơ hình này, việc xử lý dữ liệu được thực hiện trên Database Server, việc nhận và hiển thị dữ liệu được thực hiện ở Client. a. Ưu điểm ƒ Dữ liệu tập trung Ỵ đảm bảo dữ liệu được nhất quán. ƒ Dữ liệu được chia sẻ cho nhiều người dùng. b. Khuyết điểm ƒ Các xử lý tra cứu và cập nhật dữ liệu được thực hiện ở Database Server, việc nhận kết quả và hiển thị phải được thực hiện ở Client Ỵ Khĩ khăn trong vấn đề bảo trì và nâng cấp. ƒ Khối lượng dữ liệu truyền trên mạng lớn Ỵ chiếm dụng đường truyền, thêm gánh nặng cho Database Server. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 10/174
  12. Tài liệu hướng dẫn giảng dạy I.2.2. Mơ hình ứng dụng 3 lớp Mơ hình 2 lớp phần nào đáp ứng được các yêu cầu khắc khe của một ứng dụng phân tán, tuy nhiên, khi khối lượng dữ liệu lớn, ứng dụng địi hỏi nhiều xử lý phức tạp, số người dùng tăng, mơ hình 2 lớp khơng thể đáp ứng được. Mơ hình 3 lớp sử dụng thêm Application Server giữ nhiệm vụ tương tác giữa Client và Database server, giảm bớt các xử lý trên Database server, tập trung các xử lý nhận và hiển thị dữ liệu tại Application server. Client Appication Server Database Server a. Ưu điểm ƒ Hỗ trợ nhiều người dùng ƒ Giảm bớt xử lý cho Client Ỵ Khơng yêu cầu máy tính ở Client cĩ cấu hình mạnh. ƒ Xử lý nhận và hiển thị dữ liệu tập trung tại Application Server Ỵ dễ quản lý, bảo trì và nâng cấp. ƒ Xử lý truy cập dữ liệu tập trung tại Database Server. b. Khuyết điểm ƒ Phải sử dụng thêm một Application Server Ỵ Tăng chi phí. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 11/174
  13. Tài liệu hướng dẫn giảng dạy II. Giới thiệu về ASP.Net II.1. Tìm hiểu về .Net Phatform .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 Phatform Những sản phẩm cơng nghệ .Net của Microsoft bao gồm: MSN.Net, Office.Net, Visual Studio.Net và Windows Server 2003 được biết đến với tên gọi Windows .Net Server. Visual Studio .Net là bộ phần mềm được dùng để xây dựng và phát triển các ứng dụng bao gồm các ngơn ngữ lập trình: C++.Net, Visual Basic.Net, ASP.Net, C# và J#. Tất cả các ngơn ngữ này được xây dựng dựa trên nền .Net Framework, vì thế, bạn sẽ nhận thấy cú pháp cơ bản của những ngơn ngữ này tương tự nhau. II.2. Tìm hiểu về .Net Framework VB C++ C# J# CCommon Language Specification ASP .NET Windows Web Forms - Web Services Forms Mobile Internet Toolkit ADO .NET and XML Base Class Library Common Language Runtime Operating System Kiến trúc .Net Framework Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 12/174
  14. Tài liệu hướng dẫn giảng dạy II.2.1. 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 một 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, XP.NET, 2003 Server sẽ đơn giản và tiện dụng hơn trong khi lập trình. II.2.2. 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, 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! II.2.3. 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 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 ngồ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! Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 13/174
  15. Tài liệu hướng dẫn giảng dạy a. 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, b. 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, c. 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 tồ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, d. 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 tố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 để 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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 14/174
  16. Tài liệu hướng dẫn giảng dạy e. 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, II.2.4. 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. System.Web System.Windows.Forms Services UI Design ComponentModel Descriiptiion HtmllControlls Diiscovery WebControlls Protocolls System.Drawing Caching Security Drawing2D Printing Configuration SessionState DImaging PText System.Data System.Xml OleDb SqlClient XSLT Serialization Common SQLTypes XPath System Collections IO Security Runtime Configuration Net ServiceProcess InteropServiices Diagnostics Reflection Text Remotiing Globalization Resources Threading Seriialliizatiion 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. Ngồ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 một tên đầy đủ để nĩi đến một 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. Đặ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). Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 15/174
  17. Tài liệu hướng dẫn giảng dạy II.3. 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. Thêm vào đĩ, ASP khơng cĩ hỗ trợ cache, khơng được biên dịch trước nên phần nào hạn chế về mặt tốc độ thực hiện. Quá trình xử lý Postback khĩ khăn, Đầ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ì hồn tồn khác, mã lệnh ở phía server (ví dụ: mã lệnh trong trang ASP) 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.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. II.4. 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. Thay vì phải đọc và thơng dịch mỗi khi trang web được yêu cầu, ASP.Net biên dịch những trang web động 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 ASPX Engine Response Html Page Page DLL Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 16/174
  18. Tài liệu hướng dẫn giảng dạy – 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 – Hỗ trợ nhiều cơ chế cache. – Triển khai cài đặt ƒ Khơng cần lock, khơng cần đăng ký DLL ƒ Cho phép nhiều hình thức cấu hình ứng dụng – Hỗ trợ quản lý ứng dụng ở mức tồn cục ƒ Global.aspx cĩ nhiều sự kiện hơn ƒ Quản lý session trên nhiều Server, khơng cần Cookies II.5. 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: Yêu cầu Server tìm Xử lý tập kiếm tập tin ASPX tin Biên dịch lỗi Cĩ Biên dịch Thay đổi? Lưu trữ lại dưới dạng Khơng DLL Hồi đáp Thi hành trang ASPX Quá trình xử lý tập tin ASPX Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 17/174
  19. Tài liệu hướng dẫn giảng dạy III. Web Server Trong phần này chúng tơi giới thiệu cho bạn về IIS (phần mềm Web Server của Microsot dành cho Windows), đồng thời hướng dẫn bạ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 XP, Windows 2000, Windows Server 2003. III.1. Internet Information Services IIS cĩ thể được sử dụng như một Web server, kết hợp với ASP để 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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 18/174
  20. Tài liệu hướng dẫn giảng dạy III.2. Cài đặt Web Server III.2.1. Cài đặt Web Server trên Windows 2000/Windows XP Professional Windows 2000 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 đã được cài rồ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 Details để chọn các mục chi tiết. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 19/174
  21. Tài liệu hướng dẫn giảng dạy Bước 5. Chọn các mục cần cài đặt trong đĩ bạn nhớ chọn: ƒ FrontPage 2000 Server Extensions ƒ Internet Information Services Snap-In ƒ Internet Services Manager (HTML) Bước 6. Click OK để hệ thống tự cài đặt. III.2.2. 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 nút Details để chọn các mục chi tiết. Các bước cịn lại thực hiện như trên Windows 2000 (từ bước 3 đến bước 6) Cài đặt IIS trên Windows Server 2003 III.2.3. Kiểm tra kết quả cài đặt Web Server Sau khi đã cài đặt IIS, bạn cĩ thể kiểm tra xem Web Server đã làm việc hay chưa. Mở web browser (Internet Explorer) và gõ: //localhost trong phần địa chỉ. Một khi Web server đã được cài đặt, một trang web mẫu sẽ được hiển thị. – Localhost là địa chỉ của máy cục bộ mà bạn đang làm việc. Nếu máy của bạn đang kết nối vào mạng LAN và cĩ một địa chỉ IP, bạn cĩ thể dùng địa chỉ này thay cho localhost. Để xác định địa chỉ IP của máy mình: Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 20/174
  22. Tài liệu hướng dẫn giảng dạy ƒ Vào menu Start|Run và gõ lệnh: command hoặc cmd ƒ Trên màn hình DOS, gõ lệnh: ipconfig và xem phần IP Address – Khi gõ //localhost, bạn sẽ thấy trong thanh địa chỉ tự động đổi thành: HTTP là giao thức mặc định được dùng trên Internet. Vì HTTP là một giao thức thuộc bộ TCP/IP, bạn cần cĩ địa chỉ IP để các máy tính khác trong mạng cĩ thể truy cập được đến trang web của bạn. – Sau khi cài đặt Web Server, mặc định trên ổ đĩa C:\ sẽ cĩ sẵn thư mục C:\inetpub\wwwroot. Đây là thư mục mà Web Server mặc định ánh xạ vào //localhost, do đĩ, các trang web đặt trong wwwroot cĩ thể được truy cập bởi các máy tính khác. Để kiểm tra, hãy tạo một trang web và đặt vào c:\inetpub\wwwroot. Trên IE, gõ địa chỉ: /localhost/ Kiểm tra thành cơng Web Server trên Windows Server 2003 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 21/174
  23. Tài liệu hướng dẫn giảng dạy III.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, Microsoft sử dụng cơng cụ Microsoft Management Console (MMC) để làm cơng cụ quản lý, do đĩ tất cả các thao tác đều sử dụng menu ngữ cảnh bằng cách nhắp chuột phải trên mục muốn chọn. Chọn Properties của mục Default Web Site, bạn cĩ thể xem và cấu hình lại các thơng tin dành cho trang web mặc định của mình. – Trên tab Home Directory, bạn cĩ thể thay đổi đường dẫn đến một thư mục khác trên ổ cứng nếu muốn Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 22/174
  24. Tài liệu hướng dẫn giảng dạy – Trên tab Documents, bạn cĩ thể đặt trang web mặc định sẽ hiển thị khi Web Browser khơng chỉ định trang web cụ thể. Bạn sẽ thấy index.htm và default.htm được liệt kê trong phần này. Đây là lý do tại sao khi bạn gõ //localhost thì Web browser lại hiển thị được trang hompage. Thực ra, //localhost tương đương với //localhost/index.htm hay //localhost/default.htm. – Trong tab Directory Security, bạn cĩ thể định lại các chế độ kiểm tra người dùng truy cập vào web site. III.4. Tạo các ứng dụng web trên IIS Một Web Server cĩ thể quản lý nhiều ứng dụng Web đồng thời. Thơng thường, bạn sẽ tổ chức một thư mục con trong wwwroot cho mỗi ứng dụng nhưng bạn cũng cĩ thể tạo ánh xạ từ một thư mục khác. – Nếu bạn đặt thư mục trong wwwroot, IIS sẽ tự động liệt kê nĩ trong mục Default Web Site. – Nếu muốn tạo một thư mục nằm ngồi thư mục wwwroot thành một web site, chúng ta cần tạo Virtual Directory liên kết đến thư mục đĩ. Để tạo một virtual directory: – Chọn mục New | Virtual Directory trên menu ngữ cảnh. Tạo Virtual Directory – Nhập vào tên alias cho thư mục ảo. – Chọn nút Browse để chọn thư mục muốn ánh xạ. Tiếp đĩ, bạn sẽ phải đặt một số cấu hình khởi đầu cho web site, những thơng tin này cĩ thể cấu hình lại tương tự như với Default Web Site ở trên Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 23/174
  25. Tài liệu hướng dẫn giảng dạy Kinh nghiệm giảng dạy: Trong phần này, giáo viên cần hướng dẫn cho học viên cài đặt IIS và kiểm tra kết quả cài đặt. Phần thực hành này tuy dễ nhưng nếu học viên khơng hồn thành tốt phần này sẽ khơng thể làm tiếp các bài thực hành sau. IV. Tạo ứng dụng Web đầu tiên IV.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. VS.NET cĩ nhiều thay đổi so với VS 98. Hình dưới là màn hình khởi đầu của VS.NET 2003. Vùng làm việc chính giữa đang hiển thị trang "Start page" với 3 mục chính: Projects, Online Resource và My Profile. My Profile ghi nhớ thơng tin về người sử dụng VS.NET. Các thơng tin chủ yếu liên quan đến cách chúng ta sẽ sử dụng VS.NET như thế nào. Chẳng hạn như cách hiển thị các cửa sổ, các phím tắt, cách VS.NET hiển thị màn hình giúp đỡ, Online Resource cần một kết nối với Internet để download các thơng tin từ website của Microsoft về máy tính của chúng ta. Projects liệt kê các project mà chúng ta đã làm việc trong thời gian gần đây. Trên mục này, chúng ta cũng cĩ thể tạo mới một project bằng cách nhấn vào nút New Project. Màn hình Microsoft Visual Studio .Net Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 24/174
  26. Tài liệu hướng dẫn giảng dạy IV.2. Tạo mới ứng dụng Web IV.2.1. Tạo ứng dụng web đầu tiên Chúng ta cĩ thể tạo ứng dụng Asp.Net sử dụng Visual Basic Project theo các bước sau: Bước 1. Chọn từ thực đơn File | New | Project. Xuất hiện hộp thoại tạo mới Project. 2 3 Màn hình tạo mới ứng dụng ƒ Chọn loại Project là Visual Basic Project từ Project Types ƒ Chọn ASP.Net Web Application từ vùng Template ƒ Ứng dụng mới được tạo mặc định cĩ tên là WebApplicationXX (XX là số thứ tự tự động). Chúng ta cĩ thể thay đổi tên của Project tại điều khiển Location. Trong ví dụ này, chúng tơi thay đổi tên Project WebApplication1 thành MinhHoa. Project được tạo mặc định lưu tại thư mục: C:\Inetpub\wwwroot IV.2.2. Bổ sung điều khiển và thi hành ứng dụng Thiết lập thuộc tính pageLayout của trang mặc định (WebForm1.aspx) là FlowLayout (thực hiện thơng qua cửa sổ thuộc tính) Thêm 2 điều khiển Label cĩ trên trang WebForms của thanh cơng cụ Toolbox. Tên điều khiển Thuộc tính Text lblChao Chào bạn đến với lập trình web với ASP.Net lblThoi_gian [Chuỗi rỗng] Viết lệnh cho sự kiện Page_Load: Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Put user code to initialize the page here Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 25/174
  27. Tài liệu hướng dẫn giảng dạy lblThoi_gian.Text = "Bây giờ là " & _ Date.Now.ToString("dd/MM/yyyy HH:mm:ss") End Sub Màn hình ứng dụng Web: MinhHoa Lưu ý: Phải lưu tập tin với tùy chọn Save with Encoding nếu như trong cửa sổ lệnh hoặc màn hình thiết kế cĩ sử dụng Font Unicode. Lưu ứng dụng với Font chữ Unicode Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 26/174
  28. Tài liệu hướng dẫn giảng dạy Nhấn F5 hoặc trên thanh cơng cụ để thi hành ứng dụng. Kết quả hiển thị của trang Web IV.3. 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 mặc định 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 27/174
  29. Tài liệu hướng dẫn giảng dạy IV.4. Làm quen với các thành phần giao diện trên VS .Net IV.4.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ể: – 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. – 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. – 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: Thêm thư viện ƒ Web User Control: Thêm điều khiển người dùng ƒ Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 28/174
  30. Tài liệu hướng dẫn giảng dạy Màn hình thêm thành phần mới cho ứng 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. Xác định trang khởi động cho ứng dụng – 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. IV.4.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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 29/174
  31. Tài liệu hướng dẫn giảng dạy Cửa sổ thuộc tính IV.4.3. Toolbox Hiển thị Toolbox: Thực đơn View | Toolbox Web Control Html Control IV.4.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. Cửa sổ Document Outline Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 30/174
  32. Tài liệu hướng dẫn giảng dạy Kinh nghiệm giảng dạy: Trong phần này, giáo viên cần hướng dẫn học viên làm quen với các thành phần giao diện, các cửa sổ làm việc, chủ động sắp xếp các cửa sổ sao cho thuận tiện nhất trong suốt quá trình làm việc. Bước tiếp theo, giáo viên hướng dẫn cho học viên cách tạo một ứng dụng web (vị trí lưu trữ mặc định tại C:\inetpub\wwwroot), viết lệnh và cho thi hành ứng dụng web đơn giản đầu tiên. Giáo viên cần giới thiệu cho học viên các loại tập tin cĩ trong project, cách lưu lại bài với font chữ Unicode. Bên cạnh đĩ, giáo viên hướng dẫn cho học viên cách tạo Virtual directory ánh xạ đến thư mục của ứng dụng, sử dụng IIS để quản lý các ứng dụng web. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 31/174
  33. Tài liệu hướng dẫn giảng dạy Bài 2 WEB SERVER CONTROL Tĩm tắt Lý thuyết 6 tiết - Thực hành 10 tiết Mục tiêu Các mục chính Bài tập Sử dụng thành thạo các điều khiển 1. HTML Control 2.1, 2.2, 2.3, 2.4, HTML & ASP.Net Web Control ƒ HTML Control 2.5, 2.6, 2.7, 2.8, Làm việc với đối tượng ViewState. ƒ HTML Server Control 2.9, 2.10 2. ASP.Net Web Control Bài làm thêm: ƒ Asp.Net Page 2.11, 2.12, 2.13 ƒ Điều khiển cơ bản ƒ Điều khiển kiểm tra dữ liệu ƒ Một số điều khiển khác 3. Đối tượng ViewState Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 32/174
  34. Tài liệu hướng dẫn giảng dạy I. HTML Control Điều khiển HTML (tag HTML) trong trang ASP.Net cĩ thể xem như những chuỗi văn bản bình thường. Để cĩ thể được sử dụng lập trình ở phía Server, ta gán thuộc tính runat="Server" cho các điều khiển HTML đĩ. Những điều khiển HTML (tag HTML) cĩ thuộc tính runat="Server" được gọi là HTML Server Control. Các điều khiển HTML trên thanh cơng cụ Để chuyển các điều khiển HTML thành điều khiển HTML Server, ta chọn Run As Server Control từ thực đơn ngữ cảnh. Chuyển điều khiển HTML thành điều khiển HTML Server Ví dụ: Các điều khiển HTML: Label, Textbox, Button Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 33/174
  35. Tài liệu hướng dẫn giảng dạy Xử lý sự kiện: Private Sub butTong_ServerClick( ) txtTong.Value = Val(txtA.Value) + Val(txtB.Value) End Sub Khi thi hành ứng dụng Ví dụ: Upload file với điều khiển HTML File Field 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. Chú ý: Để chép được tập tin lên thư mục Upload, bạn cần phải cấp quyền cho phép ghi trên thư mục Upload Điều khiển HTML File Field: fileTap_tin lblThong_bao Màn hình ở chế độ thiết kế Xử lý sự kiện: Private Sub butUpload_ServerClick( , e ) Dim sTap_tin As String Dim sTen_file As String sTap_tin = fileTap_tin.PostedFile.FileName 'Phân tích đường dẫn tập tin để lấy tên tập tin sTen_file = sTap_tin.Substring(sTap_tin.LastIndexOf("\") + 1, sTap_tin.Length - sTap_tin.LastIndexOf("\") + 1)) 'Thực hiện chép tập tin lên thư mục Upload fileTap_tin.PostedFile.SaveAs(Server.MapPath("Upload\") & sTen_file) lblThong_bao.InnerHtml = " Thơng báo: Bạn đã upload file thành cơng " End Sub Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 34/174
  36. Tài liệu hướng dẫn giảng dạy II. ASP.Net Web Control II.1. Asp.Net Page Đây là thành phần chính của giao diện, là nơi chứa các điều khiển, được sử dụng để thể hiện nội dung trang web đến người dùng. II.1.1. Sự kiện Page_Init() Page_Load() Page_PreRender() Page_Unload() Chuỗi sự kiện của đối tượng Page a. Init Sự kiện Page_Init xảy ra đầu tiên khi trang web được yêu cầu. Private Sub Page_Init( ) Handles MyBase.Init 'Do not modify it using the code editor. InitializeComponent() End Sub b. Load Sự kiện này là nơi mà bạn sẽ đặt phần lớn các xử lý, giá trị khởi động ban đầu cho trang web. Sự kiện này luơn xảy ra mỗi khi trang web được yêu cầu. Private Sub Page_Load( ) Handles MyBase.Load 'Put user code to initialize the page here End Sub c. PreRender Sự kiện này xảy ra khi trang Web chuẩn bị được trả về cho Client. Private Sub Page_PreRender(ByVal sender As Object, ) Handles MyBase.PreRender End Sub Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 35/174
  37. Tài liệu hướng dẫn giảng dạy d. Unload Sự kiện này đối lập với sự kiện Page_Init. Nếu như sự kiện Page_Init xảy ra đầu tiên khi trang Web được yêu cầu, thì đây, Page_Unload là xự kiện sau cùng, xảy ra sau tất cả những sự kiện khác. Private Sub Page_Unload(ByVal sender As Object, ) Handles MyBase.Unload End Sub II.1.2. Thuộc tính a. IsPostBack Đây là một thuộc tính kiểu luận lý. Giá trị của thuộc tính này cho biết trạng thái của trang Web khi được Load, nếu là lần Load đầu tiên, giá trị của thuộc tính này = False. Thuộc tính này thường được sử dụng trong sự kiện Page_Load để kiểm tra trạng thái của trang Web. Private Sub Page_Load( ) Handles MyBase.Load 'Put user code to initialize the page here If Not IsPostBack Then lblPostBack.Text = "Đây là lần yêu cầu đầu tiên" Else lblPostBack.Text = "Đây là lần yêu cầu sau." End If End Sub b. SmartNavigation Trong trường hợp nội dung của trang Web vượt quá kích thước hiển thị của màn hình và bạn đang đọc ở phần giữa của trang Web, khi được ReLoad lại, màn hình sẽ hiển thị phần đầu của trang Web. Nếu giá trị của thuộc tính này là True, trình duyệt Web sẽ vẫn giữ nguyên vị trí mà bạn đang đọc sau khi Reload. Đây là một thuộc tính kiểu luận lý. Giá trị mặc định là False. II.2. Điều khiển cơ bản Dưới đây là các lý do bạn nên sử dụng ASP.Net 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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 36/174
  38. Tài liệu hướng dẫn giảng dạy 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 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. II.2.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 = " Cịn đây là chuỗi văn bản được in đậm " II.2.2. 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 ƒ _blank: Hiển thị trang liên kết ở một cửa sổ mới. ƒ _self: Hiển thị trang liên kết tại chính cửa sổ chứa liên kết đĩ. ƒ _parent: Hiển thị trang liên kết ở frame cha. Ví dụ: hplASP_net.Text = "Trang chủ ASP.Net" hplASP_net.ImageUrl = "Hinh\Asp_net.jpg" Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 37/174
  39. Tài liệu hướng dẫn giảng dạy hplASP_net.NavigateUrl = " " hplASP_net.Target = "_blank" Kết quả hiển trị trên trang Web II.2.3. 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: ƒ SingleLine: Hiển thị và nhập liệu 1 dịng văn bản ƒ MultiLine: Hiển thị và nhập liệu nhiều dịng văn bản ƒ 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ụ: – AutoPostBack: Thuộc tính này qui định điều khiển cĩ được phép tự động PostBack về Server khi nội dung trong Textbox bị thay đổi hay khơng. Giá trị mặc định của thuộc tính này là False - khơng tự động Postback. II.2.4. Image Điều khiển này được dùng để hiển thị hình ảnh lên trang Web. 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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 38/174
  40. Tài liệu hướng dẫn giảng dạy ƒ NotSet ƒ Left ƒ Middle ƒ TextTop ƒ Right II.2.5. 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. CommandArgument Thơng tin bổ sung cho sự kiện Command. CausesValidation Trang web mặc định kiểm tra tính hợp lệ dữ liệu mỗi khi được PostBack. Các điều khiển Button, ImageButton, LinkButton luơn PostBack về Server mỗi khi được nhấn Ỵ luơn kiểm tra tính hợp lệ dữ liệu trên trang web. Muốn trang Web bỏ qua việc kiểm tra dữ liệu khi được nhấn, gán trị cho thuộc tính này = False. Giá trị mặc định của thuộc tính này là True. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 39/174
  41. Tài liệu hướng dẫn giảng dạy Chúng ta sẽ tìm hiểu 2 thuộc tính CommandName và CommandArgument ở phần sau. Ngồ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. Button, LinkButton và ImageButton II.2.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). a. 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. ƒ Single: Chỉ được chọn một mục cĩ trong danh sách (mặc định). ƒ Multiple: Cho phép chọn nhiều lựa chọn. b. 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, sử dụng thuộc tính Selected của đối tượng Item để kiểm tra xem mục đĩ cĩ được chọn hay khơng. (Xem ví dụ ở trang kế tiếp) – SelectedIndex: Cho biết chỉ số của mục được chọn. Trong trường hợp chọn nhiều mục, SelectedIndex sẽ trả về chỉ số mục chọn đầu tiên. – SelectedItem: Cho biết mục được chọn. Trong trường hợp chọn nhiều mục, SelectedItem sẽ trả về mục chọn đầu tiên. – SelectedValue: Cho biết giá trị của mục được chọn. Trong trường hợp chọn nhiều mục, SelectedValue sẽ trả về giá trị mục chọn đầu tiên. c. 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( ) Items.Add( ) – 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 40/174
  42. Tài liệu hướng dẫn giảng dạy Items.Insert( , ) Items.Insert( , ) – Count: Trả về số mục (Item) cĩ trong danh sách. Items.Count – Contains: Kiểm tra xem một Item đã cĩ trong tập hợp Items hay chưa, nếu cĩ, phương thức này sẽ trả về giá trị True, ngược lại, trả về False. Items.Contains( ) – Remove: Xĩa đối tượng Item tại ra khỏi danh sách. Items.Remove( ) Items.Remove( ) ƒ 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. ƒ Trong trường hợp các đối tượng Item là đối tượng, ta truyền vào một biến tham chiếu đến item cần xĩa. – RemoveAt: Xĩa một item tại vị trí index ra khỏi danh sách. Items.RemoveAt( ) – 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 Ví dụ: Điều khiển danh sách lstKhu_dl: SelectionMode=Multiple, Rows=4 Khi thiết kế Xử lý sự kiện: Private Sub Page_Load( ) Handles MyBase.Load If Not IsPostBack Then lstKhu_dl.Items.Add("Vịnh Hạ Long") lstKhu_dl.Items.Add("Phan Thiết - Mũi Né") lstKhu_dl.Items.Add("Nha Trang") lstKhu_dl.Items.Add("Đà Lạt") End If End Sub Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 41/174
  43. Tài liệu hướng dẫn giảng dạy Private Sub butChon_dia_diem_Click( ) Dim i As Integer lblDia_diem.Text = "" For i = 0 To lstKhu_Dl.Items.Count - 1 If lstKhu_dl.Items(i).Selected Then lblDia_diem.Text &= lstKhu_dl.Items(i).Text() & " " End If Next End Sub Khi thi hành II.2.7. Checkbox, RadioButton a. 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. b. Ví dụ Nhĩm các RadioButton Giới tính, Thu nhập Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 42/174
  44. Tài liệu hướng dẫn giảng dạy Danh sách các điều khiển Điều khiển Loại Thuộc tính Giá trị chkAnh_van CheckBox Checked True chkPhap_van CheckBox rbtNam RadioButton Checked True GroupName Gioi_tinh rbtNu RadioButton GroupName Gioi_tinh rbtThu_nhapA RadioButton GroupName Thu_nhap rbtThu_nhapB RadioButton Checked True GroupName Thu_nhap rbtThu_nhapC RadioButton GroupName Thu_nhap Tạo nhĩm cho các điều khiển RadioButton II.2.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. a. 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ị ƒ Vertical: Theo chiều dọc ƒ 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. b. Ví dụ Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 43/174
  45. Tài liệu hướng dẫn giảng dạy 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 II.2.9. Liên kết dữ liệu với các điều khiển ListBox, DropDownList, CheckBoxList, RadioButtonList Ví dụ: Liên kết dữ liệu với Sortedlist Xử lý sự kiện: Private Sub Page_Load( ) Handles MyBase.Load If Not IsPostBack Then Dim Ds_Binh_chon As New SortedList Ds_Binh_chon.Add("1", "Nhắn tin SMS") Ds_Binh_chon.Add("2", "Chụp hình") Ds_Binh_chon.Add("3", "Nghe Radio") Ds_Binh_chon.Add("4", "Nghe nhạc MP3") Ds_Binh_chon.Add("5", "Xem Video Clip") Ds_Binh_chon.Add("6", "Lưu trữ") Ds_Binh_chon.Add("7", "Ghi âm") Ds_Binh_chon.Add("8", "Chơi game") Ds_Binh_chon.Add("9", "Internet") rblBinh_chon.DataSource = Ds_Binh_chon rblBinh_chon.DataTextField = "Value" rblBinh_chon.DataValueField = "Key" rblBinh_chon.DataBind() End If End Sub Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 44/174
  46. Tài liệu hướng dẫn giảng dạy Private Sub rblBinh_chon_SelectedIndexChanged( ) lblBinh_chon.Text = "Bạn chọn chức năng số " & _ rblBinh_chon.SelectedItem.Value End Sub Thể hiện thăm dị ý kiến Trong ví dụ trên, chúng ta tạo ra một danh sách các bình chọn thơng qua đối tượng SortedList. Đối tượng SortedList được dùng để lưu trữ danh sách các đối tượng và tự động sắp xếp các đối tượng đĩ theo giá trị của thuộc tính khĩa. Để liên kết điều khiển với một đối tượng dữ liệu (ở ví dụ này là đối tượng SortedList), ta sử dụng thuộc tính DataSource để lấy nguồn dữ liệu. .DataSource = Hai thuộc tính quan trọng khơng thể thiếu trong việc thực hiện liên kết dữ liệu đĩ là: DataTextField và DataValueField. DataTextField là tên thuộc tính (hoặc tên field) của đối tượng dữ liệu mà ta muốn hiển thị. DataValueField là tên thuộc tính (hoặc tên field) chứa là giá trị mà ta muốn nhận về khi người dùng thực hiện chọn các mục trên điều khiển (thơng qua thuộc tính SelectedValue hay SelectedItem.Value). Để hiển thị dữ liệu lên điều khiển khi trang được Load, chúng ta sử dụng phương thức DataBind. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 45/174
  47. Tài liệu hướng dẫn giảng dạy II.3. Đ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. Dữ liệu nhập Thơng báo lỗi Khơng Hợp lệ? Client Cĩ Server Khơng Hợp lệ? Cĩ Các xử lý Sơ đồ xử lý kiểm tra dữ liệu nhập tại Client và Server 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. Các thuộc tính chung của các điều khiển Validation Control Thuộc tính Ý nghĩa ControlToValidate Tên điều khiển cần kiểm tra. Đây là thuộc tính mà các bạn phải xác định khi sử dụng Validation Control. Text Chuỗi thơng báo xuất hiện khi cĩ lỗi. ErrorMessage Chuỗi thơng báo xuất hiện trong điều khiển Validation Summary. Giá trị này sẽ được hiển thị tại vị trí của điều khiển nếu chúng ta khơng gán giá trị cho thuộc tính Text. Display Qui định hình thức hiển thị: ƒ None: Khơng hiển thị thơng báo lỗi (vẫn cĩ kiểm tra dữ liệu) ƒ Static: Trong trường hợp khơng cĩ vi phạm dữ liệu, điều khiển khơng cĩ hiển thị nhưng vẫn chiếm vị trí như trong lúc thiết kế. ƒ Dynamic: Trong trường hợp khơng cĩ vi phạm dữ liệu, điều khiển khơng chiếm dụng vị trí trên màn hình. EnableClientScript Cĩ cho phép thực hiện kiểm tra ở phía Client hay khơng. Giá trị mặc định là True - cĩ kiểm tra. 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 46/174
  48. Tài liệu hướng dẫn giảng dạy rfvNhap_lai Khi khơng cĩ lỗi, điều khiển Validation vẫn chiếm dụng vị trí trên trang web Lựa chọn hình thức hiển thị rfvNhap_lai.Display = Dynamic rfvNhap_lai Khi khơng cĩ lỗi, điều khiển Validation khơng chiếm dụng vị trí trên trang web. Lựa chọn hình thức hiển thị II.3.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. II.3.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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 47/174
  49. Tài liệu hướng dẫn giảng dạy 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 ƒ Equal: = (Đây là giá trị mặc định) ƒ GreaterThan: > ƒ GreaterThanEqual: >= ƒ LessThan: ƒ 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. ƒ String ƒ Integer ƒ Double ƒ Date ƒ 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. II.3.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. Ta cĩ thể thực hiện kiểm tra trên các kiểu dữ liệu sau: ƒ String ƒ Integer ƒ Double ƒ Date ƒ Currency Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 48/174
  50. Tài liệu hướng dẫn giảng dạy II.3.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. Hộp thoại Regular Expression Bảng mơ tả các ký hiệu thường sử dụng trong Validation Expression Ký hiệu Mơ tả A Ký tự chữ cái (đã được xác định). Ở đây là chữ a 1 Ký tự số (đã được xác định). Ở đây là số 1 [0-n] Một ký tự số từ 0 đến 9. [abc] Một ký tự: hoặc a hoặc b hoặc c | Lựa chọn mẫu này hoặc mẫu khác \w Ký tự thay thế phải là một ký tự chữ cái \d Ký tự thay thế phải là một ký tự số \ Thể hiện các ký tự đặc biệt theo sau. \. Ký tự thay thế phải là dấu chấm câu (.) ? Qui định số lần xuất hiện: 0 hoặc 1 lần * Qui định số lần xuất hiện: 0 hoặc nhiều lần + Qui định số lần xuất hiện: 1 hoặc nhiều lần (ít nhất là 1) {n} Qui định số lần xuất hiện: đúng n lần II.3.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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 49/174
  51. Tài liệu hướng dẫn giảng dạy 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. Private Sub cvSo_chan_ServerValidate( , _ ByVal args As ServerValidateEventArgs) If Val(txtSoA.Text) Mod 2 = 0 Then args.IsValid = True Else args.IsValid = False End If End Sub II.3.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 – 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ị. Thơng báo lỗi xuất hiện qua cửa sổ MessageBox – 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ị. Thơng báo lỗi hiển thị trực tiếp trên trang Web Ví dụ: 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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 50/174
  52. Tài liệu hướng dẫn giảng dạy Màn hình hồ sơ khách hàng khi thiết kế Bảng mơ tả thuộc tính của các điều khiển kiểm tra dữ liệu Điều khiển Loại Thuộc tính Giá trị rfvTen_dn RequiredField ControlToValidate txtTen_dn ErrorMessage Tên đăng nhập khơng được rỗng rfvMat_khau RequiredField ControlToValidate txtMat_khau ErrorMessage Mật khẩu khơng được rỗng. rfvNhap_lai RequiredField ControlToValidate txtNhap_lai Display Dynamic ErrorMessage Nhập lại mật khẩu khơng được rỗng. cvNhap_lai Compare ControlToValidate txtNhap_lai ControlToCompare txtMat_khau ErrorMessage Mật khẩu nhập lại chưa đúng. rfvHo_ten RequiredField ControlToValidate txtHo_ten ErrorMessage Họ tên khơng được rỗng. cvNgay_sinh Compare ControlToValidate txtNgay_sinh Operator DataTypeCheck Type Date Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 51/174
  53. Tài liệu hướng dẫn giảng dạy ErrorMessage Ngày sinh khơng hợp lệ. revEmail RegularExpression ControlToValidate txtEmail ValidationExpression Internet Email ErrorMessage Email khơng hợp lệ. rvThu_nhap RangeValidator ControlToValidate txtThu_nhap MaximumValue 50000000 MinimumValue 1000000 Type Integer ErrorMessage Thu nhập từ 1 triệu đến 50 triệu vsBang_loi V-Summary HeaderText Danh sách các lỗi ShowMessageBox True butDang_ky Button Text Đăng ký Thuộc tính Text của các điều khiển: (*) 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ệ. Thơng báo lỗi khi dữ liệu nhập liệu khơng hợp lệ Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 52/174
  54. Tài liệu hướng dẫn giảng dạy 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ệ: Bảng lỗi qua cửa sổ MessageBox II.4. Một số điều khiển khác II.4.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ý: Private Sub Page_Load( ) Handles MyBase.Load lblLabel.Text = " Đây là chuỗi trong Label " ltrLiteral.Text = " Cịn đây là chuỗi trong Literal " End Sub Chọn chức năng từ thực đơn View | Source trên Browser: Đây là chuỗi trong Label Cịn đây là chuỗi văn bản trong Literal Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 53/174
  55. Tài liệu hướng dẫn giảng dạy II.4.2. Đ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. Để thêm những điều khiển vào bên trong lúc thi hành, chúng ta phải thực hiện thơng qua tập hợp Controls của điều khiển: Ví dụ: Dim txtSo_A As New TextBox pnl.Controls.Add(txtSo_A) II.4.3. Điều khiển Table Điều khiển Table thường được sử dụng để hiển thị dữ liệu theo các dịng lệnh đã được cài đặt. Điều khiển này được tạo thành từ tập hợp các dịng (thơng qua thuộc tính Rows) - TableRow, mỗi dịng được tạo thành từ tập hợp các ơ (thơng qua thuộc tính Cells) – TableCell. Mỗi ơ - cell (TableCel) trong Table cĩ thể là một điều khiển chứa các điều khiển khác. Ta cĩ thể thao tác với các điều khiển trong ơ thơng qua tập hợp Controls của ơ đĩ. Ví dụ: Sử dụng các điều khiển Table tblBang Màn hình khi thiết kế Xử lý sự kiện: Private Sub Page_Load( , e ) Handles MyBase.Load Ve_bang(3, 3) End Sub Public Sub Ve_bang(ByVal pSo_dong As Integer, ByVal pSo_cot As Integer) Dim r%, c% Dim tr As TableRow, td As TableCell 'Tiến hành tạo bảng dữ liệu For r = 0 To pSo_dong - 1 tr = New TableRow tr.Height = New Unit(20) For c = 0 To pSo_cot - 1 td = New TableCell If r = c Then Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 54/174
  56. Tài liệu hướng dẫn giảng dạy 'Xử lý thêm các Textbox Dim txtTextbox As New TextBox txtTextbox.Text = "Dịng " & r & " cột " & c txtTextbox.BackColor = Color.Yellow txtTextbox.Width = New Unit(90) td.Controls.Add(txtTextbox) Else td.Text = "Dịng " & r & " cột " & c End If tr.Cells.Add(td) Next c tblBang.Rows.Add(tr) Next r End Sub Màn hình khi thi hành II.4.4. Đ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) Đường dẫn đến tập tin hình ảnh Đường dẫn đến liên kết Chuỗi văn bản được hiển thị như Tooltip Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 55/174
  57. Tài liệu hướng dẫn giảng dạy Từ khĩa dùng để lọc hình ảnh Tần suất hiển thị của hình ảnh 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 Quảng cáo sử dụng điều khiển AdRotator Bước 1. Thiết kế giao diện AdRotator Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 56/174
  58. Tài liệu hướng dẫn giảng dạy Bước 2. Tạo tập tin dữ liệu: Hinh.xml ƒ Sử dụng chức năng Add New Item từ thực đơn ngữ cảnh ƒ Chọn XML File trong hộp thoại Add New Item ƒ Nhập vào cú pháp qui định cho tập tin Hinh.xml (theo cú pháp của tập tin Advertisement) Hinh\Asp_net.jpg Trang chủ Asp.net Hoc_tap 10 ƒ 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 Nhập thơng tin hình ảnh quảng cáo Bước 3. Thiết lập thuộc tính cho điều khiển adQuang_cao ƒ AdvertisementFile: Hinh.xml ƒ Target: _blank Ỵ Khi nhấn vào sẽ hiển thị liên kết ở cửa sổ mới. ƒ KeywordFilter: Khơng thiết lập Ỵ Hiển thị tất cả các hình ảnh Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 57/174
  59. Tài liệu hướng dẫn giảng dạy Bước 4. Thi hành ứng dụng F5 Khi thi hành II.4.5. Đ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: Xự 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ụ: Khi thiết kế Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 58/174
  60. Tài liệu hướng dẫn giảng dạy Xử lý sự kiện: Private Sub Page_Load( ) Handles MyBase.Load lblHom_nay.Text = "Hơm nay ngày " & Date.Today.ToString("dd/MM/yyyy") End Sub Private Sub calLich_SelectionChanged( ) Handles Dim lSo_ngay As Integer lSo_ngay = Math.Abs(DateDiff(DateInterval.Day, Date.Today, calLich.SelectedDate)) If calLich.SelectedDate > Date.Today Then lblThong_bao.Text = "Cịn " & lSo_ngay & _ ngày là đến ngày sinh nhật của bạn." ElseIf calLich.SelectedDate = Date.Today Then lblThong_bao.Text = "Hơm nay là ngày sinh nhật của bạn" Else lblThong_bao.Text = "Sinh nhật bạn đã qua " & lSo_ngay & " ngày." End If End Sub Khi thi hành II.5. Đối tượng ViewState Đố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") = Nhận giá trị từ đối tượng ViewState: = ViewState("Tên trạng thái") Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 59/174
  61. Tài liệu hướng dẫn giảng dạy Ví dụ: Xử lý sự kiện: Private Sub Page_Load( ) Handles MyBase.Load If Not IsPostBack Then ViewState("So_lan") = 0 Else ViewState("So_lan") += 1 End If lblTB.Text = "Số lần Postback: " + CStr(ViewState("So_lan")) End Sub Private Sub butDem_Click() Handles butDem.Click lblTB.Text = "Số lần Postback: " + CStr(ViewState("So_lan")) End Sub 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 Kinh nghiệm giảng dạy: Cũng giống như các điều khiển cơ bản trên winform, các điều khiển cơ bản trên webform cũng là một thành phần khơng thể thiếu của một ứng dụng web. Giáo viên cần hướng dẫn cho học viên sử dụng các điều khiển này thơng qua các bài tập thực hành (tài liệu đính kèm). Ngồi những bài tập đã cĩ trong tài liệu, giáo viên cĩ thể soạn bổ sung thêm những bài tập khác (mở rộng hơn) phù hợp với khả năng của lớp mình phụ trách. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 60/174
  62. Tài liệu hướng dẫn giảng dạy Bài 3 CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU Tĩm tắt Lý thuyết 6 tiết - Thực hành 10 tiết Mục tiêu Các mục chính Bài tập Sử dụng các điều khiển Data List, 1. Điều khiển DataGrid 3.1, 3.2, 3.3, 3.4, DataGrid và Repeater để hiển thị dữ 2. Điều khiển DataList 3.6, 3.7, 3.8, 3.10 liệu. 3. Điều khiển Repeater Bài làm thêm: Liên kết dữ liệu với các kiểu tập hợp: ArrayList, SortedList, HashTable, 3.5, 3.9, 3.11 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 61/174
  63. Tài liệu hướng dẫn giảng dạy 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ế. I.1. Các thao tác định dạng lưới Để thực hiện các thao tác định dạng, chúng ta chọn chức năng Property Builder từ thực đơn ngữ cảnh. I.1.1. Trang General Trong trang này, cĩ các mục chọn sau: – 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 I.1.2. 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. 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. – Bound Column: Cột cĩ liên kết với nguồn dữ liệu. – 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. – Hyperlink Column: Cột cĩ liên kết dữ liệu dạng liên kết. – 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ọc phần 3 - Lập trình ứng dụng web với ASP.NET Trang 62/174
  64. Tài liệu hướng dẫn giảng dạy hoạt. Trang Columns 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 ƒ HeaderText, Footer Text: Thơng tin tiêu đề trên/dưới của cột ƒ Header Image: Hình hiển thị trên tiêu đề cột (thay thế thơng tin tiêu đề cột - Header Text). ƒ Sort Expression: Biểu thức sắp xếp của cột. ƒ Visible: Qui định cột cĩ được hiển thị hay khơng. ƒ DataField: Qui định tên field hay tên thuộc tính của đối tượng dữ liệu cần hiển thị. ƒ Data formatting expression: Biểu thức định dạng dữ liệu. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 63/174
  65. Tài liệu hướng dẫn giảng dạy Mẫu định dạng: {0: }. 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} ƒ 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. – Convert this column into a Template Column: Chuyển cột hiện hành thành cột dạng Template Column. I.1.3. Trang Paging (Quản lý phân trang) Trang này quản lý việc phân trang của DataGrid. – 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ố Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 64/174
  66. Tài liệu hướng dẫn giảng dạy I.1.4. 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ề. 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 ƒ Normal Items: Định dạng cho các dịng dữ liệu. ƒ Alternating Items: Định dạng hiển thị cho các dịng lẻ. ƒ Selected Items:Định dạng hiển thị cho dịng đang được chọn. ƒ 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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 65/174
  67. Tài liệu hướng dẫn giảng dạy I.1.5. Trang Borders (Khung viền) Trang Borders quản lý việc kẻ khung viền cho lưới. – Cell margin ƒ Cell padding: Qui định khoảng cách giữa nội dung trong ơ với các đường viền của ơ. Cell padding = 0 Cell padding = 3 ƒ Cell spacing: Qui định khoảng cách giữa các ơ Cell spacing = 3 Ví dụ: Điều khiển DataGrid sau khi được định dạng Lưới khách hàng sau khi được định dạng Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 66/174
  68. Tài liệu hướng dẫn giảng dạy Mã lệnh xử lý: Private Sub Page_Load( ) Handles MyBase.Load If Not IsPostBack Then Lien_ket_du_lieu() End If End Sub I.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 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 67/174
  69. Tài liệu hướng dẫn giảng dạy 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 Source=" & _ Server.MapPath(" \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 Sắp xếp khách hàng tăng dần theo tên Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 68/174
  70. Tài liệu hướng dẫn giảng dạy I.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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 69/174
  71. Tài liệu hướng dẫn giảng dạy I.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 hồ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 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 70/174
  72. Tài liệu hướng dẫn giảng dạy 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. chkPhai Đ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, mà cịn cĩ các dịng Header, Footer và Pager, cũng xảy ra trong sự kiện này. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 71/174
  73. Tài liệu hướng dẫn giảng dạy Để 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 ƒ 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 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( ) để 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 72/174
  74. Tài liệu hướng dẫn giảng dạy 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 mà 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( ) 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 hiện. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 73/174
  75. Tài liệu hướng dẫn giảng dạy 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) và (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" Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 74/174
  76. Tài liệu hướng dẫn giảng dạy 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 name="Edit" Ỵ Sự kiện EditCommand ƒ Command name="Update" Ỵ Sự kiện UpdateCommand ƒ Command name="Cancel" Ỵ Sự kiện CancelCommand ƒ Command name="Delete" Ỵ 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ê 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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 75/174
  77. Tài liệu hướng dẫn giảng dạy 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" ƒ .DataKeys( ) Ỵ Trả về Mkh tại dịng Chọn mẫu tin để cập nhật dữ liệu Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 76/174
  78. Tài liệu hướng dẫn giảng dạy 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 ) 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 77/174
  79. Tài liệu hướng dẫn giảng dạy '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. 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 78/174
  80. Tài liệu hướng dẫn giảng dạy 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 ngồ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 ƒ 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 79/174
  81. Tài liệu hướng dẫn giảng dạy – RepeatColumns: Qui định số cột hiển thị của DataList L'Enquête Corse Unspeakable Bottle Rocket Đặt mua Đặt mua Đặt mua Ripper Enduring Love The Good Thief Đặt mua Đặt mua Đặ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 ngồ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 hồ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. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 80/174
  82. Tài liệu hướng dẫn giảng dạy Ví dụ: Hiển thị thơng tin sách với DataList LinkButton Label HyperLink 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 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 81/174
  83. Tài liệu hướng dẫn giảng dạy 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 82/174
  84. Tài liệu hướng dẫn giảng dạy II.2. Cập nhật dữ liệu với DataList Ngồ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 hồn tồn cĩ thể thực hiện việc liên kết dữ liệu trong sự kiện ItemDataBound. Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 83/174
  85. Tài liệu hướng dẫn giảng dạy 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 84/174
  86. Tài liệu hướng dẫn giảng dạy 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 ) 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 Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 85/174