Bài giảng Lập trình Web ASP.Net cới C# (Phần 2) - Phạm Đào Minh Vũ

pdf 441 trang cucquyet12 4100
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Web ASP.Net cới C# (Phần 2) - Phạm Đào Minh Vũ", để 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:

  • pdfbai_giang_lap_trinh_web_asp_net_coi_c_phan_2_pham_dao_minh_v.pdf

Nội dung text: Bài giảng Lập trình Web ASP.Net cới C# (Phần 2) - Phạm Đào Minh Vũ

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