Lập trình web - Chương I: Aspnet framework – Bảo trì trạng thái ứng dụng

Tài liệu Lập trình web - Chương I: Aspnet framework – Bảo trì trạng thái ứng dụng: 1Chương I ASPNET Framework – Bảo trì trạng thái ứng dụng 22/10/2012 1 Mục tiêu • Học xong chương này sinh viên có thể: – Hiểu khái niệm ASP.NET và .NET Framework. – Biết sử dụng môi trường phát triển ứng dụng Web Visual Studio .Net. – Hiểu ý nghĩa và cách bảo trì trạng thái ứng dụng – Tạo được ứng dụng Web, lưu giữ và sử dụng trạng thái của các đối tượng trong ứng dụng bằng Cookies, Session và Profile 22/10/2012 2 2Nội dung • ASP.NET và .NET Framework • Các điều khiển ASP.NET • Trang ASP.NET • Giới thiệu trạng thái ứng dụng • Sử dụng Cookies • Sử dụng Session • Sử dụng Profile Bài 1. ASP.NET và .NET Framework • Giới thiệu • Thư viện lớp trong .Net Framework • Môi trường thực thi ngôn ngữ chung 3Giới thiệu • ASP.NET là công nghệ nền tảng để xây dựng ứng dụng web và dịch vụ web của Microsoft. • ASP.NET không phải là công nghệ xây dựng ứng dụng web duy nhất. • ASP.NET được tích hợp chặt chẽ với hệ thống phần mềm của Microsoft, từ hệ điều ...

