Bài giảng Lập trình Web ASP.Net cới C# (Phần 2) - Phạm Đào Minh Vũ
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:
- bai_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ũ
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- .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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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 Hệ thống tên miền (Namespace) Khoa CNTT,Trường CĐ CNTT TP.HCM
- Đặ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
- 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
- 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
- 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
- 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
- Trang Default.aspx (Source) Trang Default.aspx.cs 28 Khoa CNTT,Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Để 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
- 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
- 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
- Trên Windows Vista/ Windows 7 Start Settings Control Panel Administratrive tools IIS Manager 50 Khoa CNTT,Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 2.1. Đối tượng Response Và Request 2.1.1. Đối tượng Response 2.1.2. Đối tượng Request 58
- 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 + " "
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 2.3. Đối tượng Server Và Cookies 2.3.1 Đối tượng Server 2.3.2 Đối tượng Cookies 70
- 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
- 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
- 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
- 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
- 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
- Cấu trúc tập tin Global.asax 76
- 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
- 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
- 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
- 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
- 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
- 2.4.2.2. Ví dụ 82
- Ví dụ 83
- Ví dụ 84
- 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
- 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
- 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
- 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
- 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
- 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
- Để 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
- 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
- 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
- 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
- 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 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- Not set Right TextTop Middle Left 98 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- Ví dụ: Tạo trang web gồm 3 điều khiển Hyperlink 102 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Ví dụ: Tạo trang web hiển thị các thông tin. 113 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Ví dụ: Tạo trang sử dụng Panel Thiết kế: 131 Khoa CNTT Trường CĐ CNTT TP.HCM
- Xử lý sự kiện: protected void Page_Load(object sender, EventArgs e) { for (int i = 1; i < 100; i++) { buletnghenghiep.Items.Add("Nghề "+i.ToString()); } } protected void chkhtsothich_CheckedChanged(. . . .) { if (chksothich.Checked == true) panelsothich.Visible = true; else panelsothich.Visible = false; } protected void chkhtnghenghiep_CheckedChanged(. . . ) { if (chknghenghiep.Checked == true) panelnghenghiep.Visible = true; else panelnghenghiep.Visible = false; 132 } Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- Bổ sung nội dung vào các view tương ứng 137 Khoa CNTT Trường CĐ CNTT TP.HCM
- Xử lý sự kiện: void Menu1_MenuItemClick(object sender, MenuEventArgs e){ int index = int.Parse(e.Item.Value); MultiView1.ActiveViewIndex = index; } void Page_Load(object sender, EventArgs e){ if (!IsPostBack){ MultiView1.ActiveViewIndex = 0; } } 138 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- . 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
- 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
- Xem Source 142 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- 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
- Bảng mô tả các ký hiệu sử dụng trong Validation Expression 151 Khoa CNTT Trường CĐ CNTT TP.HCM
- 4.2.5. Điều khiển Custom Validator Công dụng: Điều khiển này cho phép bạn tự viết hàm xử lý kiểm tra lỗi. Sự kiện: ServerValidate: Đặt các xử lý kiểm tra dữ liệu trong sự kiện này. Việc kiểm tra này được thực hiện ở Server. Ví dụ: Xử lý kiểm tra dữ liệu nhập tại điều khiển txtSoA có phải là số chẵn hay không. 152 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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 Khoa CNTT Trường CĐ CNTT TP.HCM
- Thuộc tính Text của các điều khiển kiểm tra dữ liệu đều là: (*) 157 Khoa CNTT Trường CĐ CNTT TP.HCM
- Xử lý sự kiện: private void btnDang_ky_Click( ) { lblThong_bao.Text = "Đăng ký thành công"; } 158 Khoa CNTT Trường CĐ CNTT TP.HCM
- Các thông báo lỗi xuất hiện qua hộp thoại khi dữ liệu nhập không hợp lệ: 159 Khoa CNTT Trường CĐ CNTT TP.HCM
- Nếu tất cả đều hợp lệ 160 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- CSDL MẪU 163 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- Chọn QTCSDL (Microsoft SQLServer) Chọn Continue để tiếp tục 166 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- Đặt tên cho kết nối Tên kết nối 168 Khoa CNTT Trường CĐ CNTT TP.HCM
- Xác định nguồn dữ liệu từ Table, View hay câu lệnh SQL có thể chỉ định điều kiện lọc dữ liệu, sắp xếp hay các chỉ định vcho xử lý thêm, xoá, sửa Xác định nguồn dữ liệu Từ câu lệnh SQL hay Từ Table, View Xác định điều kiện Chỉ định sắp xếp Các lệnh thê, xoá, sửa 169 Khoa CNTT Trường CĐ CNTT TP.HCM
- Chọn Test Query để kiểm tra kết quả nguồn dữ liệu. Chọn Finish để hòan thành 170 Khoa CNTT Trường CĐ CNTT TP.HCM
- Điều khiển SQL DataSource và tham số Request.QueryString Để lọc dữ liệu theo điều kiện thì giá trị tham số có thể được gán trực tiếp thông qua đối tượng Request.Querystring (Truyền tham số qua liên kết) Khi click vào liên kết trang có địa chỉ kèm theo tham số dạng: 171 . . ./SachNXB.aspx?MaNXB=3 Khoa CNTT Trường CĐ CNTT TP.HCM
- Thực hiện: Tạo trang NhaXB.aspx là danh mục nhà xuất bản Chọn Edit Column từ GiridView Task 172 Khoa CNTT Trường CĐ CNTT TP.HCM
- 173 Khoa CNTT Trường CĐ CNTT TP.HCM
- Với các thuộc tính: HeaderText: Nhãn tiêu đề cột Text: Nhãn hiện thị trong tất cả các ô DataTextField: Giá trị từ 1 field chỉ định trong nguồn DL DataNavigateUrlFields: Danh mục tên các tham số ghi cách nhau bởi dấu “,” DataNavigateUrlFormatting: Địa chỉ trang liên kết kèm tham số dạng: ~/SachNXB.aspx?MaNXB={0} Giá trị tham số ghi dưới dạng chỉ số các tham số được khai báo trong DataNavigateUrlFields bắt đầu là 0 và cách nhau dấu , 174 Khoa CNTT Trường CĐ CNTT TP.HCM
- Tạo trang hiện thị dữ liệu với nguồn dữ liệu có tham số qua liên kết (Request.QueryString). Xác định nguồn dữ liệu, sau đó chọn Where để chỉ định điều kiện 175 Khoa CNTT Trường CĐ CNTT TP.HCM
- Columns: Tên cột làm điều kiện Operator: Toán tử so sánh Source: Loại tham số (QueryString) QueryString field: Tên tham số đã truyền 176 Chọn Add để chấp nhận thêm tham số Khoa CNTT Trường CĐ CNTT TP.HCM
- Columns: Tên cột làm điều kiện Operator: Toán tử so sánh Source: Loại tham số (QueryString) QueryString field: Tên tham số đã truyền 177 Chọn Add để chấp nhận thêm tham số Khoa CNTT Trường CĐ CNTT TP.HCM
- Thi hành xem kết quả 178 Khoa CNTT Trường CĐ CNTT TP.HCM
- Điều khiển SQL DataSource và tham số Request.Form Để lọc dữ liệu trong nguồn dữ liệu theo điều kiện với giá trị tham số là giá trị trên form. Thực hiện: Tạo trang Lietkesach.aspx gồm: 1 Textbox thuộc tính ID: MaNXB 1 Button thuộc tính PostbackURL: ~/Lietkesach.aspx (Chính trang thiết kế) Tạo SqlDataSource với nguồn dữ liệu: 179 Khoa CNTT Trường CĐ CNTT TP.HCM
- Tạo SqlDataSource với nguồn dữ liệu như sau: 180 Khoa CNTT Trường CĐ CNTT TP.HCM
- Columns: Tên cột làm điều kiện Operator: Toán tử so sánh Source: Loại tham số (Form) Form field: Tên tham số đã truyền (Tên Textbox) 181 Chọn Add để chấp nhận thêm tham số Khoa CNTT Trường CĐ CNTT TP.HCM
- Điều khiển SQL DataSource và tham số là các Controls Có thể khai báo tham số trong điều khiển SqlDataSource mà giá trị được lấy từ điều khiển trình chủ. Ví dụ thiết kế trang SachtheoCD.aspx thực hiện liệt kê danh mục sách có chủ đề được chọn từ điều khiển DropdownList 182 Khoa CNTT Trường CĐ CNTT TP.HCM
- Thực hiện Thiết kế Dropdownlist (ddlChude) từ Table Chude Đặt thuộc tính ID: ddlChude DataSourceID: SqlDataSource1 DataTextField: TenCD (Field hiện thị) AutoPostBack: True DataValuefield: MaCD (Field để truyền tham số) 183 Khoa CNTT Trường CĐ CNTT TP.HCM
- GridView (GridView1) Với nguồn dữ liệu từ Table Sach Và tham số điều kiện (Where) 184 Khoa CNTT Trường CĐ CNTT TP.HCM
- Columns: Tên cột làm điều kiện Operator: Toán tử so sánh Source: Loại tham số (Control) ControlID: Tên tham số đã truyền 185 Chọn Add để chấp nhận thêm tham số Khoa CNTT Trường CĐ CNTT TP.HCM
- Điều khiển SQL DataSource và Procedure Ta có thể sử dụng điều khiển kết nối CSDL SqlDatasource để truy cập gọi Stored Procedure trong CSDL SQL Server. Ví dụ: Ta có Procedure Sachtheogia liệt kê các quyển sách với điều kiện Giá từ 2 tham số là Giatu và Giaden Create Proc Sachtheogia @Giatu int, @Giaden int as Select * From sach Where Dongia Between @Giatu and @Giaden 186 Khoa CNTT Trường CĐ CNTT TP.HCM
- Khi cấu hình cho điều khiển SQLDataSource Chọn loại nguồn dữ liệu là từ Procedure 187 Khoa CNTT Trường CĐ CNTT TP.HCM
- Chọn tên Procedure 188 Khoa CNTT Trường CĐ CNTT TP.HCM
- Xác định giá trị cho các tham số của Procedure 189 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- Chọn tập tin XML. Chọn OK để hoàn tất 194 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- Tạo GridView vào trang Kéo Control GridView vào trang 197 Khoa CNTT Trường CĐ CNTT TP.HCM
- Định dạng tự động Chọn những mẫu định dạng có sẳn Gridview bằng cách Chọn Auto Format từ khung Gridview Task 198 Khoa CNTT Trường CĐ CNTT TP.HCM
- Kết nối nguồn dữ liệu Thực hiện kết nối nguồn dữ liệu với cơ sở dữ liệu SQLServer, Access, XML. . Tại mục Choose Data Source: New Data Source (Hoặc chọn Datasource đã được tạo trước đó) Ghi chú: Tạo Datasource như được trình bày trước 199 Khoa CNTT Trường CĐ CNTT TP.HCM
- Thi hành xem kết quả: 200 Khoa CNTT Trường CĐ CNTT TP.HCM
- Thêm cột Trong cửa sổ Gridview Task chọn : Add New Column Chọn Loại field : BoundField Tiêu đề côt : Header Text Tên field dữ liệu: DataField Ok hòan thành 201 Khoa CNTT Trường CĐ CNTT TP.HCM
- Hiệu chỉnh các cột Trong cửa sổ Gridview Task chọn : Edit Column 202 Khoa CNTT Trường CĐ CNTT TP.HCM
- AvailableFields: Chọn lọai Field liên kết dữ liệu BoundField: Cột dạng Textbox. Checkbox Field: Cột dạng Checkbox. Hyperlink Field: Cột dạng liên kết. Button Field: Cột dạng nút lệnh CommandField: Cột dạng nút lệnh được thiết kế sẵn Select: Nút lệnh chọn dòng dữ liệu Edit, Cancel, Update: Các nút cập nhật d.liệu Delete: Nút lệnh xóa dòng dữ liệu TemplateField: Cột do người dùng tự thiết kế. 203 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- - HeaderStyle/FooterStyle: Định dạng dòng Header/Footer 206 Khoa CNTT Trường CĐ CNTT TP.HCM
- - RowStyleAlternatingRowStyle: Định dạng dòng dữ liệu lẽ/chẵn: 207 Khoa CNTT Trường CĐ CNTT TP.HCM
- - AlowPaging : Phân trang - Page size: Qui định số dòng/trang - Possition: Qui định vị trí hiển thị của bộ nút di chuyển (top, bottom, top&bottom). - Mode: Qui định hình thức hiển thị của bộ nút di chuyển (kiểu số, kiểu ký hiệu). 208 Khoa CNTT Trường CĐ CNTT TP.HCM
- - AllowSorting: Sắp xếp (theo thuộc tính DataKeyNames 209 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- - 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Mã CĐ Tên CĐ 222 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Thiết kế User control: Thiết kế các controls theo ý muốn 236 Khoa CNTT Trường CĐ CNTT TP.HCM
- Sử dụng User control: Kéo và thả UC vào trang aspx 237 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- Master page Content page Trang kết quả 239 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- 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
- 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
- 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 Khoa CNTT Trường CĐ CNTT TP.HCM
- Tạo Theme: . Click phải Project Add ASP.NET Folder Theme 248 Khoa CNTT Trường CĐ CNTT TP.HCM
- 249 Khoa CNTT Trường CĐ CNTT TP.HCM
- 250 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- Auto Format: Chọn mẫu định dạng 253 Khoa CNTT Trường CĐ CNTT TP.HCM
- Edit Menu Items: Thiết kế Menu 254 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- Auto Format: Chọn mẫu định dạng 256 Khoa CNTT Trường CĐ CNTT TP.HCM
- Edit Node: Thiết kế các node 257 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- Kết quả 260 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- VÍ DỤ Thực thi 262 Khoa CNTT Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- 7.1.2 Kiến Trúc ADO.Net MANAGED PROVIDER CONTENT COMPONENT 267 Khoa CNTT, Trường CĐ CNTT TP.HCM
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Access OleDbParameter = new OleDbParameter(); OleDbParameter = new OleDbParameter ( ); OleDbParameter = new OleDbParameter ( , ); 285 Khoa CNTT, Trường CĐ CNTT TP.HCM
- 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
- 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
- Đư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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- . 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
- 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
- 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
- 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
- Để 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
- 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
- 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
- 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
- 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
- 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
- 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