pdf276 trang | Chia sẻ: Khủng Long | Lượt xem: 1017 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Lập trình web - Chương I: Aspnet framework – Bảo trì trạng thái ứng dụng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
1Chương I ASPNET Framework – Bảo trì trạng thái ứng dụng 22/10/2012 1 Mục tiêu • Học xong chương này sinh viên có thể: – Hiểu khái niệm ASP.NET và .NET Framework. – Biết sử dụng môi trường phát triển ứng dụng Web Visual Studio .Net. – Hiểu ý nghĩa và cách bảo trì trạng thái ứng dụng – Tạo được ứng dụng Web, lưu giữ và sử dụng trạng thái của các đối tượng trong ứng dụng bằng Cookies, Session và Profile 22/10/2012 2 2Nội dung • ASP.NET và .NET Framework • Các điều khiển ASP.NET • Trang ASP.NET • Giới thiệu trạng thái ứng dụng • Sử dụng Cookies • Sử dụng Session • Sử dụng Profile Bài 1. ASP.NET và .NET Framework • Giới thiệu • Thư viện lớp trong .Net Framework • Môi trường thực thi ngôn ngữ chung 3Giới thiệu • ASP.NET là công nghệ nền tảng để xây dựng ứng dụng web và dịch vụ web của Microsoft. • ASP.NET không phải là công nghệ xây dựng ứng dụng web duy nhất. • ASP.NET được tích hợp chặt chẽ với hệ thống phần mềm của Microsoft, từ hệ điều hành, web server đến công cụ lập trình, truy cập dữ liệu, bảo mật... 22/10/2012 5 Định nghĩa ASP.NET • ASP.NET là một phần của .NET Framework và bao gồm một số thành phần sau: – Công cụ phát triển ứng dụng web Visual Studio .NET – Không gian tên System.Web. – Các điều khiển Server and HTML. 22/10/2012 6 4Ưu điểm của ASP.NET • Phần thực thi của ứng dụng web được biên dịch, do đó ứng dụng sẽ chạy nhanh hơn các ngôn ngữ thông dịch khác • Ứng dụng có thể được cập nhật liên tục mà không cần khởi động lại web server • Khả năng sử dụng .NET Framework là phần mở rộng của Windows API • Khả năng sử dụng cácngôn ngữ phổ biến Visual Basic và ngôn ngữ mới Visual C# • Khả năng sử dụng các điều khiển server để xây dựng giao diện giống như các ứng dụng Windows 22/10/2012 7 Ưu điểm của ASP.NET (tt) • Khả năng tạo ra các điều khiển server mới • Sử dụng cơ chế bảo mật có sẵn của hệ điều hành Windows • Khả năng truy cập dữ liệu bằng ADO.NET • Khả năng hỗ trợ đầy đủ Extensible Markup Language (XML), cascading style sheets (CSS), và các chuẩn Internet khác • Các tính năng caching trang web, bản địa hóa nội dung được tích hợp sẵn 22/10/2012 8 5Các thành phần của ứng dụng web • Ứng dụng web gồm 3 phần chính: –Phần nội dung: • Web form, trang HTML, hình ảnh, âm thanh –Phần xử lý: • Các tập tin thực thi, các đoạn script –Phần thông tin cấu hình: • Các tập tin cấu hình, tập tin CSS, cấu hình web server 22/10/2012 9 Giới thiệu .NET Framework • .NET Framework là nền tảng lập trình mới của Microsoft để phát triển các ứng dụng windows cũng như ứng dụng web • .NET Framework gồm 2 phần chính: – Thư viện các lớp cung cấp các hàm lập trình cấp thấp (tương tự Windows API) cũng như cấp cao để phát triển ứng dụng web (ASP.NET), truy cập dữ liệu (ADO.NET), bảo mật – Phần lõi thực thi gọi là common language runtime (CLR) 22/10/2012 10 6Cách thực thi một ứng dụng .NET 22/10/2012 11 Thư viện lớp của .NET • Thư viện lớp của .NET cung cấp khả năng sử dụng các tính năng của CLR. • Thư viện lớp của.NET được tổ chức theo không gian lớp. • Mỗi không gian lớp chứa các lớp có tính năng liên quan với nhau 22/10/2012 12 7Một số không gian tên của .NET • 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 đó • Ví dụ: – System – System.Data – System.Web – System.Web.UI.WebControls – System.Web.UI.WebControls.WebParts – 22/10/2012 13 Một số không gian tên trong ứng dụng Web • System.Web: – Gồm các đối tượng Application, Browser, Cache, Cookies, Exeception, Request, Response, Server và Trace. – Sử dụng các lớp này trong hầu hết các tác vụ lập trình Web. Các đối tượng Application định nghĩa trong Global.asax được dựa trên lớp Application • . 14GV. 8Một số không gian tên trong ứng dụng Web (tt) • System.Web.SessionState – Đối tượng Session. – Sử dụng các lớp này để lưu trữ và khôi phục các thông tin trạng thái chứa trong Session. • System.Web.Services – Đối tượng WebService. – Sử dụng lớp này để tạo và sử dụng dịch vụ Web. 15GV. Một số không gian tên trong ứng dụng Web (tt) • System.Web.UI – Đối tượng Page và Control. – Sử dụng các lớp này trong một Web form để tạo và điều khiển giao diện người dùng. Web forms được dựa trên lớp Page • System.Web.UI.WebControls – Tất cả các đối tượng server control. – Sử dụng các lớp này trong các Web form. 16GV. 9Một số không gian tên trong ứng dụng Web (tt) • System.Web.UI.HTMLControls – Tất cả các đối tượng HTML control. – Sử dụng các lớp này trong Web forms. • System.Web.Caching – Đối tượng Cache. – Sử dụng các lớp này để điều khiển quá trình caching trên server để cải thiện tốc độ thực thi ứng dụng 17GV. Một số không gian tên trong ứng dụng Web (tt) • System.Web.Mail – Đối tượng MailMessage, MailAttachment, và đối tượng SmtpMail. – Sử dụng các lớp này để gửi các thông điệp mail từ ứng dụng web. • System.Web.Security – Các đối tượng và modun Authentication. – Sử dụng các lớp này để xác nhận người dùng và cung cấp các cơ chế bảo mật trong ứng dụng web. 18GV. 10 Assembly • Là các file dll trên đĩa cứng, lưu trữ các lớp của .NET – Ví dụ: tất cả các lớp trong .ASP.NET Framework đều nằm trong Assembly System.web.dll. • Trước khi sử dụng các lớp trong dll, cần tạo một tham chiếu đến file dll này – Right click lên thư mục Website trong cửa sổ Solution Explorer, chọn Add Reference Môi trường thực thi ngôn ngữ chung • Commom Language Runtime (CLR): chịu trách nhiệm thực thi mã nguồn ứng dụng: mã nguồn của ứng dụng .NET được biên dịch thành ngôn ngữ đặc tả của Microsoft (Microsoft intermediate language - MSIL) và chứa trong tập tin gọi là assembly. • Khi chạy ứng dụng, MSIL sẽ được biên dịch sang mã máy máy bởi JITTER (just in time compiler) • Trong quá trình thực thi, CLR sẽ tự động thực hiện các tác vụ quản lý bộ nhớ, kiểm tra kiểu dữ liệu, và một số tác vụ khác cho ứng dụng 11 Bài 2. Các điều khiển ASP.NET • Giới thiệu • Các điều khiển server • Các biến cố của các điều khiển • View State Giới thiệu về các điều khiển ASP.NET • Là phần quan trọng nhất trong ASP.NET Framework. • Mỗi điều khiển ASP.NET là một lớp, khi thực thi trên server sẽ được trả về dạng mã HTML hiển thị nội dung trên trình duyệt. • ASP.NET cung cấp rất nhiều điều khiển có thể sử dụng trong xây dựng ứng dụng web và tổ chức thành các nhóm dựa vào chức năng và bản chất của điều khiển 12 Các điều khiển server • Standard control: bao gồm các điều khiển chuẩn như: Label, Button, TextBox • Validator Control: là các điều khiển được sử dụng đề kiểm tra tính hợp lệ của dữ liệu nhập trước khi gởi về server • Rich Control: là những điều khiển như FileUpload, Calendar • Data Control là các điều khiển cho phép thao tác với cơ sở dữ liệu Các điều khiển server (tt) • Navigation Control: là những điều khiển cho phép di chuyển giữa các trang trong website. • Login control: Là các điều khiển về bảo mật ứng dụng cho phép tạo các form đăng ký, đăng nhập, thay đổi mật khẩu • HTML Control: cho phép chuyển các điều khiển HTML thành các điều khiển có thể thực thi trên server. 13 Các điều khiển server (tt) View State • View state của Web form là dữ liệu đươc ASP.NET bảo toàn giữa các yêu cầu của trình duyệt • ASP.NET lưu trữ các thông tin được đưa vào thuộc tính ViewState của trang dưới dạng các field ẩn trên trang . • View state chỉ sử dụng được cho từng web form • View State lưu trữ dữ liệu ngay trên trang à chỉ có một số kiểu đối tượng có thể được lưu. • Muốn lưu trữ các đối tượng phức tạp hơn trong ViewState à chuyển đổi chúng thành các chuỗi. 14 View State (tt) • ASP.NET mã hóa các dữ liệu nhập vào các điều khiển thành các field ẩn được lưu trữ trên trang. Nếu ta chọn View Source từ trình duyệt, đoạn mã HTML của trường ẩn có đoạn code sau: 27GV. View State (tt) • Ví dụ –Đoạn mã sau cho phép thêm văn bản nhập từ một text box vào các ô của một bảng trên trang Web. • Lưu trữ các chuỗi trong hàm Button1_Click • Tạo ra các ô và dòng trong bảng từ các chuỗi này, như trình bày trong thủ tục Page_PreRender 15 View State (tt) 29GV. Bài 3. Trang ASP.NET • Tạo ứng dụng web trong môi trường VS.Net • Biên dịch động • Trang code-behind • Biến cố mức trang • Thuộc tính Page.IsPosBack 16 Tạo ứng dụng web • Khởi động VisualStudio 2008 • File, New, Web Site 22/10/2012 31 Tạo ứng dụng web 22/10/2012 32 17 Thêm Trang ASP.NET Vào Web Site 22/10/2012 33 Thêm Trang ASP.NET Vào Web Site 22/10/2012 34 18 Chọn trang web làm trang mặc định 22/10/2012 35 Biên dịch 22/10/2012 36 19 Chạy thử trang web 22/10/2012 37 Trang code-behind • Khi một website được tạo, mặc định ứng dụng sẽ tạo ra một tập tin Default.aspx và một tập tin Default.aspx.cs – Tập tin Default.aspx: cho phép thiết kế các thành phần giao diện trên Web Form – Tập tin Default.aspx.cs: là một class kết hợp với tập tin Default.aspx, cho phép viết code một cách độc lập tương tự như ứng dụng Windows Form, thay vì phải viết code trong thẻ <script runat=”sever”/> 20 Chỉ dẫn của tập tin aspx 22/10/2012 39 Chỉ dẫn của tập tin aspx 22/10/2012 40 21 Chỉ dẫn của tập tin aspx • Cú pháp: – • Một số chỉ dẫn thường sử dụng – @Page: chỉ định các ứng xử của trang • CodeFile • Inherits • EnableSessionState • EnableViewState • ErrorPage: url đến trang web khác khi xảy ra lỗi • ValidateRequest: cho phép nhập các giá trị đặc biệt – @Import: chỉ định không gian tên cần import vào trang web 22/10/2012 41 Các sự kiện trong ứng dụng web • Tập tin ứng dụng Global.asax • Sự kiện mức ứng dụng • Sự kiện mức phiên làm việc • Sự kiện mức trang • Sự kiện các điều khiển server 22 Tập tin ứng dụng Global.asax • Thêm vào ứng dụng tập tin Global.asax – Từ menu Website, chọn Add New Item, Global Application Class – Tên mặc định của tập tin: Global.asax • Tập tin Global.asax 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. 43GV. Sự kiện mức ứng dụng • Sử dụng sự kiện mức ứng dụng để khởi tạo các đối tượng chung cho tất cả người dùng của ứng dụng web. – Application_Start: Chỉ xảy ra một lần đầu tiên khi bất kỳ trang nào trong ứng dụng được gọi. – Application_End: Xảy ra khi dừng hoạt động của WebServer. – Application_Error: Xảy ra khi có lỗi phát sinh trong quá trình thực thi. – Application_BeginRequest: xảy ra mỗi khi trình duyệt di chuyển đến một trang của ứng dụng – Application_EndRequest – Kết thúc xử lý yêu cầu của trình duyệt 44GV. 23 Sự kiện mức phiên làm việc • Sử dụng sự kiện mức phiên làm việc để khởi tạo các đối tượng được sử dụng chung trong phạm vi một phiên làm việc. – Session_Start: Xảy ra khi có một người dùng mới yêu cầu đến bất kỳ trang aspx của ứng dụng, một SessionID sẽ được tạo ra và được sử dụng để quản lý người dùng trong quá trình làm việc với ứng dụng. – 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). 45GV. Sự kiện mức trang 1. PreInit 2. Init 3. InitComplete 4. PreLoad 5. Load 6. LoadComplete 7. PreRender 8. PreRenderComplete 9. SaveStateComplete 10. Unload 24 Sự kiện mức trang (tt) • Page_Init: Khởi tạo trang: các điều khiển được khởi tạo và gán giá trị từ view state • Page_Load: Nạp trang: các điều khiển đã được khởi tạo, gán giá trị và sẵn sàng để sử dụng trong mã lệnh • Page_PreRender: xảy ra khi trang Web chuẩn bị được trả về cho Client. 47GV. Sự kiện mức trang (tt) • Page_Unload: Gỡ trang: web form sắp bị hủy • Page_Disposed: Hủy trang: web form đã bị hủy. • Page_Error: Trang bị lỗi: có lỗi chưa được xử lý xảy ra 48GV. 25 Sự kiện mức trang • Các sự kiện chính thường được sử dụng của web form là Page_Load và Page_Error • Có thể kết hợp thuộc tính IsPostBack với sự kiện Page_Load để khởi tạo các đối tượng cho web form trong lần đầu tiên (tương tự như Session_Start nhưng ở mức trang) 49GV. Thuộc tính IsPostBack • Là thuộc tính chỉ đọc của lớp Page, kiểu luận lý • Cho biết trạng thái của trang web khi được load: Load lần đầu -> IsPostBack = false • Ví dụ: private void Page_Load(object sender, System.EventArgs e) { if( ! IsPostBack) { // init } } 50GV. 26 Sự kiện các điều khiển Server • Các điều khiển Server, như Button, TextBox, DropDownList có các sự kiện riêng của mình, các sự kiện này xảy ra trong quá trình tương tác với người dùng (tương tự trong windows form). • Có 3 loại sự kiện điều khiển server: – Sự kiện post-back: • Làm trang web được gửi về server xử lý ngay lập tức. • Ảnh hưởng đến tốc độ xử lý. – Sự kiện cached • Được lưu lại trong view state và sẽ được xử lý khi có một sự kiện post-back. – Sự kiện kiểm chứng. • Được xử lý ngay tại phía client mà không cần post-back. Chủ yếu sử dụng bới các điều khiển kiểm chứng dữ liệu 51GV. Sự kiện các điều khiển Server (tt) • Các điều khiển Button, Link Button, và Image Button tạo ra các sự kiện post-back. • Các điều khiển TextBox, DropDownList, ListBox, RadioButton, và CheckBox tạo ra các sự kiện cached. • Tuy nhiên, ta có thể thay đổi điều này bằng cách thay đổi thuộc tính AutoPostBack của các điều khiển. 52GV. 27 Trình tự xử lý sự kiện các điều khiển Server 53GV. Bài 4. Các trạng thái ứng dụng • Vòng đời của ứng dụng web • Vòng đời của webform • Các mức trạng thái của ứng dụng – Query String – Cookie – Session – Profile 28 Vòng đời của ứng dụng web • Khi người dùng đóng trình duyệt hoặc chuyển sang một web site khác, session của người dùng kết thúc. • Nếu không tồn tại session của người dùng nào, ứng dụng web sẽ kết thúc. • Lưu ý: Điều này không xảy ra tức thời do cơ chế quản lý bộ nhớ của ASP.NET. Do đó không thể nói chính xác khi nào sự kiện Application_End xảy ra 55GV. Vòng đời của ứng dụng web (tt) 56GV. 29 Vòng đời của webform • Khi người dùng yêu cầu một trang web, trình duyệt hiển thị mã HTML nhận được, người dùng có thể tương tác với các điều khiển như gõ vào textbox, lựa chọn trong listbox, cho đến khi thực hiện tác vụ làm phát sinh sự kiện post-back (nhấn vào button,) • Sự kiện post-back khiến trình duyệt gửi lại dữ liệu của trang (dưới dạng view state) về cho server. Vòng đời của webform (tt) • Sau khi nhận được view state, server sẽ khởi tạo phiên bản mới của web form, đổ dữ liệu từ view state vào web form, sau đó thực hiện việc xử lý các sự kiện đã phát sinh. • Sau khi xử lý xong, server sẽ trả kết quả lại cho trình duyệt dưới dạng HTML và hủy phiên bản vừa tạo ra của web form. 30 Vòng đời của webform (tt) Cách bảo toàn dữ liệu trên Webform • Web forms được tạo ra và được huỷ tại mỗi thời điểm mà trình duyệt trên máy khách tạo ra một yêu cầu • Do đó, các giá trị biến bên trong Web form không giữ lại giá trị của chúng sau khi trang Web được hiển thị • Để giải quyết vấn đề này. ASP.NET cung cấp một số cách thức để giữ lại giá trị các biến giữa các yêu cầu 60GV. 31 Query strings • Chuyển thông tin giữa các yêu cầu và phản hồi thông qua một phần của địa chỉ Web . • Query strings có thể nhìn thấy được bởi người sử dụng, vì vậy chúng không nên chứa các thông tin bảo mật như mật khẩu. • Gửi một query string bằng cách thêm nó vào địa chỉ của phương thức Redirect 61GV. Query strings (tt) • Gởi query string 62GV. 32 Query strings (tt) • Để nhận thông tin từ query string trong mã lệnh, sử dụng phương thức QueryString của đối tượng Request 63GV. Cookies • Lưu trữ các thông tin đơn giản trên máy client • Các máy client có thể không chấp nhận cookie, do đó cần kiểm tra trước khi sử dụng. • Khi trình duyệt web tạo một Cookie, một nội dung sẽ được lưu vào header của trang web với nội dung có dạng: Set-Cookie: Message = value • Phần tiêu đề Set-Cookie này yêu cầu trình duyệt web tạo một Cookie có tên là Message coq giá trị là value. 33 Cookies • Sau khi một Cookie được tạo trên trình duyệt, mỗi khi trình duyệt yêu cầu một trang web trong ứng dụng, trình duyệt sẽ gửi một header có dạng : Cookie: Message = value • Tiêu đề Cookie chứa đựng tất cả các Cookie được tạo trên Web Server. Cookie được gửi trở lại mỗi khi một yêu cầu được đưa ra trên trình duyệt web. Cookies (tt) • Có hai loại cookie: – Session cookies chỉ tồn tại khi trình duyệt web còn làm việc, và bị hủy khi đóng trình duyệt web – Persistent Cookies: có thể tồn tại khá lâu. Khi một Persistent Cookies được tạo, nó sẽ được lưu trữ trên một tập tin trên máy tính. 34 Cookies (tt) • Tạo cookie: theo cú pháp – Response.Cookies[“CookieName"].Value = “value”; hoặc – HttpCookie cook = new HttpCokkie (“CookieName”); cook.Value = “value”; • Kiểm tra xem một trình duyệt có cho phép cookies hay không: – if ( Request.Browser.Cookies) { //do} Cookies (tt) 68GV. 35 Cookies (tt) • Lấy giá trị từ cookies – Response.Cookies[“CookieName"].Value 69GV. Cookies (tt) • Cookies đa trị – Có thể lưu trữ nhiều giá trị trong một cookie bằng cách sử dụng bộ [Name] [Value] được gọi là khóa. – Để tạo một Persistent Cookies, ta chỉ định thời hạn kết thúc cho Cookies: aCookie.Expires = DateTime.Now.AddDays(2); – Ví dụ: Thay vì tạo ra hai tập tin cookie riêng biệt có tên là userName và lastVisit,ta có thể tạo ra một cookie đơn đặt tên UserInfo và có hai giá trị là userName, lastVisit. 70GV. 36 Cookies (tt) • Cookies đa trị (tt) 71GV. Cookies (tt) • Xóa Cookies: 72GV. 37 Application, Session state • Application state – Lưu trữ các thông tin chung cho tất cả các người sử dụng • Session state – Lưu trữ các thông tin riêng biệt cho phiên làm việc hiện hành (riêng cho một người dùng). – Session cho phép lưu trữ dữ liệu với khối lượng lớn, điều này không được cho phép khi sử dụng Cookies Application, Session state (tt) • Các biến trạng thái Application và Session được tạo ra một cách tức thời, mà không kiểm tra tên biến hoặc kiểm tra kiểu dữ liệu. Ta nên giới hạn các điểm truy xuất đến các biến này. • Duy trì trạng thái Session ảnh hưởng đến tốc độ xử lý. Nó có thể được tắt đi ở mức ứng dụng hoặc mức trang • Ví dụ: sử dụng biến Application và Session để lưu số lượng người truy cập website 74GV. 38 Sử dụng Session • Lưu dữ liệu vào session: – Cú pháp: Session[“session_name”]=value; – VD: Session[“uname”] = “my name”; • Lấy dữ liệu từ session: – Kiểm tra sự tồn tại của session – Lấy dữ liệu từ session và chuyển đổi về kiểu dữ liệu hợp lệ – VD: if (Session[“uname”]!=null) string username=Session[“uname”].ToString(); Sử dụng Session (tt) • Hủy session: – Abandon: Kết thúc Session của một người dùng. – Clear: Cho phép xoá toàn bộ dữ liệu trong Session State. – Remove: cho phép xoá từng phần tử trong Session State • Một số thuộc tính thường dùng của lớp HttpSessionState – SessionID: giá trị nhận dạng session – Timeout: thời gian kết thúc một seesion – cookieless • AutoDetect: SessionID được lưu trữ trong một cookie khi trình duyệt có cho phép Cookie, ngược lưu trữ vào địa chỉ URL. • UseCookies: Session ID luôn luôn lưu trữ trong cookie • UseUri: Session ID luôn luôn được thêm vào URL 39 Thiết lập thời gian cho Session • Mặc định, ASP.Net duy trì trạng thái session là 20 phút, ta có thể thay đổi giá trị này bằng cách cấu hình trong trang web.config – <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20“ /> • Để tắt session: – Profile • Được dùng để thay thế cho Session hoặc cookie để lưu trữ thông tin của người sử dụng • Tạo Profile bằng cách định nghĩa một danh sách các thuộc tính Profile trong ứng dụng ờ trang web.config trong thư mục website 40 Profile (tt) • Một số thuộc tính – Name: tên của thuộc tính. – Type: kiểu dữ liệu của thuộc tính – Defaultvalue: giá trị mặc định của thuộc tính – ReadOnly: tạo thuộc tính chỉ đọc – allowAnonnyMous: cho phép người dùng nặc danh đọc và thiết lập thuộc tính – Provider: kết hợp thuộc tính với một Profile Provider riêng biêt – Profile (tt) • Sử dụng Profile – Lấy dữ liệu từ Profile: txtUserName.Text = Profile.UserName – Cập nhật dữ liệu vào Profile: Profile.NumberOfVisits++; Profile.UserName = txtUserName.Text; 41 Profile (tt) Profile (tt) • Tạo nhóm Profile – Khi cần định nghĩa nhiều thuộc tính của Profile, có thể tạo va quản lý thành các nhóm (groups) 42 Profile (tt) • Sử dụng nhóm Profile – Truy xuất thông qua group name: Profile.GroupName.Name Profile (tt) • Tạo Profile phức tạp: – Có thể tảo Profile để lưu trữ các dữ liệu phức tạp như danh sách, một bảng trong cơ sở dữ liệu 43 Profile (tt) Profile (tt) 44 Profile (tt) • Lớp ProfileManager – Được sử dụng để quản lý các profile, tìm kiếm profile, hay xóa các profile không còn sử dụng. – Lớp ProfileManager cung cấp các phương thức static và các thuộc tính có thể được truy cập bằng cách tham chiếu các đối tượng ProfileManager trong mã lệnh. – Mặc định các user profile bị vô hiệu hóa, để kích hoạt, ta cấu hình trong web.config như sau: Profile (tt) • Lớp ProfileManager – Một số phương thức • DeleteProfile: xóa một profile • GetAllProfiles: trả về tất cả profile trong data source Ví dụ private void GetProfiles() { ProfileGrid.DataSource = ProfileManager.GetAllProfiles( ProfileAuthenticationOption.All); ProfileGrid.DataBind(); } GV. Nguyễn Thị Mai Trang CHƯƠNG II Các điều khiển chuẩn và kiểm chứng 2 Mục tiêu • Sau khi học xong chương này, sinh viên có thể: – Hiểu ý nghĩa, vai trò của các thuộc tính và biến cố trong các điều khiển chuẩn. – Hiểu ý nghĩa, vai trò của các thuộc tính và biến cố trong các điều khiển kiểm chứng. – Sử dụng được các điều khiển chuẩn để tạo giao diện người dùng (nhập, xuất, liên kết, thực thi) cho ứng dụng Web. – Thực hiện được các kiểm chứng dữ liệu trước khi xử lý chúng. GV. Nguyễn Thị Mai Trang 3 Nội dung • Bài 1: Các điều khiển chuẩn • Bài 2: Các điều khiển kiểm chứng dữ liệu 4 Bài 1: Các điều khiển chuẩn • ASP.Net cung cấp nhiều control tạo các trang web động và tương tác với người sử dụng. • Các control chấp nhận mô hình lập trình phía server mà người sử dụng ở phía client tương tác với server control để phát sinh các sự kiện sẽ xử lý phía server. • Khi trang được yêu cầu các server control được biên dịch và thực thi trên server. GV. Nguyễn Thị Mai Trang 5 Sự khác nhau giữa Server Controls và HTML Controls • HTML controls không có bất kỳ tương tác nào với server sau khi chúng hiển thị về trên trang. • Còn Server Controls cho phép truy cập các phương thức, các thuộc tính, các sự kiện tại phía Server. 6 Thêm các server control lên Form • Thêm các server control lúc thiết kế hoặc lúc chạy. • Thêm lúc thiết kế có thể dùng Toolbox hoặc ở chế độ HTML của trang .aspx • Có thể thêm lúc chạy bằng việc dùng thẻ trong trang .aspx hoặc file code behind. GV. Nguyễn Thị Mai Trang 7 Dùng Toolbox • Toolbox phân loại các control thành các nhóm thuận tiện cho việc truy cập 8 Dùng ở chế độ hiển thị HTML • Có thể thêm server control bằng cách chỉ định code ASP.Net trực tiếp trong chế độ hiển thị HTML của file .aspx. <asp:TextBox id = "MyTextBox" runat = "server" Text = "Greetings"> GV. Nguyễn Thị Mai Trang 9 Dùng trong code behind • ASP.Net cho phép thêm các server control lúc chạy • Ví dụ: tạo động một textbox: TextBox tb = new TextBox(); tb.ID = "txtUser“; tb.Text = "“; Panel1.Controls.Add(tb) 10 Thiết lập thuộc tính cho server control • Các server control có các thuộc tính thông dụng kế thừa từ lớp cơ sở WebControl. • Có thể thiết lập thuộc tính lúc thiết kế hoặc khi thực thi. • Thiết lập thuộc tính của control lúc thiết kế sử dụng cửa sổ Properties GV. Nguyễn Thị Mai Trang 11 Thiết lập thuộc tính cho server control • Có thể thiết lập các thuộc tính của WebControl trực tiếp trong chế độ hiển thị HTML. <asp:TextBox Id = "Text_Box" runat = "server" Enabled = False> • Thiết lập thuộc tính khi thực thi – Cú pháp : ControlID.PropertyName = Value; Ví dụ: txtUser.Enabled = True; 12 Một số thuộc tính, phương thức, sự kiện của server controls Property/Method/Event Mô tả DataBinding event Phát sinh khi control chuẩn bị tương tác với DataSource Enabled property Chấp nhận gt Bool chỉ định khi nào control được enabled EnableViewState property Giá trị Bool chỉ định control có duy trì trạng thái khi hiển thị Font property Get hoặc Set Font ForeColor property Get hoặc Set màu chữ Height property Get hoặc Set chiều cao control GV. Nguyễn Thị Mai Trang 13 Một số thuộc tính, phương thức, sự kiện của server controls Property/Method/Event Mô tả ID property Get hoặc Set nhận biết control TabIndex property Get hoặc Set TabIndex ToolTip property Get hoặc Set ToolTip Visible property Chỉ định control hiển thị hoặc không hiển thị trên UI Width property Get hoặc Set độ rộng 14 Các nhóm điều khiển chuẩn • Điều khiển hiển thị dữ liệu • Điều khiển nhập dữ liệu • Điều khiển gởi trang web đến Server • Điều khiển hiển thị hình ảnh • Điều khiển khác – Panel – Hyperlink – FileUpload – Calendar GV. Nguyễn Thị Mai Trang 15 Điều khiển hiển thị dữ liệu • Điều Khiển Label • Điều Khiển Literal 16 Label • Label thường được sử dụng để hiển thị và trình bày chuỗi trên trang web. • Nội dung được hiển thị trong label được xác định thông qua thuộc tính Text. • Thuộc tính Text có thể nhận và hiển thị nội dung với các tag HTML. • Ví dụ. lbNormal.Text=“normal text”; lbBold.Text =“bold text”; GV. Nguyễn Thị Mai Trang 17 Literal • Điều khiển Literal tương tự như Label, dùng để hiển thị và trình bày chuỗi trên trang web. • Điểm khác nhau giữ Literal và Label: – Khi kết xuất ra trình duyệt, điều khiển Literal không tạo ra thẻ HTML, còn Label tạo ra thẻ – Điều khiển Literal không có các thuộc tính (Properties) định dạng như Label. 18 Label và Literal GV. Nguyễn Thị Mai Trang 19 Điều khiển nhập dữ liệu • Điều KhiểnTextBox • Điều khiển CheckBox • Điều khiển RadioButton 20 TextBox • TextBox là điều khiển được dùng để nhập dữ liệu • TextBox thường được sử dụng nhiều với các ứng dụng trên windows form. • Các thuộc tính quan trọng: – TextMode: • SingleLine: chứa 1 dòng văn bản • MultiLine: chứa nhiều dòng văn bản • Hiển thị dấu * thay cho các ký tự có trong TextBox. GV. Nguyễn Thị Mai Trang 21 TextBox • Các thuộc tính quan trọng: – Rows: qui định số dòng văn bản được hiển thị (trường hợp TextMode = MultiLine) – MaxLength: số ký tự tối đa được nhập vào TextBox (MaxLength = 0: không giới hạn) – Wrap: cho phép hay không văn bản tự động xuống dòng khi kích thước ngang của của điều khiển không đủ để hiển thị dòng nội dung văn bản, mặc định Wrap = True (tự động xuống dòng) 22 TextBox • Các thuộc tính quan trọng: – AutoPostBack: qui định điều khiển có được phép tự động PostBack về Server khi nội dung trong Textbox bị thay đổi hay không, mặc định AutoPostBack = False (không tự động Postback) GV. Nguyễn Thị Mai Trang 23 CheckBox • Các thuộc tính: – Checked: trạng thái của CheckBox (chọn hay không chọn) – TextAlign: vị trí hiển thị của điều khiển so với chuỗi văn bản. – AutoPostBack: mặc định là false. 24 CheckBox • Sự kiện: – CheckedChanged: là sự kiện mặc định, xảy ra khi có thay đổi lựa chọn từ CheckBox. Biến cố này chỉ xảy ra khi AutoPostBack = true. GV. Nguyễn Thị Mai Trang 25 RadioButton • Các thuộc tính: (tương tự CheckBox) – GroupName (RadioButton): Tên nhóm, được sử dụng để nhóm các điều khiển RadioButton lại thành 1 nhóm -> chỉ cho phép người sử dụng chọn một trong các tùy chọn 26 Điều khiển gởi trang Web đến Server • Là các Submit Button, mỗi khi được nhấn vào sẽ PostBack về Server. • Điều Khiển Button • Điều Khiển LinkButton • Điều Khiển ImageButton • Biến cố Command. GV. Nguyễn Thị Mai Trang 27 Button • Các thuộc tính AccessKey Chỉ định phím di chuyển tới điều khiển Button. CommandArgument Chỉ rõ đối số được truyền tới lệnh thực hiện. CommandName Chỉ định tên một lệnh được truyền tới trong Command Event. OnClientClick Chỉ định đến một hàm phía client khi nhấn vào Button. PostBackUrl Url trang khi có PostBack về Server 28 Button GV. Nguyễn Thị Mai Trang 29 LinkButton, ImageButton • Tương tự điều khiển Button nhưng kết xuất trên trình duyệt khác nhau – Button: thẻ – LinkButton: thẻ – ImageButton: thẻ • LinkButton – PostbackUrl: liên kết đến một địa chỉ trang web • ImageButton: – ImageUrl: liên kết file ảnh hiển thị trên button 30 LinkButton, ImageButton GV. Nguyễn Thị Mai Trang 31 Điều khiển hiển thị hình ảnh • Điều Khiển Image • Điều Khiển ImageMap 32 Điều khiển Image • Dùng để hiển thị ảnh giống với thẻ trong HTML • Các thuộc tính: AlternateText Chuỗi thay thế khi lỗi đường dẫn của ảnh ImageUrl Đường dẫn của ảnh hiển thị GV. Nguyễn Thị Mai Trang 33 Điều Khiển ImageMap • Cho phép tạo ra các liên kết ứng với từng vùng ảnh trên hình ảnh • Các thuộc tính: HotSpots Tập hợp các vùng ảnh và liên kết ImageUrl Đường dẫn của ảnh hiển thị 34 Điều Khiển ImageMap • Tạo các vùng ảnh GV. Nguyễn Thị Mai Trang 35 Các điều khiển khác • Điều Khiển Panel • Điều Khiển HyperLink • Điều Khiển FileUpload • Điều Khiển Calendar 36 Điều khiển Panel • Được sử dụng để chứa các điều khiển khác. • Các thuộc tính: BackImageUrl Đường dẫn file ảnh nền GrouppingText Chuỗi hiển thị trên khung ScrollBars Thanh cuộn GV. Nguyễn Thị Mai Trang 37 Điều Khiển 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: NavigateUrl Đường dẫn cần liên kết đến Target Kiểu cửa sổ trang liên kết ImageURL Chỉ định url ảnh hiển thị Text Chuỗi hiển thị 38 Điều Khiển FileUpload • Cho phép người sử dụng chọn tập tin từ máy client để tải lên server GV. Nguyễn Thị Mai Trang 39 Điều Khiển Calendar • Cho phép hiển thị thời gian (ngày, tháng, năm) với nhiều định dạng khác nhau. • Các thuộc tính: 40 Điều Khiển Calendar • Các thuộc tính: – SelectedDate: ngày được chọn trên Calendar • Sự kiện: – SelectionChanged: sự kiện mặc định, xảy ra khi có sự thay đổi chọn trên Calendar Ví dụ: Label1.Text = Calendar1.SelectedDate.ToLongDateString(); GV. Nguyễn Thị Mai Trang 41 Bài 2. Điều khiển kiểm chứng dữ liệu • Giải thích cơ chế kiểm chứng dữ liệu của ASP.NET • Kiểm chứng dữ liệu được nhập bằng theo một số tiêu chuẩn khác nhau • Hiển thị thông báo lỗi kiểm chứng dữ liệu • Tạo các tiêu chuẩn kiểm chứng dữ liệu của riêng mình 42 Khái niệm kiểm chứng dữ liệu • Quá trình kiểm chứng kiểm tra tính hợp lệ của dữ liệu được nhập vào các điều khiển trên web form ở phía client, trước khi trang được gửi về server để xử lý. • Quá trình kiểm chứng phía client được thực hiện bởi các đoạn mã của thư viện JScript tên là WebUIValidation.js • Thư viện này được tải về phía client một cách riêng rẽ GV. Nguyễn Thị Mai Trang 43 Khái niệm kiểm chứng dữ liệu • Quá trình kiểm chứng dữ liệu sau đó luôn luôn được thực hiện ở phía server • Cơ chế này nhằm đảm bảo quá trình kiểm chứng dữ liệu luôn được thực hiện chính xác (do thư viện JScript có thể không được hỗ trợ đầy đủ bởi các trình duyệt khác) 44 Sử dụng các điều khiển KCDL 1.Vẽ điều khiển kiểm chứng trên web form 2.Thiết lập thuộc tính ControlToValidate là điều khiển cần kiểm chứng 3.Thiết lập thuộc tính ErrorMessage thành thông báo lỗi nếu dữ liệu không hợp lệ 4.Thiết lập thuộc tính Text để hiển thị thông báo lỗi ngắn gọn (khi đó thông báo đầy đủ là ErrorMessage sẽ hiển thị trong điều khiển ValidationSummary). GV. Nguyễn Thị Mai Trang 45 Sử dụng các điều khiển KCDL 5. Đưa điều khiển ValidationSummary để hiển thị các lỗi kiểm chứng tại một vị trí tập trung. 6. Đưa một điều khiển post-back (như Button) vào web form. Quá trình kiểm chứng dữ liệu chỉ xảy ra khi có yêu cầu post-back. 46 Thuộc tính Page.IsValid • Thuộc tính Page.IsValid kiểm tra xem form đã thỏa các Validation Control hay không. • Trả về true nếu không có lỗi xảy ra, ngược lại trả về false GV. Nguyễn Thị Mai Trang 47 Các nhóm kiểm chứng • RequiredFieldValidator: Kiểm tra xem điều khiển có chứa dữ liệu không • CompareValidator: Kiểm tra xem dữ liệu đưa vào một điều khiển này có phù hợp với dữ liệu đưa vào một điều khiển khác hay không • RangeValidator: Kiểm tra xem dữ liệu đưa vào có nằm trong khoảng hai giá trị cho trước không 48 Các nhóm kiểm chứng (tt) • RegularExpressionValidator: Kiểm tra xem dữ liệu đưa vào có tuân thủ theo định dạng cho trước không • CustomValidator: Kiểm tra dữ liệu đưa vào theo quy tắc riêng • ValidationSummary: Hiển thị một cách tập trung các lỗi, thông báo kiểm chứng dữ liệu GV. Nguyễn Thị Mai Trang 49 Hủy bỏ kiểm chứng • Các bước hủy bỏ kiểm chứng – Tạo một Button dạng: <asp:Button ID="btnRemove" CommandName="Delete" runat="server" CausesValidation="false" OnClientClick= "javascript:Page_ValidationActive = false;" /> 50 RequiredFieldValidator • Kiểm tra xem điều khiển có chứa dữ liệu hay không • Các thuộc tính: ControlToValidate Điều khiển được kiểm tra ErrorMessage Chuỗi thông báo khi kiểm tra có lỗi (khi điều khiển không chứa dữ liệu) GV. Nguyễn Thị Mai Trang 51 CompareValidator • Kiểm tra xem dữ liệu đưa vào một điều khiển này có phù hợp với dữ liệu đưa vào một điều khiển khác hay không • Các thuộc tính: ControlToValidate Điều khiển được kiểm tra ControlToCompare Điều khiển được so sánh với điều khiển được kiểm tra 52 RangeValidator • Kiểm tra xem dữ liệu đưa vào có nằm trong khoảng hai giá trị cho trước không • Các thuộc tính: MinimumValue Giá trị nhỏ nhất trên điều khiển được kiểm chứng MaximumValue Giá trị lớn nhất trên điều khiển được kiểm chứng Type Kiểu dữ liệu trên điều khiển được kiểm chứng GV. Nguyễn Thị Mai Trang 53 RegularExpressionValidator • Kiểm tra xem dữ liệu đưa vào có tuân thủ theo định dạng cho trước không • Thuộc tính ValidatorExpression: quy định mẫu nhập liệu 54 RegularExpressionValidator • [các kí tự] : kí tự nhập phải khớp với một trong các kí tự giữa [ ] • [^các kí tự]: kí tự nhập phải khác với các kí tự giữa [ ] • \w: kí tự nhập là kí tự bất kỳ. • \W: kí tự nhập là khoảng trắng [\t\n\r\f\v] • \s: kí tự nhập phải khác khoảng trắng [^\t\n\r\f\v] • \d: kí tự nhập là kí tự số [0-9] GV. Nguyễn Thị Mai Trang 55 RegularExpressionValidator • \D: kí tự nhập phải khác kí tự số [^0-9] • {n,m}: các mục đứng trước được lặp từ n đến m lần. • {n,}: các mục đứng trước được lặp >=n lần. • {n}: các mục đứng trước được lặp đúng n lần • ? : các mục đứng trước được lặp 0 -1 lần • + : các mục đứng trước được lặp 1 lần • * : các mục đứng trước được lặp ít nhất 1 lần 56 RegularExpressionValidator • Ví dụ 1: kiểm chứng dd/MM/yy – ((0[1-9])|([1-2][0-9])|(3[0-1])): ngày từ 01-31 – ((0[1-9])|(1[0-2])): tháng từ 1-12 – [0-9]{2}: năm • Ví dụ 2: [0-9]{3}-[0-9]{3}\s[0-9]{4} – [0-9] nhận tất cả các số 0-9 – {3} yêu cầu 3 số được nhập cho phần đầu tiên – - là dấu bắt nhập – \s chỉ định một khoảng trắng GV. Nguyễn Thị Mai Trang 57 CustomValidator • Thực hiện các kiểm chứng phức tạp không được cung cấp bởi các control kiểm chứng bằng cách sử dụng control CustomValidator và viết các đoạn mã để thực hiện việc kiểm chứng trên server và (có thể có) trên client • Ví dụ: kiểm tra một số nhập vào có phải là số nguyên tố hay không – Ở phía server, đoạn mã kiểm chứng nằm trong hàm sự kiện ServerValidate . Các tham số của hàm này cung cấp khả năng truy cập đến các control cần kiểm chứng. 58 CustomValidator GV. Nguyễn Thị Mai Trang 59 CustomValidator • Ở phía Client, chỉ ra các script kiểm chứng trong thuộc tính ClientValidationFunction của CustomValidator. 60 ValidationSummary • Hiển thị các lỗi kiểm chứng ở một vị trí chung • Thuộc tính ErrorMessage của các kiểm chứng được hiển thị trong control ValidationSummary • Thuộc tính Text của các điều khiển kiểm chứng hiển thị trên điều khiển kiểm chứng GV. Nguyễn Thị Mai Trang 61 Tự tạo điều khiển kiểm chứng • Có thể tạo ra một điều khiển kiểm chứng bằng cách tạo một lớp dẫn xuất từ lớp cơ sở BaseValidator. • BaseValidator là lớp cơ sở của tất cả các điều khiển kiểm chứng, đây là lớp abstract, do đó, các lớp dẫn xuất phải thực thi phương thức: – EvaluateIsValid: trả về true nếu kiểm chứng thành công 62 Tự tạo điều khiển kiểm chứng • Ngoài ra, có thể định nghĩa lại một số phương thức khác của lớp này như: – GetControlValidationValue: cho phép lấy giá trị của các control được kiểm chứng • Khi tạo một điều khiển kiểm chứng, ta phải định nghĩa lại phương thức EvaluateIsValid(), và bên trong phướng thức này, gọi GetControlValidationValue để lấy giá trị từ control được kiểm chứng • Ví dụ: tạo một LengthValidator Control để kiểm tra độ dài dữ liệu nhập trên một TextBox GV. Nguyễn Thị Mai Trang 63 Tự tạo điều khiển kiểm chứng (tt) 64 Tự tạo điều khiển kiểm chứng (tt) Chương 3: Ngôn ngữ PHP Mục tiêu • Sau khi học xong chương này, sinh viên có thể: – Hiểu và sử dụng đúng các kiểu dữ liệu, toán tử, các cấu trúc, hàm, mảng – Hiểu cơ chế xử lý form của PHP. – Sử dụng được PHP và HTML để thiết kế các trang Web Nội dung • Giới thiệu. • Cấu trúc và cú pháp. • Hằng và biến. • Các kiểu dữ liệu. • Các toán tử • Cấu trúc lựa chọn. • Cấu trúc lặp • Hàm • Mảng • Truyền biến giữa các trang • Truyền thông tin bằng form 1. Giới thiệu PHP • Giới thiệu PHP • Cài đặt • Lập trình PHP Giới thiệu PHP • PHP (Personal Home Page) ra đời năm 1994 do phát minh của Rasmus Lerdorf • PHP bắt đầu được sử dụng trong môi trường chuyên nghiệp và trở thành chữ viết tắt của Hypertext Preprocessor. • PHP là ngôn ngữ mã nguồn mở, là kịch bản trình chủ (server script) chạy trên phía server (server side). Giới thiệu PHP • Cho phép xây dựng ứng dụng web với các cơ sở dữ liệu mySQL, Oracle, SQL Server • PHP là công nghệ phía server (server-side), không phụ thuộc vào môi trường (cross- platform), có thể sử dụng được trên nhiều hệ điều hành: Unix, Lunix, Windows • Do PHP dễ học, thời gian tạo các trang Web động tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình Web phổ biến Cài đặt PHP • Download PHP ở địa chỉ: (phiên bản mới nhất là 5.4.7 • Download tài liệu tham khảo : • Cài đặt cấu hình WebServer và database (IIS, Apache hoặc PhpAdmin,.) • Hiện nay, các lập trình viên thường sử dụng các PHP framework để xây dựng ứng dụng web. (Zend, Prado, CakePHP,) Cài đặt PHP • Cài đặt cấu hình PHP trên IIS Windows 7: – Giải nén gói PHP, ra một thư mục nào đó (ví dụ C:\php5) – Đổi tên file php.ini-recommendedthành php.ini – Mở php.ini, thay đổi các thông số sau: • cgi.force_redirect = 0 • cgi.fix_pathinfo = 1 • fastcgi.impersonate = 1 • extension_dir = "C:\php5\ext“ – Copy file php.ini trên vào thư mục C:\Windows, file php5ts.dll vào thư mục C:\Windows\System32 Cài đặt PHP • Cài đặt cấu hình PHP trên IIS: – Vào Control Panel / Programs / Turn Windows Features on or off, check vào các mục chọn như hình Cài đặt PHP • Cài đặt cấu hình PHP trên IIS: – Mở IIS: Control Panel, System and Security, Administrative Tools hoặc search inetmgr – Click lên thư mục Default Website – Double click lên biểu tượng Handler Mappings – Bên cửa sổ Action, chọn Add Module Mapping Cài đặt PHP • Cài đặt cấu hình PHP trên IIS (tt) Cài đặt PHP • Cài đặt cấu hình PHP trên IIS (tt) – Nhập các thông số như sau Cài đặt PHP • Cài đặt cấu hình PHP trên IIS (tt) – Tạo thư mục ảo chứa mã nguồn các trang php – Thực thi trang php trên trình duyệt: • Cấu trúc và cú pháp của PHP • Cấu trúc trang PHP: – Trang PHP là sự phối hợp của các thẻ HTML và PHP – Lệnh PHP nằm trong cặp thẻ mở – Ví dụ Cấu trúc và cú pháp của PHP • Cú pháp PHP tương tự ngôn ngữ C • Một số lưu ý: – Cuối câu lệnh có dấu ; – Mỗi phương thức đều bắt đầu { và đóng bằng dấu } – Ghi chú (comment): • Sử dụng ký hiệu // hoặc # để giải thích cho mỗi câu ghi chú • Sử dụng /* và */ cho mỗi đoạn ghi chú Hằng • Khai báo và sử dụng hằng – Sử dụng phát biểu define để khai báo hằng – Ví dụ: define (“MAX” , 100); Hằng • Kiểm tra hằng: sử dụng hàm defined để kiểm tra sự tồn tại của hằng • Ví dụ: Biến • Khai báo: sử dụng tiền tố $ trước tên biến. • Khai báo biến không có kiểu dữ liệu • Khai báo biến có phân biệt chữ hoa hay thường • Nên gán giá trị khởi đầu cho biến lúc khai báo • Cú pháp: $variablename [=initial value]; • Ví dụ: Biến (tt) • Tầm vực của biến. – Biến khai báo bên ngoài hàm thì sẽ có tầm vực trong trang PHP – Biến khai báo trong hàm thì chỉ có hiệu lực trong hàm –Để sử dụng biến toàn cục trong hàm, sử dụng từ khóa global. Biến (tt) Kiểu dữ liệu • Boolean • Integer • Float • String • Object • Array Kiểu dữ liệu (tt) • Thay đổi kiểu dữ liệu – Ép kiểu (như ngôn ngữ C) – Sử dụng hàm settype – Hàm gettype: trả về kiểu của biến Kiểu dữ liệu (tt) • Kiểm tra kiểu dữ liệu – is_array, is_bool, is_double, is_float, is_integer, is_long, is_real, is_string, is_object, – Các hàm trên trả về true nếu kiểu dữ liệu của biến được kiểm tra là đúng. Một số hàm toán học • mixed max ( array $values ) mixed max ( mixed $value1, mixed $value2 [, mixed $value3...] ) • mixed min ( array $values ) mixed min ( mixed $value1, mixed $value2 [, mixed $value3...] ) Một số hàm toán học (tt) Một số hàm toán học (tt) • int count ( mixed $var [, int $mode] ) Một số hàm toán học (tt) • number abs ( mixed $number ) • float exp ( float $arg ) • number pow (number $base, number $exp ) • float sqrt ( float $arg ): tính căn bậc 2 • int rand ( [int $min, int $max] ) Một số hàm toán học (tt) • float round ( float $val [, int $precision] ) – VD: numberformat.php • float ceil ( float $value ) • float floor ( float $value ) Các toán tử • Toán tử số học Các toán tử (tt) • Toán tử quan hệ Các toán tử (tt) • Toán tử luận lý Các toán tử (tt) • Toán tử gán – ( =, +=, -=, *=, /=, %=, .=) Cấu trúc lựa chọn • Lệnh if / else – if (expr) statement – if (expr) statement else statement Cấu trúc lựa chọn (tt) • Lệnh if / else – if (expr) statement elseif (expr) statement else statement Cấu trúc lựa chọn (tt) • Lệnh switch Cấu trúc lặp • Lệnh for for (expr1; expr2; expr3) statement Cấu trúc lặp (tt) • Lệnh foreach foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement Cấu trúc lặp (tt) • Lệnh foreach Cấu trúc lặp (tt) • Lệnh foreach Cấu trúc lặp (tt) • Lệnh foreach Cấu trúc lặp (tt) • Lệnh while – while (expr) statement Cấu trúc lặp (tt) • Lệnh do / while do statement while (expr) ; Hàm • Qui tắc xây dựng hàm function FunctionName($arg_1, $arg_2, /* ..., */ $arg_n) { //statement } – Hàm có thể có hoặc không có giá trị trả về – Tên hàm phải khác với các hàm chuẩn – Một hàm có thể định nghĩa trong 1 hàm khác – Hàm trong PHP có tầm vực toàn cục Hàm (tt) • Ví dụ Hàm (tt) • Hàm đệ qui (Recursive functions ) Mảng (Array) • Mảng một chiều – Khai báo mảng một chiều • $arr [ ] = item1; $arr [ ] = item2; $arr [ ] = item3; • $arr [0] = item1; $arr [1] = item2; $arr [2] = item3; • $arr = array (“item1”, “item2”, “item3”) ; Mảng (tt) • Mảng một chiều – Khai báo mảng một chiều • $arr [“one”] = “item1”; $arr [“two”] = “item2”; $arr [“three”] = “item3”; • $arr = array (“one” => “item1”, “two”=> “item2”, “three”=> “item3”) ; Mảng (tt) • Mảng một chiều – Truy xuất các phần tử mảng • Truy xuất trực tiếp phần tử: echo $arr [1]; // item1 • Dùng vòng lặp duyệt mảng Mảng (tt) • Mảng một chiều – Truy xuất các phần tử mảng • Dùng hàm list() và each() Mảng (tt) • Mảng hai chiều Mảng (tt) • Các hàm làm việc với mảng – bool sort ( array &$array [, int $sort_flags] ) • Sắp xếp mảng tăng dần • Sorting type flags: – SORT_REGULAR - compare items normally (don't change types) – SORT_NUMERIC - compare items numerically – SORT_STRING - compare items as strings Mảng (tt) Mảng (tt) • Các hàm làm việc với mảng – bool rsort ( array &$array [, int $sort_flags] ) • Sắp xếp mảng giảm Mảng (tt) • Các hàm làm việc với mảng – int count ( mixed $var [, int $mode] ) • Trả về số phần tử trong mảng • Tùy chọn mode ( từ phiên bản PHP 4.2.0) –Mặc định: 0 –COUNT_RECURSIVE (1): Đếm tất cả các phần tử đệ qui Mảng (tt) Mảng (tt) • Các hàm làm việc với mảng – mixed current ( array &$array ) • Trả về phần tử hiện tại ở đầu mảng – mixed next ( array &$array ) • Trỏ đến phần tử đứng sau phần tử hiện tại – mixed prev ( array &$array ) • Trỏ đến phần tử trước phần tử hiện tại Mảng (tt) Mảng (tt) • Các hàm làm việc với mảng – mixed reset ( array &$array ) • Đặt con trỏ về phần tử đầu tiên của mảng Truyền biến giữa các trang • Sử dụng các biến môi trường $_POST , $HTTP_POST_VARS, $_REQUEST để truyền các thông tin của form – Ví dụ: test.php Truyền biến giữa các trang (tt) • foo.php Truyền biến giữa các trang (tt) • Sử dụng query string – Dạng: url ? key1 =value1 & key2 =value2 – Hoặc: url ? key = urlencode(value) – Sử dụng $_GET để lấy giá trị từ query string: • $value1 = $_GET[‘key1']; • $value2 = $_GET[‘key2']; Truyền biến giữa các trang (tt) • Queystring.php • Querystring_result.php Truyền biến giữa các trang (tt) • Sử dụng Session – Cú pháp: $_SESSION[ ‘key’ ] = value; – Lấy giá trị từ session: • $value = $_SESSION[‘key']; – Khai báo sử dụng session: • session_start(); – Kiểm tra session tồn tại: if ( isset ($SESSION[‘key’]) { } Truyền biến giữa các trang (tt) • Session.php • Session_result.php Truyền biến giữa các trang (tt) • Sử dụng Cookkie – Cookie là những thông tin được lưu trên máy client – Cú pháp: bool setcookie ( string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly]]]]]] ) Truyền biến giữa các trang (tt) • Sử dụng Cookkie Truyền biến giữa các trang (tt) • Sử dụng Cookkie Truyền thông tin bằng Form • Các thành phần Form • Các thành phần khác • Xử lý Form Các thành phần form • Cấu trúc Form – Bắt đầu và kết thúc bởi cặp thẻ • Các thuộc tính: – action, method, enctype • Các thành phần chính của form: – textarea, select, input Các thành phần form (tt) • Cấu trúc Form – Nằm trong cặp thẻ • Các thuộc tính: – action, method, enctype • Các thành phần chính của form: – textarea, select, input Các thuộc tính Form • Action : – action=”URL” hoặc action= “script code” mà form sử dụng • Method: phương thức thực hiện trên form – GET: mặc định – POST Các thành phần khác • Textarea: thành phần hiển thị văn bản – Bắt đầu và kết thúc bởi và – Các thuộc tính • Name • Rows • Cols • Wrap: (off, vitual, physical) Các thành phần khác (tt) • Select: thành phần cho phép hiển thị danh sách – Bắt đầu và kết thúc bởi và – Các thuộc tính • Name • Size • Multiple – Thẻ có thể chèn trong thẻ select, gồm các thuộc tính • Selected • Value • Disable Các thành phần khác (tt) • input: – Bắt đầu và kết thúc bởi và – Các thuộc tính • Name • Type – checkbox, radio. – submit, button, reset. – password, text, file. – hidden, image • Checked: trường hợp type là checkbox, radio. • Maxlength: trường hợp type là text, password • Size Các thành phần khác (tt) • Input (tt) – Kiểu text: ô nhập liệu • – Kiểu submit: nút nhấn • Xử lý Form • Khi form được submit, ta có thể lấy các giá trị từ các thành phần trên form • Truy xuất giá trị từ các thành phần trên Form được gởi (submit) bằng POST thông qua biến toàn cục $_POST. • Vd: $content = $_POST [‘txtContent’]; • Lệnh: print_r ($_POST): hiển thị toàn bộ nội dung của mảng $_POST. Xử lý Form • Ví dụ: trang action.html • Trang action.php Xử lý Form • Ví dụ: trang form.php • Trang submit.php Xử lý Form • Form.htlm • Form.php 11 Chương 4 Tổng quan về truy cập cơ sở dữ liệu 2 Mục tiêu • Sau khi học xong chương này, sinh viên có thể: – Hiểu về công nghệ ADO. NET, hệ quản trị SQL Server 2005 Express và công cụ SQL Server Management. – Hiểu vai trò của các điều khiển DataBound và DataSource. – Sử dụng SQL Server Management và Server Explorer để tạo Server database và Local data- base. – Sử dụng SqlData-Source để kết nối và truy cập CSDL 23 Nội dung • Công nghệ ADO.NET. • SQL Server 2005 Express • Điều khiển DataBound. • Điều khiển DataSource. • Điều khiển SqlDataSource 4 1. Công nghệ ADO.NET • ADO.NET (Active Data Objects .NET) là công nghệ truy cập cơ sở dữ liệu của Microsoft • ADO.NET là công nghệ truy cập cơ sở dữ liệu trong .NET Framework • ADO.NET không phải là bản nâng cấp của ADO, đây là một công nghệ hoàn toàn mới (như ASP.NET và ASP) 35 1. Công nghệ ADO.NET • Việc truy cập dữ liệu trong ADO.NET được thiết kế thành 3 lớp: – Lớp thấp nhất là lớp vật lý lưu trữ dữ liệu, đây có thể là một tập tin Access, một cơ sở dữ liệu SQL hay một tập tin XML – Lớp giữa (lớp trừu tượng) là lớp cung cấp dữ liệu, thực hiện các chức năng kết nối cơ sở dữ liệu, thao tác với dữ liệu – Lớp trên cùng là tập dữ liệu (DataSet), đây là ánh xạ của cơ sở dữ liệu vào bộ nhớ để làm việc 6 Kiến trúc của ADO.NET 47 Mục tiêu của ADO.NET • Cung cấp các lớp để thao tác CSDL trong cả hai môi trường là phi kết nối (Disconected data) và kết nối (Connected data) • Tích hợp chặt chẽ với XML (Extensible Markup Language) • Tương tác với nhiều nguồn dữ liệu thông qua mô tả dữ liệu chung • Tối ưu truy cập nguồn dữ liệu (OLE DB & SQL server) • Làm việc trên môi trường Internet 8 Ưu điểm của ADO.NET • Người dùng có thể làm việc với cơ sở dữ liệu thông qua DataSet mà không cần quan tâm đến loại cơ sở dữ liệu cụ thể • Tiết kiệm công sức xây dựng ứng dụng (không cần phải viết lại chương trình khi thay đổi cơ sở dữ liệu) 59 Các namespace cơ bản của ADO.NET • System.Data • System.Data.SqlClient: Dùng cho cơ sở dữ liệu SQL • System.Data.OleDb: Dùng cho cơ sở dữ liệu access • System.Data.OracleClient: Dùng cho cơ sở dữ liệu Oracle 10 Cấu trúc của ADO.NET 611 Các đối tượng Connection • OleDbConnection: Kết nối với CSDL Access • SqlConnection: Kết nối đến CSDL SQL Server • OracleConnection: Kết nối với CSDL Oracle • Khi làm việc với mỗi loại dữ liệu, ta cần khai báo các namespace tương ứng – using System.Data.OleDb; – using System.Data.SqlClient; – using System.Data.OracleClient; 12 2. SQL Server 2005 Express • Microsoft SQL Server 2005 Express là phiên bản của SQL Server được kèm theo Visual Studio, có thể tải về tại Website • Microsoft SQL Server 2005 Express được xem như bản thu gọn của phiên bản SQL Server 2005, do đó phần mềm này chỉ giới hạn trong một số tính năng 713 SQL Server 2005 Express Management • Có thể sử dụng một trong ba công cụ để tạo cơ sở dữ liệu mới khi dùng SQL Server 2005 Express – Sử dụng Server Explorer trong Visual Studio – Sử dụng Microsoft SQL Server Management Studio Express, tải ở Website – Sử dụng giao diện dòng lệnh SQLCMD –S .\SQLExpress. Kế đến là nhập các câu lệnh SQL tại dấu nhắc 14 Server database • Cơ sở dữ liệu được lưu trữ trên Server của hệ quản trị cơ sở dữ liệu 815 Server database (tt) • Tạo server database – Sử dụng Microsoft SQL Server Management Studio Express – Tạo trực tiếp trong môi trường VS.Net: cửa sổ Server Explorer 16 Local database • Tập tin cơ sở dữ liệu được lưu trữ trong thư mục App_data của Website • So sánh local database và server database – Sử dụng local database dễ dàng sao chép, di chuyển thư mục website (file CSDL nằm trong thư mục) thay vì phải backup, restore như đối với server database – Trong ứng dụng sử dụng CSDL phức tạp, kết hợp với cơ chế bảo mật của ASP.NET, server database thích hợp hơn 917 Điều khiển DataBound • Các điều khiển DataBound thường được sử dụng để tạo ra giao diện người dùng khi truy cập dữ liệu • Các điều khiển DataBound có thể được sử dụng để hiển thị và sửa đổi cơ sở dữ liệu, dữ liệu XML hoặc các kiểu dữ liệu khác • Có ba loại điều khiển DataBound tiêu biểu: –Điều khiển danh sách –Điều khiển dạng bảng –Điều khiển phân cấp 18 Điều khiển danh sách • Được sử dụng để hiển thị các danh sách đơn giản, gồm các điều khiển: – DropDownList – ListBox – CheckBoxList – RadioButtonList – BulletedList • Các điều khiển trên đều thừa kế cùng một lớp cơ sở ListControl. Do đó, chúng có chung một tập các thuộc tính và phương thức 10 19 Điều khiển phân cấp • Điều khiển DataBound phân cấp được sử dụng để hiển thị các phần tử dữ liệu lồng nhau, như – Hiển thị thư mục và cấu trúc Website – Nội dung của tập tin XML • Điều khiển phân cấp gồm các điều khiển: – Menu: Hiển thị các phần tử dữ liệu trong một menu tĩnh hoặc động – TreeView: Hiển thị các phần tử dữ liệu trong cấu trúc cây 20 Điều khiển dạng bảng • Là các điều khiển được sử dụng để hiển thị và sửa đổi dữ liệu được lấy từ cơ sở dữ liệu hay các nguồn dữ liệu khác • Được chia thành hai nhóm chức năng: – Hiển thị nhiều phần tử dữ liệu: • GridView • DataList • Repeater – Hiển thị một phần tử dữ liệu ở mỗi thời điểm • DetailsView • FormView 11 21 4. Điều khiển DataSource • Một điều khiển DataBound (GridView, DataList, BulletedList, ListBox, CheckBoxList, ) được gắn với một điều khiển DataSource. • Có năm loại điều khiển DataSource – SqlDataSource – AccessDataSource – SiteMapDataSource – XMLDatasource – ObjectDataSoure 22 Điều Khiển SqlDataSource (tt) • Điều khiển SqlDataSource cho phép chúng ta kết nối thao tác nhanh chóng và dễ dàng để hiển thị các loại cơ sở dữ liệu như SQL Server, Oracle Server, ODBC, OLE DB, trong trang Web • Điều khiển SqlDataSource dùng để kết nối và có thể thực thi các lệnh trên cơ sở dữ liệu SQL 12 23 Điều Khiển SqlDataSource (tt) • Điều khiển SqlDataSource sử dụng các đối tượng ADO.NET như DataSet, DataReader và Command, cho phép sử dụng các đối tượng ADO.NET qua thao tác trực quan không phải lập trình • Được sử dụng kết hợp với các điều khiển GridView, FormView để hiển thị và cập nhật dữ liệu, thực thi các lệnh tác động đến cơ sở dữ liệu trong lập trình 24 Kết nối database • Kéo biểu tượng SQLDataSource từ cửa sổ Toolbox lên WebForm 13 25 Kết nối database (tt) • Kết nối mặc định là Microsoft SQLServer, ta có thể chọn một data source khác bằng cách click vào nút Change.. 26 Kết nối với SQL Server 14 27 Kết nối với local database • Chọn một loại data source (Access file, SQL Server file,. 28 Kết nối với local database (tt) • Click nút Browse để chọn file database. • Chọn Test Connection để kiểm tra kết nối • Chọn OK 15 29 Chuỗi kết nối • Chuỗi kết nối SQLServer database file: – "Data Source=.\SQLEXPRESS; AttachDbFilename=|DataDirectory| MyDatabase.mdf;Integrated Security=SSPI; User Instance=True” • Chuỗi kết nối Access database file – "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= |DataDirectory|\NewsDb.mdb; Persist Security Info=True“ providerName="System.Data.OleDb" 30 Chuỗi kết nối (tt) • Chuỗi kết nối với CSDL trên server : – "Data Source=.\SQLExpress; Initial Catalog = MyDatabase; Integrated Security = True” Hoặc "Server=.\SQLExpress; Database=MyDatabase; Integrated Security = True" – Trong đó, Initial Catalog là tên cơ sở dữ liệu muốn kết nối 16 31 Kết Nối Với Cơ Sở Dữ Liệu Khác • Có thể kết nối với cơ sở dữ liệu khác như Microsoft Access bằng điều khiển SqlDataSource • Khi kết nối với bất kỳ cơ sở dữ liệu nào khác với SQL Server, ta cần sửa lại thuộc tính ProviderName của điều khiển SqlDataSource. – Ví dụ: ProviderName="System.Data.OleDb" 32 Chứa chuỗi kết nối trong tập tin Web.Config • Không nên chứa chuỗi kết nối trong trang Web mà phải chứa trong tập tin riêng vì: – Không an toàn – Khó quản lý, khó sửa đổi. Vì nếu cần sửa đổi phải sửa đổi tất cả các trang trong Website • Vì các lý do trên, chúng ta phải đặt chuỗi kết nối trong tập tin Web.Config. 17 33 Chứa chuỗi kết nối trong tập tin Web.Config (tt) • Chúng ta có thể thêm nhiều chuỗi kết nối vào tag connectionStrings trong trang Web.config: 34 Chứa chuỗi kết nối trong tập tin Web.Config (tt) • Ngoài việc thêm chuỗi kết nối vào tập tin Web.Config của ứng dụng, chúng ta có thể thêm chuỗi này vào tập tin Web.Config gốc để có thể sử dụng trong tất cả ứng dụng chạy trên server của chúng ta. Tập tin Web.Config gốc được đặt tại: C:\WINDOWS\Microsoft.NET\Framework\[v ersion]\CONFIG 18 35 Sử dụngđiều khiển SqlDataSource 36 Sử dụngđiều khiển SqlDataSource(tt) • Mã lệnh trên trang giao diện 19 37 Sử dụngđiều khiển SqlDataSource(tt) • Có thể sử dụng SqlDataSource và tham số 38 Sử dụngđiều khiển SqlDataSource(tt) • Có thể sử dụng SqlDataSource và Request.Form 20 39 Sử dụngđiều khiển SqlDataSource(tt) • Ngoài ra có thể sử dụng SqlDataSource với các đối tượng sau: – Session – Server Control (DropDownList,ListBox, – HttpCookie – Proceduce • Cập nhật dữ liệu cho tham số: SqlDataSource1.SelectParameters[“ProductName”] . DefaultValue = newvalue; 11 Điều khiển danh sách và phân cấp Lập trình Web – Chương 5 2 Mục tiêu nSau khi học xong chương này, sinh viên có thể n Hiểu ý nghĩa và vai trò của các điều khiển danh sách và phân cấp. n Chọn được loại danh sách thích hợp trong thiết kế giao diện web site n Biết sử dụng được các điều khiển dùng để hiển thị dữ liệu ở dạng danh sách. n Biết sử dụng được các điều khiển dùng để hiển thị dữ liệu ở dạng menu và cây 2Nội dung nBài 1: Điều khiển danh sách nBài 2: Điều khiển phân cấp 3 4 Bài 1: Điều khiển danh sách n Giới thiệu n Khai báo các phần tử. n Kết nối dữ liệu nguồn. n Xác định phần tử được chọn. n Thêm phần tử vào danh sách. n Xóa phần tử từ danh sách n Thuộc tính AutoPostBack. n Các điều khiển danh sách 35 Giới thiệu 6 Giới thiệu 47 Khai báo các phần tử nCác điều khiển danh sách hiển thị một danh sách các phần tử. nMỗi phần tử trong danh sách là một đối tượng của lớp ListItem. nCó thể khai báo các phần tử trong giao diện 8 Khai báo các phần tử (tt) 59 Khai báo các phần tử (tt) 10 Khai báo các phần tử (tt) nMỗi phần tử ListItem có các thuộc tính: n Text: chuỗi hiển thị của phần tử trong danh sách n Value: giá trị truy xuất phần tử, thường chứa giá trị khóa của bảng dữ liệu n Selected: cho biết trạng thái của phần tử (chọn hay không chọn) n CheckBoxList, RadioButtonList: dấu check n ListBox: phần tử được tô đậm n ComboBox: phần tử hiển thị n BulletedList: không sử dụng 611 Khai báo các phần tử (tt) nCó thể khai báo các phần tử bằng code 12 Kết nối dữ liệu nguồn nCó hai cách kết nối điều khiển danh sách với dữ liệu n Khai báo trên giao diện 713 Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt) 14 Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt) 815 Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt) 16 Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt) 917 Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt) 18 Kết nối dữ liệu nguồn n Kết nối dữ liệu bằng code (VD: Ex606d) 10 19 Kết nối dữ liệu nguồn n Kết nối dữ liệu bằng code (tt) 20 Xác định phần tử được chọn nXác định phần tử được chọn trong danh sách thông qua các thuộc tính: n SelectedIndex: vị trí phần tử đang được chọn n SelectedItem: phần tử đang được chọn (ListItem) n SelectedValue: truy xuất trường Value của phần tử đang được chọn n Ví dụ: n Label1.Text = ListBox1.SelectedItem.Text; n int index = ListBox1.SelectedIndex; n string id = ListBox1.SelectedValue.ToString(); 11 21 Thêm phần tử vào danh sách nSử dụng các phương thức Add, Insert của danh sách Items n Add: thêm phần tử vào cuối danh sách n Insert: thêm phần tử vào danh sách tại vị trí chỉ định n Ví dụ (Ex617.aspx): n ListBox1.Items.Add(TextBox1.Text); n ListBox1.Items.Insert ( ListBox1.Items.Count, TextBox1.Text); Xóa phần tử từ danh sách nSử dụng các phương thức Remove, RemoveAt của danh sách Items n Remove: xóa phần tử (ListItem) n RemoveAt: xóa phần tử theo vị trí n Ví dụ: ListBox1.Items.RemoveAt (ListBox1.SelectedIndex); ListBox1.Items.Remove( ListBox1.SelectedItem); 22 12 23 Sử dụng thuộc tính AutoPostBack nMặc định, đối với các điều khiển danh sách, thuộc tính AutoPostBack = False. nDo đó, khi tthay đổi lựa chọn các phần tử trong danh sách, dữ liệu của trang không được postback về server nMuốn việc thay đổi lựa chọn được xử lý ngay tức thời, thiết lập giá trị thuộc tính AutoPostBack = True n Lưu ý: chỉ nên gán AutoPostBack = True khi thật sự cần thiết. (VD: Ex619.aspx) 24 Các điều khiển danh sách nĐiều khiển DropDownList. nĐiều khiển RadioButtonList. nĐiều khiển ListBox. nĐiều khiển CheckBoxList. nĐiều khiển BulletedList 13 25 Điều khiển DropDownList nHiển thị một danh sách các lựa chọn với yêu cầu không gian màn hình tối thiểu. nChỉ cho phép hiển thị một phần tử duy nhất, các phần tử còn lại chỉ hiển thị khi click vào DropDownList nTại mỗi thời điểm, chỉ có thể chọn một trong các phần tử của danh sách. 26 Điều khiển ListBox nTương tự như điều khiển DropDownList nĐiểm khác nhau giữa ListBox và DropDownList: n ListBox hiển thị tất cả phần tử . n ListBox cho phép người sử dụng chọn nhiều phần tử cùng một lúc (Ex618.aspx) 14 27 Điều khiển CheckBoxList nHiển thị danh sách các check box nCác phần tử có thể được bố trí theo hướng ngang hay dọc nCho phép chọn nhiều phần tử 28 Điều khiển CheckBoxList (tt) nMột số thuộc tính n RepeatColumns: số cột n RepeatDirection: Hướng trình bày dữ liệu n RepeatLayout: trình bày dữ liệu dạng bảng (table) hoặc tuần tự (flow) n DataTextField: trường dữ liệu hiển thị n DataValueField: trường giá trị ẩn, truy xuất thông qua thuộc tính SelectedValue 15 29 Điều khiển RadioButtonList nHiển thị danh sách các RadioButton nChỉ cho phép chọn một phần tử tại mỗi thời điểm nCác thao tác với điều khiển này tương đương với điều khiển CheckBoxList 30 Điều Khiển BulletedList nHiển thị danh sách kiểu liệt kê nMỗi phần tử có thể hiển thị ở dạng văn bản, LinkButton hoặc HyperLink nĐiều khiển BulletedList không hỗ trợ các thuộc tính SelectedIndex, SelectedItem và SelectedValue 16 31 Điều Khiển BulletedList (tt) nMột số thuộc tính n BulletStyle: Kiểu của các kí hiệu n DisplayMode n Text n HyperLink n LinkButton 32 Bài 2. Điều khiển phân cấp nGiới thiệu nMenu nTreeView 17 33 Giới thiệu nĐiều khiển DataBound phân cấp được sử dụng để hiển thị các phần tử dữ liệu theo dạng phân cấp nHai điều khiển thường được sử dụng nMenu: Hiển thị các phần tử dữ liệu trong một menu tĩnh hoặc động nTreeView: Hiển thị các phần tử dữ liệu trong cấu trúc cây nCác điều khiển trên có thể dùng để liên kết đến địa chỉ một trang Web 34 Giới thiệu 18 35 Điều khiển menu nMỗi điều khiển menu bao gồm nhiều menu item nMỗi menu item bao gồm các menu item khác theo dạng phân cấp 36 Điều khiển menu 19 37 Tạo phần tử cho menu 38 Tạo phần tử cho menu (tt) nMenu item: gồm các thuộc tính n ImageUrl: ảnh hiển thị trên phần tử n NavigateUrl: địa chỉ URL trang liên kết đến n Text: chuỗi hiển thị trên phần tử n Value: trường giá trị n Selected: trạng thái chọn/ không chọn n Tooltip nBiến cố mặc định: MenuItemClick n Ví dụ: EX803.aspx 20 39 Tạo phần tử cho menu (tt) 40 Tạo phần tử cho menu (tt) 21 41 Menu và MultiView nCó thể sử dụng điều khiển Menu kết hợp với điều khiển MultiView để tạo thành các TabPage n Điều khiển Menu hiển thị các tab n Điều khiển MultiView hiển thị nội dung trên mỗi tab n Ví dụ: ex803b.aspx 42 Menu và MultiView (tt) 22 43 Menu và MultiView (tt) 44 Menu và MultiView (tt) 23 45 Liên kết Menu với XML nĐiều khiển Menu có thể liên kết với tập tin XML để hiển thị dữ liệu trong tập tin bằng cách sử dụng điều khiển XmlDataSource nVí dụ: ex804.aspx 46 Liên kết Menu với XML (tt) 24 47 Liên kết Menu với CSDL nKhông thể kết nối trực tiếp điều khiển Menu với SqlDataSource hoặc ObjectDataSource nChủ yếu sử dụng code nVí dụ: MenuRuntimeDemo.aspx 48 Liên kết Menu với CSDL (tt) 25 49 Liên kết Menu với CSDL (tt) 50 Định dạng Menu nThông qua các thuộc tính: n Orientation n StaticHoverStyle n StaticMenuItemStyle n StaticSelectedStyle nCó thể sử dụng chức năng AutoFormat 26 51 Điều khiển TreeView nĐiều khiển TreeView tương tự như điều khiển Menu. nCho phép hiển thị dữ liệu phân cấp nĐiểm khác nhau cơ bản của hai điều khiển này là cách hiển thị nMỗi phần tử của điều khiển TreeView là một đối tượng TreeNode (Ex805.aspx) 52 Thêm nút vào TreeView nSử dụng cửa sổ TreeViewNode Editor 27 53 Thêm nút vào TreeView (tt) 54 Thêm nút vào TreeView (tt) 28 55 Hiển thị CheckBox nThiết lập giá trị cho thuộc tính ShowCheckBoxes. nAll nLeaf nNone nParent nRoot 56 Liên kết TreeView với XML nTương tự Menu, liên kết TreeView trực tiếp với XmlDataSource (Ex808.aspx) 29 57 Liên kết với CSDL – Định dạng n Liên kết với CSDL: Tương tự như menu nĐịnh dạng TreeView: thông qua các thuộc tính n ExpandDepth n ToolTip n HoverNodeStyle n LeafNodeStyle n NodeStyle n ParentNodeStyle n RootNodeStyle n SelectedNodeStyle 58 11/1/2012 1 Chương 6 ĐIỀU KHIỂN DẠNG BẢNG 1 Mục tiêu — Hiểu ý nghĩa và vai trò của các điều khiển dạng bảng. — Hiểu ý nghĩa của Template và biểu thức DataBinding. — Sử dụng được các điều khiển dùng để hiển thị một tập mẫu tin ở dạng bảng. — Sử dụng được các điều khiển dùng để hiển thị chỉ một mẫu tin ở dạng bảng. 2 11/1/2012 2 Nội dung — Giới thiệu — Điều khiển GridView — Điều khiển DataList — Điều khiển Repeater — Điều khiển DetailView — Điều khiển FormView 3 1. Giới thiệu — Các điều khiển DataBound dạng bảng là các điều khiển thường được sử dụng để thao tác với cơ sở dữ liệu như hiển thị và sửa đổi dữ liệu lấy từ cơ sở dữ liệu hay các nguồn dữ liệu khác — Có năm điều khiển dạng bảng, được chia thành hai loại khác nhau: ◦ Hiển thị nhiều phần tử dữ liệu ◦ Hiển thị một phần tử dữ liệu ở mỗi thời điểm 4 11/1/2012 3 1. Giới thiệu — Điều khiển hiển thị một tập các phần tử dữ liệu ◦ GridView ◦ DataList ◦ Repeater — Điều khiển hiển thị một phần tử dữ liệu trong mỗi thời điểm : ◦ DetailsView ◦ FormView 5 1. Giới thiệu 6 11/1/2012 4 2. GridView — Sử dụng cửa sổ GridView Tasks — Hiển thị dữ liệu. — Chọn dữ liệu. — Sắp xếp dữ liệu. — Phân trang dữ liệu. — Cập nhật và xóa dữ liệu. — Định dạng GridView. — Sử dụng các trường 7 Sử Dụng Cửa Sổ GridView Tasks — Cửa sổ GridView Tasks cho phép thiết lập hầu hết các thao tác trên điều khiển GridView. ◦ Chọn nguồn dữ liệu ◦ Định dạng ◦ Chỉnh sửa các cột — Để sử dụng cửa sổ GridView Tasks, click vào mũi tên nhỏ phía trên phải của điều khiển GridView (hoặc click phải vào GridView và chọn Show Smart Tag) 8 11/1/2012 5 Sử Dụng Cửa Sổ GridView Tasks 9 Hiển thị dữ liệu — Điều khiển GridView hiển thị các phần tử dữ liệu trong một bảng. Mỗi phần tử dữ liệu tương ứng với một hàng — Để hiển thị dữ liệu, chỉ cần gán nguồn dữ liệu cho GridView bằng khai báo hoặc bằng code ◦ Khai báo: gán vào thuộc tính DataSourceId là một Object DataSource (SqlDataSource, AccessDataSource,) ◦ Bằng code: Gán vào thuộc tính DataSource một nguồn dữ liệu (DataTable, SqlDataSource, ), sau đó gọi phương thức DataBind 10 11/1/2012 6 Hiển thị dữ liệu (tt) 11 Chọn dữ liệu — Có thể xác định hàng nào được chọn trong GridView bằng cách sử dụng bất kỳ thuộc tính nào sau đây: ◦ SelectedValue: truy xuất trường giá trị ◦ SelectedDataKey: truy xuất trường khóa ◦ SelectedIndex: truy xuất vị trí phần tử ◦ SelectedRow: truy xuất dòng được chọn 12 11/1/2012 7 Chọn Dữ Liệu (tt) — Ví dụ (Ex704.aspx): ◦ Trang Web chứa hai điều khiển GridView. ◦ Điều khiển GridView thứ nhất hiển thị danh sách các loại phim. ◦ Khi chúng ta chọn một loại phim, điều khiển GridView thứ hai hiển thị danh sách của các tựa phim thuộc loại đã chọn được tìm thấy 13 Chọn Dữ Liệu (tt) 14 11/1/2012 8 Chọn Dữ Liệu (tt) 15 Sử Dụng Khóa — Chúng ta kết hợp một khóa với mỗi hàng trong GridView bằng cách cung cấp các giá trị phân biệt tương ứng với các hàng đó cho thuộc tính DataKeyNames của điều khiển GridView. — Các giá trị có thể là các trị của một hay nhiều trường (các tên trường phải được phân cách bằng dấu phẩy) nào đó được sử dụng làm khóa chính trong cơ sở dữ liệu. 16 11/1/2012 9 Sử Dụng Khóa (tt) — Ví dụ (Ex705.aspx): bảng Employees của cơ sở dữ liệu EmployeesDB.mdf sử dụng hai trường FirstName và LastName làm khóa chính. — Trong trang Web, khi chọn một người thì thông tin chi tiết về người đó sẽ được hiển thị. 17 Sử Dụng Khóa (tt) 18 11/1/2012 10 Sử Dụng Khóa (tt) 19 Sắp xếp dữ liệu — Thiết lập thuộc tính AllowSorting = true. — Khi đó, các tiêu đề cột hiển thị dạng liên kết. — Click vào tiêu đề của một cột, các hàng trong GridView sẽ được sắp thứ tự tăng dần theo cột đã chọn — Ví dụ (Ex706.aspx) 20 11/1/2012 11 Sắp Xếp dữ liệu với AJAX — Mặc định, khi chúng ta click vào tiêu đề cột để sắp thứ tự, trang Web chứa GridView được gởi đến server. — Để tránh gởi toàn bộ trang Web, chúng ta có thể sử dụng ưu điềm của AJAX (Asynchronous JavaScript and XML) để sắp xếp bằng cách thiết lập thuộc tính EnableSortingAndPagingCallbacks = True. — (VD Ex707.aspx) 21 Sắp xếp dữ liệu sử dụng code — Sử dụng phương thức Sort() của điều khiển GridView — Ví dụ (Ex708.aspx) grdMovies.Sort( ddlSort.Text,SortDirection.Ascending); 22 11/1/2012 12 Phân trang dữ liệu — Khi làm việc với cơ sở dữ liệu có số lượng mẫu tin lớn, cần phải hiển thị các mẫu tin trong nhiều trang khác nhau. — Để phân trang các mẫu tin cần hiển thi trong điều khiển GridView, thiết lập thuộc tính AllowPaging = True Vd: Ex709.aspx) 23 Phân trang với AJAX — Ý nghĩa của việc phân trang với AJAX cũng tương tự như sắp xếp với AJAX. — Chúng ta thiết lập thuộc tính EnableSortingAndPagingCallbacks của GridView là true (Vd: Ex710.aspx) 24 11/1/2012 13 Cập nhật và xóa dữ liệu — Điều khiển GridView cũng cho phép sửa đổi dữ liệu trong cơ sở dữ liệu mà không cần viết mã lệnh (Vd: Ex711.aspx) — Các lệnh UpdateCommand và DeleteCommand của SQL có chứa các tham số. Ví dụ, lệnh UpdateCommand có dạng: ◦ UPDATE Movies SET Title=@Title, Director=@Director WHERE Id=@Id 25 Cập nhật và xóa dữ liệu (tt) 26 11/1/2012 14 Định dạng GridView — Sử dụng chức năng AutoFormat — Thiết lập các thuộc tính: ◦ HeaderStyle ◦ FooterStyle ◦ RowStyle ◦ SelectedRowStyle ◦ EditRowStyle ◦ 27 Tùy biến các cột trong GridView — Trong cửa sổ GridView Tasks, chọn Edit Column ◦ BoundField: các trường trong bảng dữ liệu ◦ CheckBoxField: hiển thị dạng checkbox ◦ HyperLinkField: hiển thị dạng liên kết ◦ ImageField: hiển thị dạng hình ảnh ◦ CommandField: các nút chức năng: Select, Delete, Edit 28 11/1/2012 15 Điều Khiển DataList — Cũng như điều khiển GridView, điều khiển DataList được sử dụng để hiển thị một tập dữ liệu ở một thời điểm. — Được sử dụng để hiển thị các mẫu tin trong bảng cơ sở dữ liệu. 29 Hiển thị dữ liệu — Để hiển thị dữ liệu bằng điều khiển DataList, chúng ta phải cung cấp cho điều khiển này thành phần ItemTemplate. — Nội dung của ItemTemplate sẽ được hiển thị cho mỗi phần tử của dữ liệu nguồn 30 11/1/2012 16 Hiển thị dữ liệu (tt) — Điều khiển DataList hỗ trợ một tập các template sau: ◦ ItemTemplate ◦ AlternatingItemTemplate ◦ SeparatorTemplate ◦ HeaderTemplate ◦ FooterTemplate 31 Hiển thị dữ liệu (tt) — Ngoài ra, điều khiển DataList cũng hỗ trợ hai template sau: ◦ EditItemTemplate ◦ SelectedItemTemplate — Click vào mũi tên nhỏ phía trên phải của điều khiển DataList, xuất hiện cửa sổ DataList Tasks 32 11/1/2012 17 Hiển thị dữ liệu (tt) — Vd: Ex712.aspx 33 Hiển thị dữ liệu (tt) — Ghi chú: ◦ Biểu thức liên kết dữ liệu được chứa trong dấu phân cách ◦ Phương thức Eval() hay Bind(). – Phương thức Eval() nhận một đối số là tên một trường và trả về chuỗi chứa giá trị của trường đó trong mẫu tin hiện hành từ bảng cơ sở dữ liệu. – Chúng ta có thể cung cấp đối số tùy chọn thứ hai để định dạng chuỗi trả về. 34 11/1/2012 18 Hiển thị dữ liệu (tt) — Các kiểu định dạng ◦ General – {0} ◦ Number – {0:N} ◦ Decimal – {0:D} ◦ Fixed-point – {0:F} ◦ Currency – {0:C} ◦ Scientific - {0:E} ◦ Hexadecimal – {0:X} Ví dụ: sẽ hiển thị giá trị của trường BoxOfficeTotals trong mẫu tin hiện hành ở dạng Currency 35 Hiển thị dữ liệu (tt) — Truyền query string trong phần tử ItemTemplate <a href='<%# “nextpage.aspx? id=“ + Eval("NewsID")) %>’ > click here go to next page 36 11/1/2012 19 Hiển Thị Header Và Footer — HeaderTemplate và FooterTemplate trong điều khiển DataList dùng để hiển thị tiêu đề đầu và cuối của bảng các phần tử dữ liệu. — Vd Ex713.aspx: HeaderTemplate chứa tiêu đề của bảng và FooterTemplate chứa một điều khiển Label để hiển thị tổng giá trị của các hàng trước đó. 37 Hiển Thị Header Và Footer (tt) 38 11/1/2012 20 Hiển thị dữ liệu trong nhiều cột — Có thể hiển thị nội dung của điều khiển DataList thành một bảng có nhiều cột, trong đó mỗi phần tử dữ liệu được chứa trong một ô. — Có hai thuộc tính của DataList được sử dụng để bố trí cách hiển thị này: ◦ RepeatColumns ◦ RepeatDirection — Vd: Ex714.aspx 39 Hiển thị dữ liệu trong nhiều cột 40 11/1/2012 21 Chọn dữ liệu — Sử dụng thuộc tính SelectedValue ◦ VD: DataListDemo.aspx 41 Chọn dữ liệu (tt) 42 11/1/2012 22 Cập nhật và xóa dữ liệu — Có thể sử dụng DataList để thay đổi dữ liệu trong database. — Tuy nhiên, với DataList, việc chỉnh sửa dữ liệu yêu cầu phải viết code trong các sự kiện ◦ UpdateCommand ◦ EditCommand ◦ DeleteCommand ◦ CancelCommand – VD: DataListEditData.aspx 43 Cập nhật và xóa dữ liệu (tt) 44 11/1/2012 23 Cập nhật và xóa dữ liệu (tt) 45 Cập nhật và xóa dữ liệu (tt) 46 11/1/2012 24 Cập nhật và xóa dữ liệu (tt) 47 Định dạng DataList — Một số thuộc tính dùng để định dạng sự hiển thị của điều khiển DataList: ◦ CssClass ◦ AlternatingItemStyle ◦ EditItemStyle ◦ HeaderStyle ◦ FooterStyle ◦ ItemStyle ◦ SelectedItemStyle ◦ SeparatorStyle 48 11/1/2012 25 Điều khiển Repeater — Điều khiển Repeater cho phép hiển thị một danh sách dữ liệu tùy thích. — Điều khiển này không có sẵn định dạng mặc định để hiển thị mà ta phải cung cấp định dạng hiển thị cho Repeater bằng cách tạo ra các template. — Có thể tạo nhiều dạng hiển thị dữ liệu khác nhau như: Dạng bảng, dạng danh sách được phân cách bằng dấu phẩy (a, b, c, d, ) và dạng danh sách kiểu XML, 49 Hiển thị dữ liệu — Để hiển thị dữ liệu với điều khiển Repeater, chúng ta phải tạo ItemTemplate bằng chế độ Source view 50 11/1/2012 26 Sử dụng Template — Điều khiển Repeater hỗ trợ năm loại template khác nhau: ◦ ItemTemplate: template cho mỗi phần tử ◦ AlternatingItemTemplate: template cho tất cả các phần tử ◦ SeparatorTemplate: template giữa hai phần tử ◦ HeaderTemplate ◦ FooterTemplate VD: ex716.aspx 51 Điều khiển DetailView — Điều khiển DetailsView và FormView cho phép hiển thị và thao tác với chỉ một phần tử dữ liệu ở mỗi thời điểm. — Hai điều khiển này dùng để hiển thị, phân trang, sửa, chèn/thêm và xóa dữ liệu — Sự khác nhau giữa hai điều khiển này là: ◦ DetailsView: hiển thị một mẫu tin theo dạng bảng. ◦ FormView: sử dụng template để tạo giao diện người dùng tùy ý — Điều khiển DetailsView thường được dùng chung với GridView để sửa đổi dữ liệu 52 11/1/2012 27 Hiển thị dữ liệu — Điều khiển DetailsView hiển thị mẫu tin trong một bảng. — Điều khiển này hỗ trợ cả hai dạng liên kết dữ liệu bằng khai báo và bằng lập trình 53 Sử dụng các trường — Được dùng để tùy biến các trường hiển thị trong DetailsView — Điều khiển DetailsView hỗ trợ một tập các trường tương tự GridView ◦ BoundField ◦ CheckBoxField ◦ CommandField ◦ ButtonField ◦ HyperLinkField ◦ ImageField ◦ TemplateField 54 11/1/2012 28 Sử dụng các trường (tt) — Tùy biến các trường: 55 Phân trang dữ liệu — Thiết lập thuộc tính AllowPaging = true — Phân trang với Ajax: tương tự GridView: — Có thể hiệu chỉnh giao diện phân trang với thuộc tính PagerSettings 56 11/1/2012 29 Phân trang dữ liệu (tt) 57 Cập nhật dữ liệu — Thiết lập thuộc tính AutoGenerateEditButton = True 58 11/1/2012 30 Thêm, xóa dữ liệu — Thêm dữ liệu: thiết lập thuộc tính AutoGenerateInsertButton= True — Xóa dữ liệu: thiết lập thuộc tính AutoGenerateDeleteButton = True 59 Định dạng DetailsView — Một số thuộc tính ◦ CssClass ◦ AlternatingRowStyle ◦ CommandRowStyle ◦ HeaderStyle ◦ FooterStyle ◦ PagerStyle ◦ RowStyle ◦ EditRowStyle ◦ InsertRowStyle ◦ GridLines ◦ HeaderText ◦ FooterText 60 11/1/2012 31 Điều khiển FormView — Tương tự DetailsView, nhưng hiển thị các phần tử dữ liệu thông qua Template — Điều khiển FormView được dùng để hiển thị, phân trang, sửa, chèn và xóa các mẫu tin trong cơ sở dữ liệu — Điều khiển FormView còn cho phép thêm các điều khiển kiểm chứng dữ liệu — Hiển thị dữ liệu: Thiết kế các thành phần trong ItemTemplate (tương tự DataList) 61 Phân trang dữ liệu — Thiết lập thuộc tính AllowPaging =True — Thay đổi các tùy chọn trong thuộc tính PagerSettings 62 11/1/2012 32 Phân trang dữ liệu (tt) — Có thể sử dụng PagerTemplate để tùy biến giao diện phân trang 63 Phân trang dữ liệu (tt) Thuộc tính CommandArgument có thể có các giá trị: ◦ First ◦ Last ◦ Prev ◦ Next 64 11/1/2012 33 Cập nhật, thêm và xóa dữ liệu — Chọn Generate INSERT, UPDATE, DELETE cho SQLDataSource làm dữ liệu nguồn của FormView 65 22.11.2012 1 Truy cập cơ sở dữ liệu bằng chương trình Chương 7 1 Mục tiêu — Sau khi học xong chương này, sinh viên có thể: ◦ Hiểu được mô hình truy cập CSDL của ADO.NET gồm các đối tượng Connection, Command, DataReader, DataAdapter, DataTable, DataView và DataSet. ◦ Biết sử dụng các mô hình của ADO.NET để truy cập và thao tác với cơ sở dữ liệu SQL Server và Microsoft Access bằng mã lệnh 2 22.11.2012 2 Nội dung — Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu ◦ Đối tượng Connection. ◦ Đối tượng Command ◦ Đối tượng DataReader — Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu ◦ Đối tượng DataAdapter ◦ Đối tượng DataTable ◦ Đối tượng DataView ◦ Đối tượng DataSet 3 Bài 1. Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu — Giới thiệu — Đối tượng Connection. — Đối tượng Command — Đối tượng DataReader — Sử dụng mô hình kết nối để thực hiện các thao tác với cơ sở dữ liệu 4 22.11.2012 3 Giới thiệu — ADO.NET cho phép làm việc ở cả hai chế độ: ◦ Chế độ kết nối (Connected) ◦ Chế độ phi kết nối (Disconnected) Thực hiện nhiệm vụ kết nối đến CSDL Thực hiện các câu lệnh SQL thao tác với CSDL Đón nhận kết quả trả về từ đối tượng Command Cầu nối giữa nguồn dữ liệu và các bảng được cached trong bộ nhớ Kho chứa các bảng 5 Đối tượng Connection — Là đối tượng có nhiệm vụ thực hiện nhiệm vụ kết nối đến CSDL để các đối tượng như Command thao tác với CSDL thông qua kết nối này Application Database Connection 6 22.11.2012 4 Đối tượng Connection (tt) — Thuộc tính: ◦ ConnectionString: chuỗi kết nối đến database ◦ State: trạng thái kết nối, thường được sử dụng để kiểm tra kết nối thành công hay không. VD: if (con.State.ToString() =="Open" ) — Phương thức: ◦ Open: mở kết nối ◦ Close: đóng kết nối 7 Đối tượng Connection (tt) — Đối tượng Connection kết nối với CSDL SqlServer: SqlDataConnection (khai báo namespace System.Data.SqlClient) — Đối tượng Connection kết nối với CSDL Access: OleDataConnection (khai báo namespace System.Data.OleDb) — Khi tạo một đối tượng Connection, chúng ta phải truyền chuỗi kết nối đến phương thức tạo dựng, hoặc gán chuỗi kết nối vào thuộc tính ConnectionString của đối tượng 8 22.11.2012 5 Đối tượng Connection (tt) — Tạo đối tượng Connection 9 Đối tượng Connection (tt) — Có thể truy xuất chuỗi kết nối lưu trong trang Web.config thông qua đối tượng WebConfigurationManager (Khai báo namespace System.Web.Configuration) 10 22.11.2012 6 Đối tượng Connection (tt) — Chuỗi kết nối trong Web.config 11 Đối tượng Connection (tt) — Sử dụng đối tượng Connection: ◦ Trước khi thực thi bất kỳ lệnh nào đối với dữ liệu, trước hết chúng ta phải mở kết nối. ◦ Sau khi thực thi lệnh xong, chúng ta phải đóng kết nối. ◦ Ngoài ra, cần sử dụng các cơ chế xử lý ngoại lệ nếu có lỗi xảy ra – trycatchfinaly – Lệnh using: buộc kế nối phải đóng ngay cả khi có biệt lệ xảy ra 12 22.11.2012 7 Đối tượng Connection (tt) 13 Đối tượng Connection (tt) — Các bước thực hiện: ◦ Tạo một Connection. ◦ Mở connection. ◦ Truyền connection cho các đối tượng ADO.NET khác. ◦ Thực hiện các thao tác database với các đối tượng ADO.NET này. ◦ Đóng connection. 14 22.11.2012 8 Đối tượng Connection (tt) — Các bước thực hiện: 15 Đối tượng Command — Dùng để thực hiện các câu lệnh SQL thao tác với CSDL như: Select, Insert, Update, Delete. Application Connection Database Command 16 22.11.2012 9 Đối tượng Command (tt) — Thuộc tính: • Connection: kết nối để thực hiện lệnh • CommandText: câu lệnh cần thực hiện • CommandType: loại câu lệnh (Text, TableDirect, StoredProcedure) • Phương thức: • ExecuteScalar(): thực hiện câu lệnh và trả về giá trị đơn • ExecuteNonQuery(): gọi các lệnh SQL, store, trả về số record bị tác động (Insert, Update, Delete) • ExecuteReader(): thực hiện câu lệnh trả về đối tượng DataReader 17 Đối tượng Command (tt) — Đối tượng Command dùng trong CSDL SqlServer: SqlCommand — Đối tượng Command dùng trong CSDL Access: OleDbCommand — Tạo đối tượng Command ◦ Sử dụng phương thức tạo dựng ◦ Sử dụng phương thức CreateCommand của đối tượng Connection 18 22.11.2012 10 Đối tượng Command (tt) — Tạo đối tượng Command (tt) 19 Đối tượng Command (tt) — Tạo đối tượng Command (tt) ◦ Có thể thiết lập các thuộc tính cho đối tượng Command sau khi tạo: 20 22.11.2012 11 Đối tượng Command (tt) — Phương thức ExecuteReader: ◦ Phương thức này trả về một tập các bản ghi, thường được sử dụng để thực thi các câu lệnh truy vấn như Select. ◦ Kết quả có thể lưu trữ trong đối tượng DataReader 21 Đối tượng Command (tt) — Phương thức ExecuteScalar: ◦ Trả về một phần tử (cột đầu tiên hàng đầu tiên) trong bảng kết quả. ◦ Thường được sử dụng thực hiện câu lệnh truy vấn Select mà kết quả trả về chỉ có một hàng và một cột 22 22.11.2012 12 Đối tượng Command (tt) — Phương thức ExecuteNonQuery: ◦ Được sử dụng để thực thi các câu lệnh truy vấn hành động: Insert, Update, Delete 23 Đối tượng Command (tt) — Phương thức ExecuteNonQuery (tt): 24 22.11.2012 13 Đối tượng Command (tt) — Phương thức ExecuteNonQuery (tt): 25 Đối tượng Command (tt) — Thực thi lệnh với tham số: ◦ Câu lệnh truy vấn SQL có thể nhận giá trị thông qua các tham số tại thời điểm thực thi ◦ Cách sử dụng: – Tạo tham số trong câu lệnh SQL – Khai báo Parameter với những thông tin chính: – Tên tham số – Kiểu dữ liệu – Giá trị – Liên kết Parameter với Command ◦ 26 22.11.2012 14 Đối tượng Command (tt) — Thực thi lệnh với tham số (tt): ◦ 27 Đối tượng DataReader — Là đối tượng được sử dụng để nhận kết quả trả về từ đối tượng Command. — Thuộc tính • HasRow: cho biết đối tượng DataReader có chứa dữ liệu • Phương thức: • Read(): đọc một mẫu tin • Close(): đóng • NextResult(): chuyển đến bảng tiếp theo • Tham chiếu đến các cột trong DataReader: • Sử dụng chỉ số. (reader [0]) • Sử dụng trên trường dữ liệu. (reader[“FirstName”]) 28 22.11.2012 15 Đối tượng DataReader — Sử dụng DataReader 29 Đối tượng DataReader — Sử dụng DataReader nhận về nhiều tập giá trị 30 22.11.2012 16 Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu — Để thao tác với cơ sở dữ liệu trong mô hình kết nối chúng ta cần sử dụng đến các đối tượng: ◦ DataConnection: Dùng để mở kết nối đến cơ sở dữ liệu. ◦ DataCommand: Dùng để thực hiện các câu lệnh truy vấn SQL để lấy về dữ liệu (Select) hoặc cập nhật dữ liệu (Insert, Update, Delete). ◦ DataReader: Dùng để nhận và duyệt bảng kết quả từ đối tượng Command 31 Truy vấn lấy dữ liệu — B1. Tạo đối tượng DataConnection, và mở kết nối đến cơ sở dữ liệu. — B2. tạo đối tượng DataCommand gắn với đối tượng DataConnection, kết hợp câu lệnh truy vấn Select — B3. Khai báo biến đối tượng DataReader — B4. Thi hành phương thức ExcuteReader() của biến đối tượng DataCommand và gán cho biến đối tượng DataReader. — B5. Đọc và trình bày dữ liệu — B6. Đóng và giải phóng các biến đối tượng nếu không cần thiết. 32 22.11.2012 17 Truy vấn lấy dữ liệu 33 Truy vấn hành động trên CSDL — B1. Khai báo đối tượng DataConnection, và mở kết nối đến cơ sở dữ liệu. — B2. Tạo đối tượng DataCommand gắn với biến đối tượng DataConnection đã mở. — B3. Gán giá trị cho thuộc tính CommandType của biến đối tượng DataCommand — B4. Gán câu lệnh truy vấn (insert, update, delete, gọi store procedure) cho thuộc tính CommandText của biến đối tượng DataCommand — B5. Thi hành phương thức ExcuteNonquery() của biến đối tượng DataCommand — B6. Đóng và giải phóng các biến đối tượng nếu không cần thiết. 34 22.11.2012 18 Truy vấn hành động trên CSDL 35 Bài 2: Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu 36 22.11.2012 19 Giới thiệu — Cho phép thao tác với dữ liệu mà không cần duy trì kết nối — Ưu điểm của việc sử dụng nhóm đối tượng thuộc mô hình phi kết nối là chúng cung cấp nhiều chức năng hơn. ◦ Lọc và sắp xếp các hàng (DataView) ◦ Thay đổi nội dung các mẫu tin (DataTable) ◦ — Nhược điểm: tốc độ xử lý chậm. — Gồm bốn đối tượng: ◦ DataAdapter ◦ DataSet ◦ DataTable ◦ DataView 37 Đối tượng DataAdapter — Có chức năng như một cầu nối giữa nguồn dữ liệu và các bảng được cached trong bộ nhớ (đối tượng DataSet). — DataAdapter điền dữ liệu vào một DataSet hay DataTable từ một nguồn dữ liệu thông qua phương thức Fill(). — DataAdapter cập nhật dữ liệu ngược trở lại nguồn dữ liệu thông qua phương thức Update() 38 22.11.2012 20 Đối tượng DataAdapter (tt) — Tạo đối tượng DataAdapter ◦ Từ một đối tượng connection ◦ Từ một chuỗi kết nối 39 Đối tượng DataAdapter (tt) — Sử dụng DataAdapter để truy xuất dữ liệu từ cơ sở dữ liệu 40 22.11.2012 21 Đối tượng DataAdapter (tt) — Sử dụng DataAdapter để cập nhật dữ liệu ◦ Có thể sử dụng DataAdapter để cập nhật, chèn và xóa dữ liệu ◦ Sử dụng các thuộc tính InsertCommand, DeleteCommand và UpdateCommand của đối tượng DataAdapter để cập nhật cơ sở dữ liệu từ DataSet. ◦ Các thuộc tính trên được sinh tự động khi chúng ta tạo lớp DataSet trong môi trường Visual.Net (Strongly Typed Dataset và DataAdapter) 41 Đối tượng DataAdapter (tt) — Strongly Typed Dataset – DataAdapter: ◦ Click chuột phải trên project trong cửa sổ solution explorer, chọn “Add New Item”, chọn “DataSet”, nhập tên lớp dataset trong ô Name 42 22.11.2012 22 Đối tượng DataAdapter (tt) — Strongly Typed Dataset – DataAdapter: 43 Đối tượng DataAdapter (tt) — Strongly Typed Dataset – DataAdapter: ◦ Cửa sổ “Create TableAdapter” wizard xuất hiện (nếu cửa sổ này không tự động hiển thị, click chuột phải trên dataset, chọn “Add” èTable Adapter) 44 22.11.2012 23 Đối tượng DataAdapter (tt) — Strongly Typed Dataset – DataAdapter: ◦ Chọn chuỗi kết nối đến CSDL hoặc New Connection để tạo kết nối mới 45 Đối tượng DataAdapter (tt) — Strongly Typed Dataset – DataAdapter: ◦ Chọn kiểu truy vấn dữ liệu 46 22.11.2012 24 Đối tượng DataAdapter (tt) — Strongly Typed Dataset – DataAdapter: ◦ Click “Query Builder”, chọn các bảng dữ liệu cần truy vấn 47 Đối tượng DataAdapter (tt) — Strongly Typed Dataset – DataAdapter: ◦ Đặt tên phương thức trong ô Method name 48 22.11.2012 25 Đối tượng DataAdapter (tt) — Strongly Typed Dataset – DataAdapter: ◦ Sử dụng lớp Dataset: 49 Đối tượng DataAdapter (tt) — Thực thi truy vấn hành động bằng code ◦ Thiết lập thuộc tính SelectCommand, InsertCommand, DeleteCommand và UpdateCommand từ đối tượng SqlCommand. ◦ Có thể sử dụng đối tượng CommandBuilder để tạo các UpdateCommand, InsertCommand và DeleteCommand. ◦ Sử dụng phương thức Update() của đối tượng SqlDataAdapter có dạng: – int SqlDataAdapter.Update(DataTable) 50 22.11.2012 26 Đối tượng DataAdapter (tt) 51 Đối tượng DataAdapter (tt) 52 22.11.2012 27 Đối tượng DataAdapter (tt) 53 Đối tượng DataAdapter (tt) 54 22.11.2012 28 Đối tượng DataAdapter (tt) 55 Đối tượng DataAdapter (tt) 56 22.11.2012 29 Đối tượng DataAdapter (tt) 57 Đối tượng DataTable — Đối tượng DataTable tiêu biểu cho một bảng cơ sở dữ liệu trong bộ nhớ. — Thuộc tính: • TableName: tên của bảng dữ liệu • Columns: danh sách các cột • Rows: danh sách các mẫu tin • PrimaryKey: danh sách các cột là khóa chính • Phương thức: • NewRow(): tạo một mẫu tin mới 58 22.11.2012 30 Đối tượng DataTable (tt) — Các thành phần trong DataTable ◦ Mỗi phần tử hàng trong một DataTable là một DataRow ◦ Mỗi phần tử cột trong DataTable là một DataColumn — DataRow: ◦ Phương thức: – AcceptChanges(), RejectChanges(): xác nhận hay loại bỏ mọi sự thay đổi đến hàng trong bảng – Remove: đánh dấu hàng bị xóa nếu gọi AcceptChanges 59 Đối tượng DataTable (tt) — DataColumn: ◦ ColumnName: tên cột ◦ DataType: kiểu dữ liệu — Tạo và thêm dữ liệu vào DataTable: ◦ Tạo đối tượng DataTable ◦ Tạo đối tượng DataColumn, thiết lập các thuộc tính cho đối tượng ◦ Thêm các DataColumn vào tập Columns của đối tượng DataTable ◦ Tạo đối tượng DataRow, thiết lập giá trị cho các ô trong DataRow ◦ Thêm đối tượng DataRow vào tập Rows của đối tượng DataTable 60 22.11.2012 31 Đối tượng DataTable (tt) 61 Đối tượng DataTable (tt) — Có thể truy xuất các mẫu tin từ đối tượng DataTable bằng cách sử dụng phương thức Select() — Khi truy xuất một mảng các mẫu tin bằng phương thức Select(), có thể chỉ định thứ tự sắp xếp cho các mẫu tin (Ex909.aspx) 62 22.11.2012 32 Đối tượng DataTable (tt) — ) 63 Đối tượng DataTable (tt) 64 22.11.2012 33 Đối tượng DataTable (tt) — Khi sửa đổi các hàng trong DataTable, DataTable sẽ duy trì cả hai bản gốc (original version) và bản đã sửa của mỗi hàng (modified version) — Phương thức DataTable.AcceptChanges() được sử dụng để sao chép bản hiện tại của tất cả các hàng đến bản gốc tương ứng — Phương thức DataTable.RejectChanges() được sử dụng để sao chép bản gốc của tất cả các hàng đến bản hiện tại tương ứng 65 Đối tượng DataTable (tt) 66 22.11.2012 34 Đối tượng DataView — Là đối tượng được sử dụng để lọc, sắp xếp dữ liệu từ DataTable — Đối tượng DataView có hai thuộc tính quan trọng: ◦ Sort: sắp xếp dữ liệu dataView.Sort =“Fieldname”; ◦ RowFilter: lọc dữ liệu dataView.RowFilter = “Alias like ‘abc%’”; 67 Đối tượng DataView (tt) — Tạo đối tượng DataView ◦ DataView dataView = new DataView(dataTable); Hoặc ◦ DataView dataView = dataTable.DefaultView; 68 22.11.2012 35 Đối tượng DataView (tt) 69 Đối tượng DataSet — Đối tượng DataSet thể hiện cho cơ sở dữ liệu trong bộ nhớ. — Một DataSet có thể chứa một hay nhiều đối tượng DataTable. — Các bảng trong DataSet có thể là dữ liệu đổ vào từ DataAdapter (sử dụng phương thức Fill) hoặc được tạo thành từ các đối tượng DataTable. — Có thể cập nhật dữ liệu từ các bảng này vào cơ sở dữ liệu thông qua phương thức Update của đối tượng DataAdapter. 70 22.11.2012 36 Đối tượng DataSet (tt) — Đặc điểm của DataSet ◦ Không kết nối với nguồn dữ liệu. ◦ Không phân biệt dữ liệu thuộc nguồn nào (SQL Server, OLE DB, ODBC, ). ◦ Có thể lưu trữ dữ liệu từ nhiều bảng (Table), nhiều nguồn (Data Source) khác nhau. — Truy xuất bảng trong DataSet: ◦ dsName.Tables[index] ◦ Hoặc dsName.Tables[“DataTableName”] — Thêm hoặc xóa bảng bằng phương thức Add, Remove của tập Tables 71 Đối tượng DataSet (tt) 72 22.11.2012 37 Đối tượng DataSet (tt) 73 Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu — Để thao tác với cơ sở dữ liệu trong mô hình phi kết nối chúng ta cần sử dụng đến các đối tượng: ◦ DataConnection: Dùng để mở kết nối đến cơ sở dữ liệu. (Có thể có hoặc không) ◦ DataAdapter ◦ DataSet ◦ DataTable, DataRow 74 22.11.2012 38 Truy vấn lấy dữ liệu — B1. Tạo đối tượng DataConnection, và mở kết nối đến cơ sở dữ liệu. (có thể không sử dụng) — B2. Tạo đối tượng DataAdapter gắn với đối tượng DataConnection đã mở hoặc một chuỗi kết nối đến cơ sở dữ liệu, kết hợp với câu truy vấn select. — B3. Gọi phương thức Fill để điền dữ liệu lấy về vào DataSet (hoặc DataTable) — B4. Sử dụng tập hợp Tables của đối tượng DataSet để làm việc với dữ liệu đã lấy về. — B5. Đóng hoặc giải phóng các đối tượng nếu không cần thiết 75 Truy vấn lấy dữ liệu 76 22.11.2012 39 Truy vấn hành động trên CSDL — B1. Tạo đối tượng DataConnection, và mở kết nối đến cơ sở dữ liệu. (có thể không sử dụng). — B2. Khai báo và tạo đối tượng DataAdapter — B3. Thay đổi dữ liệu trên bảng dữ liệu nằm trong DataSet. — B4. Tạo đối tượng CommandBuilder gắn với biến đối tượng DataAdapter. — B5. Thi hành phương thức Update để cập nhật sự thay đổi dữ liệu trong bảng lên cơ sở dữ liệu. — B6. Đóng và giải phóng các biến đối tượng nếu không cần thiết 77 Truy vấn hành động trên CSDL 78 22.11.2012 1 Truy cập cơ sở dữ liệu bằng chương trình Chương 7 1 Mục tiêu — Sau khi học xong chương này, sinh viên có thể: ◦ Hiểu được mô hình truy cập CSDL của ADO.NET gồm các đối tượng Connection, Command, DataReader, DataAdapter, DataTable, DataView và DataSet. ◦ Biết sử dụng các mô hình của ADO.NET để truy cập và thao tác với cơ sở dữ liệu SQL Server và Microsoft Access bằng mã lệnh 2 22.11.2012 2 Nội dung — Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu ◦ Đối tượng Connection. ◦ Đối tượng Command ◦ Đối tượng DataReader — Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu ◦ Đối tượng DataAdapter ◦ Đối tượng DataTable ◦ Đối tượng DataView ◦ Đối tượng DataSet 3 Bài 1. Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu — Giới thiệu — Đối tượng Connection. — Đối tượng Command — Đối tượng DataReader — Sử dụng mô hình kết nối để thực hiện các thao tác với cơ sở dữ liệu 4 22.11.2012 3 Giới thiệu — ADO.NET cho phép làm việc ở cả hai chế độ: ◦ Chế độ kết nối (Connected) ◦ Chế độ phi kết nối (Disconnected) Thực hiện nhiệm vụ kết nối đến CSDL Thực hiện các câu lệnh SQL thao tác với CSDL Đón nhận kết quả trả về từ đối tượng Command Cầu nối giữa nguồn dữ liệu và các bảng được cached trong bộ nhớ Kho chứa các bảng 5 Đối tượng Connection — Là đối tượng có nhiệm vụ thực hiện nhiệm vụ kết nối đến CSDL để các đối tượng như Command thao tác với CSDL thông qua kết nối này Application Database Connection 6 22.11.2012 4 Đối tượng Connection (tt) — Thuộc tính: ◦ ConnectionString: chuỗi kết nối đến database ◦ State: trạng thái kết nối, thường được sử dụng để kiểm tra kết nối thành công hay không. VD: if (con.State.ToString() =="Open" ) — Phương thức: ◦ Open: mở kết nối ◦ Close: đóng kết nối 7 Đối tượng Connection (tt) — Đối tượng Connection kết nối với CSDL SqlServer: SqlDataConnection (khai báo namespace System.Data.SqlClient) — Đối tượng Connection kết nối với CSDL Access: OleDataConnection (khai báo namespace System.Data.OleDb) — Khi tạo một đối tượng Connection, chúng ta phải truyền chuỗi kết nối đến phương thức tạo dựng, hoặc gán chuỗi kết nối vào thuộc tính ConnectionString của đối tượng 8 22.11.2012 5 Đối tượng Connection (tt) — Tạo đối tượng Connection 9 Đối tượng Connection (tt) — Có thể truy xuất chuỗi kết nối lưu trong trang Web.config thông qua đối tượng WebConfigurationManager (Khai báo namespace System.Web.Configuration) 10 22.11.2012 6 Đối tượng Connection (tt) — Chuỗi kết nối trong Web.config 11 Đối tượng Connection (tt) — Sử dụng đối tượng Connection: ◦ Trước khi thực thi bất kỳ lệnh nào đối với dữ liệu, trước hết chúng ta phải mở kết nối. ◦ Sau khi thực thi lệnh xong, chúng ta phải đóng kết nối. ◦ Ngoài ra, cần sử dụng các cơ chế xử lý ngoại lệ nếu có lỗi xảy ra – trycatchfinaly – Lệnh using: buộc kế nối phải đóng ngay cả khi có biệt lệ xảy ra 12 22.11.2012 7 Đối tượng Connection (tt) 13 Đối tượng Connection (tt) — Các bước thực hiện: ◦ Tạo một Connection. ◦ Mở connection. ◦ Truyền connection cho các đối tượng ADO.NET khác. ◦ Thực hiện các thao tác database với các đối tượng ADO.NET này. ◦ Đóng connection. 14 22.11.2012 8 Đối tượng Connection (tt) — Các bước thực hiện: 15 Đối tượng Command — Dùng để thực hiện các câu lệnh SQL thao tác với CSDL như: Select, Insert, Update, Delete. Application Connection Database Command 16 22.11.2012 9 Đối tượng Command (tt) — Thuộc tính: • Connection: kết nối để thực hiện lệnh • CommandText: câu lệnh cần thực hiện • CommandType: loại câu lệnh (Text, TableDirect, StoredProcedure) • Phương thức: • ExecuteScalar(): thực hiện câu lệnh và trả về giá trị đơn • ExecuteNonQuery(): gọi các lệnh SQL, store, trả về số record bị tác động (Insert, Update, Delete) • ExecuteReader(): thực hiện câu lệnh trả về đối tượng DataReader 17 Đối tượng Command (tt) — Đối tượng Command dùng trong CSDL SqlServer: SqlCommand — Đối tượng Command dùng trong CSDL Access: OleDbCommand — Tạo đối tượng Command ◦ Sử dụng phương thức tạo dựng ◦ Sử dụng phương thức CreateCommand của đối tượng Connection 18 22.11.2012 10 Đối tượng Command (tt) — Tạo đối tượng Command (tt) 19 Đối tượng Command (tt) — Tạo đối tượng Command (tt) ◦ Có thể thiết lập các thuộc tính cho đối tượng Command sau khi tạo: 20 22.11.2012 11 Đối tượng Command (tt) — Phương thức ExecuteReader: ◦ Phương thức này trả về một tập các bản ghi, thường được sử dụng để thực thi các câu lệnh truy vấn như Select. ◦ Kết quả có thể lưu trữ trong đối tượng DataReader 21 Đối tượng Command (tt) — Phương thức ExecuteScalar: ◦ Trả về một phần tử (cột đầu tiên hàng đầu tiên) trong bảng kết quả. ◦ Thường được sử dụng thực hiện câu lệnh truy vấn Select mà kết quả trả về chỉ có một hàng và một cột 22 22.11.2012 12 Đối tượng Command (tt) — Phương thức ExecuteNonQuery: ◦ Được sử dụng để thực thi các câu lệnh truy vấn hành động: Insert, Update, Delete 23 Đối tượng Command (tt) — Phương thứ

Các file đính kèm theo tài liệu này:

  • pdftailieu.pdf
Tài liệu liên quan