12.07.2015 Views

MỤC LỤC - lib

MỤC LỤC - lib

MỤC LỤC - lib

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Bài Giảng Môn Lập Trình Website ASP.NetMỤC LỤCChương 01: TỔNG QUAN VỀ ASP.NET ........................................................... Trang 1I. Giới thiệu về ASP.Net.................................................................................................11. Tìm hiểu về ASP.Net ......................................................................................12. Những ưu điểm của ASP.Net ..........................................................................13. Quá trình xử lý tập tin ASPX............................................................................24. Tìm hiểu về .Net Phatform và .Net Framework................................................3II. Web Server ............................................................................................................... 61. Internet Information Services...........................................................................62. Cài đặt Web Server ........................................................................................73. Cấu hình Internet Information Services ...........................................................9III. Tạo ứng dụng Web đầu tiên ..................................................................................121. Khởi động MS Visual Studio .Net .................................................................122. Tạo mới ứng dụng Web.................................................................................133. Bổ sung các điều khiển..................................................................................144. Thi hành ứng dụng .......................................................................................155. Phân loại tập tin trong ASP.Net .....................................................................15IV. Làm quen với các thành phần giao diện trên VS .Net ........................................161. Solution Explorer .........................................................................................162. Property Window ..........................................................................................173. Toolbox .........................................................................................................174. Document Outline Window ............................................................................18Chương 02: WEB SERVER CONTROL .....................................................................19I. Điều khiển cơ bản chuẩn – Standard......................................................................191. Label..............................................................................................................202. TextBox .........................................................................................................203. Image.............................................................................................................204. Button, ImageButton, LinkButton ...................................................................215. HyperLink.......................................................................................................226. ListBox Và DropDownList ..............................................................................227. CheckBox & RadioButton ..............................................................................258. CheckBoxList & RadioButtonList ...................................................................25II. Điều khiển kiểm tra dữ liệuIII. Một số điều khiển khácIV. Đối tượng ViewStateV. Asp.Net PageChương 03: CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆUI. Điều khiển DataGrid...................................................................................... 62I.1. Các thao tác định dạng lưới ...........................................................................62I.2. Xử lý sắp xếp................................................................................................67I.3. Xử lý phân trang ...........................................................................................69I.4. Tùy biến các cột ...........................................................................................70I.5. Cập nhật dữ liệu trực tiếp trên lưới.................................................................74www.Beenvn.comBiên sọan: Dương Thành Phết Trang 1


Bài Giảng Môn Lập Trình Website ASP.NetII. Điều khiển DataList ...................................................................................... 79II.1. Sử dụng DataList để hiển thị dữ liệu...............................................................79II.2. Cập nhật dữ liệu với DataList .........................................................................83III. Điều khiển Repeater ..................................................................................... 87IV. Các ví dụ mở rộng ......................................................................................... 90IV.1. Xử lý đảo hướng sắp xếp trong DataGrid ........................................................90IV.2. Tạo biểu tượng sắp xếp trong cột cho DataGrid...............................................91IV.3. Định dạng hình thức hiển thị cho dòng dữ liệu thỏa điều kiện trên DataGrid ......92IV.4. Tạo hiệu ứng chọn khi rê chuột qua các dòng dữ liệu ......................................93Bài 4.................................................................................................................... 94XÂY DỰNG LỚP XỬ LÝ DỮ LIỆU.......................................................................... 94I. Thiết kế tổng quan........................................................................................ 96I.1. Cấu trúc chi tiết lớp XL_BANG ........................................................................98I.2. Xây dựng lớp xử lý nghiệp vụ.......................................................................102I.3. Sử dụng lớp xử lý nghiệp vụ ........................................................................104Bài 5.................................................................................................................. 108Tài liệu hướng dẫn giảng dạyHọc phần 3 - Lập trình ứng dụng web với ASP.NET Trang 3/174XÂY DỰNG ĐỐI TƯỢNG THỂ HIỆN.................................................................... 108I. Tạo mới đối tượng thể hiện......................................................................... 109II. Sử dụng đối tượng thể hiện ........................................................................ 111III. Tạo phương thức cho đối tượng thể hiện.................................................... 112IV. Tạo sự kiện cho đối tượng thể hiện ............................................................ 113IV.1. Thiết kế .....................................................................................................114IV.2. Xử lý..........................................................................................................114Bài 6.................................................................................................................. 117XÂY DỰNG VÀ QUẢN LÝ ỨNG DỤNG ................................................................. 117I. Đối tượng Request, Response..................................................................... 118I.1. Đối tượng Response....................................................................................118I.2. Đối tượng Request ......................................................................................120II. Đối tượng Session, Application................................................................... 122II.1. Đối tượng Application..................................................................................123II.2. Đối tượng Session.......................................................................................124III. Đối tượng Server......................................................................................... 125IV. Đối tượng Cookies ...................................................................................... 125IV.1. Giới thiệu ...................................................................................................125IV.2. Làm việc với Cookies ...................................................................................126V. Tập tin quản lý và cấu hình ứng dụng......................................................... 127V.1. Global.asax.................................................................................................127V.2. Web.config.................................................................................................128VI. Tổ chức & xây dựng ứng dụng.................................................................... 133VI.1. Tổ chức lưu trữ ứng dụng............................................................................133VI.2. Xây dựng ứng dụng ....................................................................................134Bài 7.................................................................................................................. 136WEB SERVICE ................................................................................................... 136www.Beenvn.comBiên sọan: Dương Thành Phết Trang 2


Bài Giảng Môn Lập Trình Website ASP.NetI. Tìm hiểu về Web Services ........................................................................... 137II. Xây dựng Web Services .............................................................................. 140Tài liệu hướng dẫn giảng dạyHọc phần 3 - Lập trình ứng dụng web với ASP.NET Trang 4/174II.1. Tạo Web Services trong VS .Net...................................................................140II.2. Kiểm tra Web Service ..................................................................................141III. Sử dụng Web Service.................................................................................. 143III.1. Sử dụng Web Service do người dùng xây dựng .............................................144III.2. Sử dụng Web Services được cung cấp miễn phí trên mạng.............................144IV. Xây dựng Web Services truy xuất dữ liệu................................................... 148IV.1. Web Service: WS_KHACH_HANG..................................................................148IV.2. Sử dụng WS_KHACH_HANG.........................................................................150Bài 8.................................................................................................................. 152PHỤ LỤC ........................................................................................................... 152I. Cơ sở dữ liệu dùng trong ứng dụng ............................................................ 153I.1. Thiết kế cơ sở dữ liệu..................................................................................153I.2. Dữ liệu thử.................................................................................................156II. Giới thiệu về các tag HTML ......................................................................... 157II.1. Cơ bản về tag HTML....................................................................................157II.2. Các tag nhập liệu........................................................................................163III. Cascading Style Sheets - CSS...................................................................... 166III.1. Giới thiệu CSS.............................................................................................166III.2. Cú pháp CSS ..............................................................................................167III.3. Sử dụng CSS trong trang HTML....................................................................169Chương 01I. Giới thiệu về ASP.Net1. Tìm hiểu về ASP.NetTỔNG QUAN VỀ ASP.NETGiới thiệu về Asp.NetWeb ServerTạo ứng dụng web đầu tiênTừ khoảng cuối thập niên 90, ASP (Active Server Page) đã được nhiều lập trình viên lựachọn để xây dựng và phát triển ứng dụng web động trên máy chủ sử dụng hệ điều hànhWindows. ASP đã thể hiện được những ưu điểm của mình với mô hình lập trình thủ tục đơngiản, sử dụng hiệu quả các đối tượng COM: ADO (ActiveX Data Object) - xử lý dữ liệu, FSO(File System Object) - làm việc với hệ thống tập tin…, đồng thời, ASP cũng hỗ trợ nhiều ngônngữ: VBScript, JavaScript.Chính những ưu điểm đó, ASP đã được yêu thích trong một thời gian dài. Tuy nhiên,ASP vẫn còn tồn đọng một số khó khăn như Code ASP và HTML lẫn lộn, điều này làm cho quátrình viết code khó khăn, thể hiện và trình bày code không trong sáng, hạn chế khả năng sửdụng lại code. Bên cạnh đó, khi triển khai cài đặt, do không được biên dịch trước nên dễ bị mấtsource code, hạn chế về mặt tốc độ thực hiện. Quá trình xử lý Postback khó khăn, …www.Beenvn.comBiên sọan: Dương Thành Phết Trang 3


Bài Giảng Môn Lập Trình Website ASP.NetĐầu năm 2002, Microsoft giới thiệu một kỹ thuật lập trình Web khá mới mẻ với tên gọiban đầu là ASP+, tên chính thức sau này là ASP.Net. Với ASP.Net, không những không cầnđòi hỏi bạn phải biết các tag HTML, thiết kế web, mà nó còn hỗ trợ mạnh lập trình hướng đốitượng trong quá trình xây dựng và phát triển ứng dụng Web.ASP.Net là kỹ thuật lập trình và phát triển ứng dụng web ở phía Server (Server-side)dựa trên nền tảng của Microsoft .Net Framework.Hầu hết, những người mới đến với lập trình web đều bắt đầu tìm hiểu những kỹ thuật ởphía Client (Client-side) như: HTML, Java Script, CSS (Cascading Style Sheets). Khi Webbrowser yêu cầu một trang web (trang web sử dụng kỹ thuật client-side), Web server tìm trangweb mà Client yêu cầu, sau đó gởi về cho Client. Client nhận kết quả trả về từ Server và hiểnthị lên màn hình.ASP.Net sử dụng kỹ thuật lập trình ở phía server thì hoàn toàn khác, mã lệnh ở phíaserver (ví dụ: mã lệnh trong trang ASP, ASP.NET) sẽ được biên dịch và thi hành tại WebServer. Sau khi được Server đọc, biên dịch và thi hành, kết quả tự động được chuyển sangHTML/ JavaScript/ CSS và trả về cho Client.Tất cả các xử lý lệnh ASP, ASP.Net đều được thực hiện tại Server và do đó, gọi là kỹthuật lập trình ở phía server.2. Những ưu điểm của ASP.NetASP.Net cho phép bạn lựa chọn một trong các ngôn ngữ lập trình mà bạn yêu thích:Visual Basic.Net, J#, C#,…Trang ASP.Net được biên dịch trước thành những tập tin DLL mà Server có thể thi hànhnhanh chóng và hiệu quả. Yếu tố này là một bước nhảy vọt đáng kể so với kỹ thuậtthông dịch của ASP.ASP.Net hỗ trợ mạnh mẽ bộ thư viện phong phú và đa dạng của .Net Framework, làmviệc với XML, Web Service, truy cập cơ sở dữ liệu qua ADO.Net, …ASPX và ASP có thể cùng hoạt động trong 1 ứng dụng.ASP.Net sử dụng phong cách lập trình mới: Code behide. Tách code riêng, giao diệnriêng Dễ đọc, dễ quản lý và bảo trì.Kiến trúc lập trình giống ứng dụng trên Windows.Hỗ trợ quản lý trạng thái của các controlTự động phát sinh mã HTML cho các Server control tương ứng với từng loại BrowserTriển khai cài đặtoKhông cần lock, không cần đăng ký DLLwww.Beenvn.comoCho phép nhiều hình thức cấu hình ứng dụngHỗ trợ quản lý ứng dụng ở mức toàn cụcoGlobal.aspx có nhiều sự kiện hơnBiên sọan: Dương Thành Phết Trang 4


Bài Giảng Môn Lập Trình Website ASP.Neto Quản lý session trên nhiều Server, không cần Cookies3. Quá trình xử lý tập tin ASPXKhi Web server nhận được yêu cầu từ phía client, nó sẽ tìm kiếm tập tin được yêu cầuthông qua chuỗi URL được gởi về, sau đó, tiến hành xử lý theo sơ đồ sau:4. Tìm hiểu về .Net Phatform và .Net Framework.Net PhatformBao gồm .Net Framework và những công cụ được dùng để xây dựng, phát triểnứng dụng và dịch vụ. ASP.Net..Net FrameworkKiến trúc .Net Frameworkwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 5


Bài Giảng Môn Lập Trình Website ASP.NetHệ điều hànhCung cấp các chức năng xây dựng ứng dụng với vai trò quản lý việc xây dựng và thihành ứng dụng, .NET Framework cung cấp các lớp đối tượng (Class) để bạn có thể gọi thihành các chức năng mà đối tượng đó cung cấp. Tuy nhiên, lời kêu gọi của bạn có được"hưởng ứng" hay không còn tùy thuộc vào khả năng của hệ điều hành đang chạy ứng dụngcủa bạn.Các chức năng đơn giản như hiển thị một hộp thông báo (Messagebox) sẽ được .NETFramework sử dụng các hàm API của Windows. Chức năng phức tạp hơn như sử dụng cácCOMponent sẽ yêu cầu Windows phải cài đặt Microsoft Transaction Server (MTS) hay cácchức năng trên Web cần Windows phải cài đặt Internet Information Server (IIS).Như vậy, bạn cần biết rằng lựa chọn 1 hệ điều hành để cài đặt và sử dụng .NETFramework cũng không kém phần quan trọng. Cài đặt .NET Framework trên các hệ điều hànhWindows 2000, 2000 Server, XP, 2003 Server, Vista sẽ đơn giản và tiện dụng hơn trong khi lậptrình. Common Language RuntimeLà thành phần "kết nối" giữa các phần khác trong .NET Framework với hệ điều hành.Common Language Runtime (CLR) giữ vai trò quản lý việc thi hành các ứng dụng viết bằng.NET trên Windows.CLR sẽ thông dịch các lời gọi từ chương trình cho Windows thi hành, đảm bảo ứng dụngkhông chiếm dụng và sử dụng tràn lan tài nguyên của hệ thống. Nó cũng không cho phép cáclệnh "nguy hiểm" được thi hành. Các chức năng này được thực thi bởi các thành phần bêntrong CLR như Class loader, Just In Time compiler, Garbage collector, Exception handler, COMmarshaller, Security engine,…Trong các phiên bản hệ điều hành Windows mới như XP.NET và Windows 2003, WinVista CLR được gắn kèm với hệ điều hành. Điều này đảm bảo ứng dụng viết ra trên máy tínhcủa chúng ta sẽ chạy trên máy tính khác mà không cần cài đặt, các bước thực hiện chỉ đơngiản là một lệnh xcopy của DOS!Bộ thư viện các lớp đối tượngNếu phải giải nghĩa từ "Framework" trong thuật ngữ .NET Framework thì đây là lúc thíchhợp nhất. Framework chính là một tập hợp hay thư viện các lớp đối tượng hỗ trợ người lậptrình khi xây dựng ứng dụng. Có thể một số người trong chúng ta đã nghe qua về MFC và JFC.Microsoft Foundation Class là bộ thư viện mà lập trình viên Visual C++ sử dụng trong khiJava Foundation Class là bộ thư viện dành cho các lập trình viên Java. Giờ đây, có thể coi.NET Framework là bộ thư viện dành cho các lập trình viên .NET.www.Beenvn.comVới hơn 5000 lớp đối tượng để gọi thực hiện đủ các loại dịch vụ từ hệ điều hành, chúngta có thể bắt đầu xây dựng ứng dụng bằng Notepad.exe!!!… Nhiều người lầm tưởng rằng cácBiên sọan: Dương Thành Phết Trang 6


Bài Giảng Môn Lập Trình Website ASP.Netmôi trường phát triển phần mềm như Visual Studio 98 hay Visual Studio.NET là tất cả những gìcần để viết chương trình. Thực ra, chúng là những phần mềm dùng làm "vỏ bọc" bên ngoài.Với chúng, chúng ta sẽ viết được các đoạn lệnh đủ các màu xanh, đỏ; lỗi cú pháp báo ngay khiđang gõ lệnh; thuộc tính của các đối tượng được đặt ngay trên cửa sổ properties, giao diệnđược thiết kế theo phong cách trực quan… Như vậy, chúng ta có thể hình dung được tầm quantrọng của .NET Framework.Nếu không có cái cốt lõi .NET Framework, Visual Studio.NET cũng chỉ là cái vỏ bọc!Nhưng nếu không có Visual Studio.NET, công việc của lập trình viên .NET cũng lắm bước giannan!oBase class <strong>lib</strong>rary – thư viện các lớp cơ sởĐây là thư viện các lớp cơ bản nhất, được dùng trong khi lập trình hay bảnthân những người xây dựng .NET Framework cũng phải dùng nó để xây dựng cáclớp cao hơn. Ví dụ các lớp trong thư viện này là String, Integer, Exception,…oADO.NET và XMLBộ thư viện này gồm các lớp dùng để xử lý dữ liệu. ADO.NET thay thế ADOđể trong việc thao tác với các dữ liệu thông thường. Các lớp đối tượng XML đượccung cấp để bạn xử lý các dữ liệu theo định dạng mới: XML. Các ví dụ cho bộ thưviện này là SqlDataAdapter, SqlCommand, DataSet, XMLReader, XMLWriter,…oASP.NETBộ thư viện các lớp đối tượng dùng trong việc xây dựng các ứng dụng Web.ASP.NET không phải là phiên bản mới của ASP 3.0. Ứng dụng web xây dựng bằngASP.NET tận dụng được toàn bộ khả năng của .NET Framework. Bên cạnh đó làmột "phong cách" lập trình mới mà Microsoft đặt cho nó một tên gọi rất kêu: codebehind.Đây là cách mà lập trình viên xây dựng các ứng dụng Windows based thườngsử dụng – giao diện và lệnh được tách riêng. Tuy nhiên, nếu bạn đã từng quen vớiviệc lập trình ứng dụng web, đây đúng là một sự "đổi đời" vì bạn đã được giải phóngkhỏi mớ lệnh HTML lộn xộn tới hoa cả mắt.Sự xuất hiện của ASP.NET làm cân xứng giữa quá trình xây dựng ứng dụngtrên Windows và Web.ASP.NET cung cấp một bộ các Server Control để lập trình viên bắt sự kiện vàxử lý dữ liệu của ứng dụng như đang làm việc với ứng dụng Windows. Nó cũng chophép chúng ta chuyển một ứng dụng trước đây viết chỉ để chạy trên Windows thànhmột ứng dụng Web khá dễ dàng. Ví dụ cho các lớp trong thư viện này là WebControl,HTMLControl, …oWeb servicesWeb services có thể hiểu khá sát nghĩa là các dịch vụ được cung cấp quaWeb (hay Internet). Dịch vụ được coi là Web service không nhằm vào người dùngmà nhằm vào người xây dựng phần mềm.Web service có thể dùng để cung cấp các dữ liệu hay một chức năng tínhtoán. Ví dụ, công ty du lịch của bạn đang sử dụng một hệ thống phần mềm để ghinhận thông tin về khách du lịch đăng ký đi các tour. Để thực hiện việc đặt phòngkhách sạn tại địa điểm du lịch, công ty cần biết thông tin về phòng trống tại các kháchsạn. Khách sạn có thể cung cấp một Web service để cho biết thông tin về các phòngtrống tại một thời điểm. Dựa vào đó, phần mềm của bạn sẽ biết rằng liệu có đủ chỗđể đặt phòng cho khách du lịch không? Nếu đủ, phần mềm lại có thể dùng một.www.Beenvn.comWeb service khác cung cấp chức năng đặt phòng để thuê khách sạn. Điểm lợicủa Web service ở đây là bạn không cần một người làm việc liên lạc với khách sạnBiên sọan: Dương Thành Phết Trang 7


Bài Giảng Môn Lập Trình Website ASP.Netđể hỏi thông tin phòng, sau đó, với đủ các thông tin về nhiều loại phòng người đó sẽxác định loại phòng nào cần đặt, số lượng đặt bao nhiêu, đủ hay không đủ rồi lại liênlạc lại với khách sạn để đặt phòng. Đừng quên là khách sạn lúc này cũng cần cóngười để làm việc với nhân viên của bạn và chưa chắc họ có thể liên lạc thành công.Web service được cung cấp dựa vào ASP.NET và sự hỗ trợ từ phía hệ điềuhành của Internet Information Server.oWindow formBộ thư viện về Window form gồm các lớp đối tượng dành cho việc xây dựngcác ứng dụng Windows based. Việc xây dựng ứng dụng loại này vẫn được hỗ trợ tốttừ trước tới nay bởi các công cụ và ngôn ngữ lập trình của Microsoft. Giờ đây, ứngdụng chỉ chạy trên Windows sẽ có thể làm việc với ứng dụng Web dựa vào Webservice. Ví dụ về các lớp trong thư viện này là: Form, UserControl,…Phân nhóm các lớp đối tượng theo loạiMột khái niệm không được thể hiện trong hình vẽ trên nhưng cần đề cập đến làNamespace. Đây là tên gọi một nhóm các lớp đối tượng phục vụ cho một mục đích nào đó.Chẳng hạn, các lớp đối tượng xử lý dữ liệu sẽ đặt trong một namespace tên là Data.Các lớp đối tượng dành cho việc vẽ hay hiển thị chữ đặt trong namespace tên là Drawing.Một namespace có thể là con của một namespace lớn hơn. Namespace lớn nhấttrong .NET Framework là System.Hệ thống tên miền (Namespace)Lợi điểm của namespace là phân nhóm các lớp đối tượng, giúp người dùng dễnhận biết và sử dụng. Ngoài ra, namespace tránh việc các lớp đối tượng có tên trùngvới nhau không sử dụng được. .NET Framework cho phép chúng ta tạo ra các lớp đốitượng và các namespace của riêng mình.Với hơn 5000 tên có sẵn, việc đặt trùng tên lớp của mình với một lớp đối tượngđã có là điều khó tránh khỏi. Namespace cho phép việc này xảy ra bằng cách sử dụng 1tên đầy đủ để nói đến 1 lớp đối tượng. Ví dụ, nếu muốn dùng lớp WebControls, chúng tacó thể dùng tên tắt của nó là WebControls hay tên đầy đủ là:System.Web.UI.WebControls.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 8


Bài Giảng Môn Lập Trình Website ASP.NetĐặc điểm của bộ thư viện các đối tượng .NET Framework là sự trải rộng để hỗtrợ tất cả các ngôn ngữ lập trình .NET như chúng ta thấy ở hình vẽ trên. Điều này sẽgiúp những người mới bắt đầu ít bận tâm hơn trong việc lựa chọn ngôn ngữ lập trìnhcho mình vì tất cả các ngôn ngữ đều mạnh ngang nhau. Cũng bằng cách sử dụng cáclớp đối tượng để xây dựng ứng dụng, .NET Framework buộc người lập trình phải sửdụng kỹ thuật lập trình hướng đối tượng (sẽ được nói tới trong các chương sau).II. Web ServerTrong phần này giới thiệu về IIS (phần mềm Web Server của Microsot dành choWindows), đồng thời hướng dẫn cài đặt, cấu hình và kiểm tra Web Server trên các hệ thống sửdụng Windows 2000,XP, Vista, Server 2003.1. Internet Information Services (IIS)IIS có thể được sử dụng như 1 Web server, kết hợp với ASP, ASP.NET để xây dựngcác ứng dụng Web tận dụng các điểm mạnh của Server-side Script, COM component,…theomô hình Client/Server. IIS có rất nhiều phiên bản, đầu tiên được phát hành rời trong bảnService pack của WinNT. Các phiên bản Windows 2000 đã có tích hợp IIS 5.0. Windows XP tích hợp IIS 5.5Windows XP .NET Server tích hợp IIS 6 hỗ trợ các tính năng dành cho .NET củaASP.NET và Web Service. Windows Vista tích hợp IIS 7.02. Cài đặt Web Servera. Cài đặt Web Server trên Windows 2000/Windows XP ProfessionalWindows 2000, Xp tích hợp sẵn IIS nhưng không tự động cài đặt do đó, bạn phải tự càiIIS nếu hệ thống chưa cài.Bước 1. Chọn Control Panel | Add/Remove programs.Bước 2. Add/Remove Windows Components.Bước 3. Đánh dấu vào mục Internet Information Services (IIS).www.Beenvn.comBước 4. Chọn nút Next để cài đặt.Sau khi cài đặt IIS, thư mục InetPub tự động được tạo ra trong ổ C: và chứa thưmục con wwwroot. Có thể truy cập đến Website bằng cách: http://localhost hoặchttp://127.0.0.1Biên sọan: Dương Thành Phết Trang 9


Bài Giảng Môn Lập Trình Website ASP.NetGhi chú: Để kiểm tra cài đặt: Khởi động trình duyệt truy cập địa chỉ : http://LocalhostKết quả thành công.b. Cài đặt Web Server trên Windows VistaBước 1: Chọn Start Settings Control PanelBước 2: Chọn Classic View Chọn Programs and featuresBước 3: Chọn Turn Windows features on or offwww.Beenvn.comBước 4: Đánh dấu vào mục Internet Information Services (IIS) Chọn Ok để cài đặtBiên sọan: Dương Thành Phết Trang 10


Bài Giảng Môn Lập Trình Website ASP.Netwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 11


Bài Giảng Môn Lập Trình Website ASP.NetKiềm tra kết quả cài đặt: Khởi động trình duyệt nhập địa chỉ http://localhostc. Cài đặt Web Server trên Windows Server 2003Cài đặt Web Server trên Windows Server 2003 cũng tương tự như cài đặt Web Servertrên Windows 2000.Bước 1. Chọn Control Panel | Add/Remove programs.Bước 2. Add/Remove Windows Components.Bước 3. Đánh dấu vào Application Server.Bước 4: Chọn Next để cài đặt3. Cấu hình Internet Information ServicesĐể cấu hình IIS, vào Control Panel Administrative Tools Internet ServicesManager. Trên các hệ điều hành Windows 2000/XP, Vista Microsoft sử dụng công cụ MicrosoftManagement Console (MMC) để làm công cụ quản lý.a. Cấu hình IIS quy định trang chủ mặc địnhTrên Win 2000, XPoStart Settings Control Panel Administratrive tools Mở mục InternetInfomtic Serviceswww.Beenvn.comBiên sọan: Dương Thành Phết Trang 12


Bài Giảng Môn Lập Trình Website ASP.NetoClick phải mục Default Website Properties Chọn trang Documents để quyđịnh trang chủ mặc địnhVD:Default.AspxDefault.aspIndex.aspHome.htmlIndex.htmCấu hình IIS trên Win VistaooStart Settings Control Panel Administratrive tools Mở mục IISManagerClick phải mục Default Documentwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 13


Bài Giảng Môn Lập Trình Website ASP.Netb. Cấu hình quy định thư mục ảo – Virtual Directory:Một Web Server có thể quản lý nhiều ứng dụng Web đồng thời. Ta có thể tổ chức mộtthư mục con trong wwwroot cho mỗi ứng dụng nhưng tố hơn bạn nên tạo ánh xạ (VirtualDirectory) liên kết đến thư mục đó.Để tạo một virtual directory: Trên Windows 2000, XpClick phải: Default WebsiteNew/ Virtual Directory Next NextKhai báo nhãn cho thư mục ảo (Myweb) Khai báo thư mục vật lý (D:\MyWebsite)Xác lập quyền truy cập Next FinishTrên Win VistaClick phải: Default WebsiteAdd Application (hoặc Virtual Directory) Nexttwww.Beenvn.comKhai báo nhãn (Alias) và chỉ định thư mục vật lý lưu trữ Website(Physical path)Biên sọan: Dương Thành Phết Trang 14


Bài Giảng Môn Lập Trình Website ASP.NetChạy thử ứng dụng để kiểm tra:Hoặc từ cửa sổ IIS Manager: click phải trang cần xem (Default.aspx) Browse Hoặc từ trình duyệt nhập: http://Localhost/MaytinhIV. Tạo ứng dụng đầu tiên1. Khởi động MS Visual Studio .NetChúng ta sẽ bắt đầu bằng việc làm quen với môi trường phát triển ứng dụng (IDE) củaVisual Studio.NET 2005.Start Programs Microsoft Visual Studio 2005 Microsoft Visual Studio 2005www.Beenvn.comBiên sọan: Dương Thành Phết Trang 15


Bài Giảng Môn Lập Trình Website ASP.Net2. Tạo ứng dụng webBước 1. Chọn từ thực đơn File New WebsiteChọn các dạng ứng dụng tạo (ASP.Net Website) Vị trí lưu trữ (D:\Wellcom) Ngônngữ lập trình (C#) Chon OkKết quả:Cửa sổ Solution ExplorerTrang Default.aspx (Design)www.Beenvn.comBiên sọan: Dương Thành Phết Trang 16


Bài Giảng Môn Lập Trình Website ASP.NetTrang Default.aspx (Source)Trang Default.aspx.cs3. Bổ sung điều khiển Chọn trang Default.aspx Chuyển trang sang chế độ làm việc Design Nhập một dòng văn bản: “Chào mừng các bạn đến vời ASP.Net” Thêm 2 điều khiển Label từ thanh công cụ Toolbox vào trang, đặt tên lần lượt là : lbNgay,lbThoigian.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 17


Bài Giảng Môn Lập Trình Website ASP.Net Chuyển sang trang code Defaulr.aspx.cs (Double click vào trang đang thiết kế) Nhập code cho sự kiện Page Load:Lưu ý: Phải lưu tập tin với tùy chọn Save with Encoding… nếu có sử dụng Font Unicode.4. Thi hành ứng dụngoooKiểm lỗi trước khi chạy: Từ Menu Build Chọn Build Web SiteChấp nhận bật chế độ debug cho WebsiteChạy chương trình Bấm Ctrl + F5 : để chạy chương trình (không debug) và F5 đểchạy debug.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 18


Bài Giảng Môn Lập Trình Website ASP.Net5. Phân loại tập tin trong ASP.NetASP.Net ASP Diễn giải.asax .asa Tập tin global.asax trong ASP .Net thay thế cho tập tin global.asa của ASP,là tập tin quản lý các sự kiện của ứng dụng (application), session, và các sựkiện khi có các yêu cầu tới trang web..ascxCác điều khiển do người dùng tự tạo được lưu trữ với phần mở rộng là ascx..asmxTập tin Web Service của ứng dụng ASP.Net.aspx .asp Phần mở rộng của trang ASP.Net.configTập tin cấu hình ứng dụng theo định dạng XML. Web.config chứa hầu hếtcác cấu hình của ứng dụng.cs Tập tin mã nguồn viết theo ngôn ngữ C#.js .js Tập tin mã nguồn của Jscript.vbTập tin mã nguồn viết theo ngôn ngữ VB.NetV. Làm quen với các thành phần giao diện trên VS .Net1. Solution ExplorerHiển thị cửa số Solution Explorer: Thực đơn View | Solution ExplorerThao tác với cửa sổ Solution Explorer : Đây là cửa số quản lý các "tài nguyên" cótrong ứng dụng. Thông qua cửa sổ này, chúng ta có thể:oooThực hiện các chức năng: sao chép, cắt, dán trên tập tin, thư mục nhưWindows Explorer.Tổ chức thư mục quản lý ứng dụng: Sử dụng chức năng Add | New Foldertừ thực đơn ngữ cảnh.Thêm thành phần mới cho ứng dụng: Sử dụng chức năng Add | Add NewItem…từ thực đơn ngữ cảnh. Xuất hiện hộp thoại Add New Item.• Web Form: Thêm trang Web• Class: Thêm lớp đối tượng• Module Web Form: Thêm thư việnwww.Beenvn.com• Web User Control: Thêm điều khiển người dùng• …Xác định trang web khởi động cho ứng dụng: Chọn trang cần khởi động Nhấpchuột phải (xuất hiện thực đơn ngữ cảnh) Chọn Set As Start Page.Biên sọan: Dương Thành Phết Trang 19


Bài Giảng Môn Lập Trình Website ASP.NetXác định Project khởi động (trong trường hợp Solution có nhiều Project): Chọn Setas StartUp Project từ thực đơn ngữ cảnh.2. Property Window3. ToolboxHiển thị cửa số Properties Window: Thực đơn View | Properties Window.Thông qua cửa sổ thuộc tính, chúng ta có thể thiết lập thuộc tính cho trang web và cácđối tượng có trong trang web.www.Beenvn.comHiển thị Toolbox: Thực đơn View ToolboxBiên sọan: Dương Thành Phết Trang 20


Bài Giảng Môn Lập Trình Website ASP.Net4. Document Outline WindowHiển thị cửa sổ Document Outline: Thực đơn View / Other Windows / Document Outline.Cửa sổ này hiển thị các thành phần của trang web theo tổ chức cây rất dễ quản lý vàthao tác với các đối tượng có trong trang Web.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 21


Bài Giảng Môn Lập Trình Website ASP.NetChương 02:I. Điều khiển chuẩn – StandardWEB SERVER CONTROLNhững lý do nên sử dụng ASP.Net Standard Web Control:Điều khiển chuẩn – StandardĐiều khiển kiểm tra dữ liệu ValidationMột số điều khiển khácĐối tượng ViewStateĐơn giản, tương tự như các điều khiển trên Windows Form.Đồng nhất: Các điều khiển Web server có các thuộc tính giống nhau dễ tìm hiểuvà sử dụng.Hiệu quả: Các điều khiển Web Server tự động phát sinh ra các tag HTML theo từngloại Browser.Bảng liệt kê các thuộc tính chung của các Web controlThuộc tính Kiểu Ý nghĩa(ID) Chuỗi Qui định tên của điều khiển. Tên của điều khiển là duy nhất.AccessKey String Qui định ký tự để di chuyển nhanh đến điều khiển - ký tự xửlý phím nóng.Attributes AttributeCollection Tập hợp các thuộc tính của điều khiển HTMLBackColor Color Qui định màu nền của điều khiển.BorderColor Color Qui định màu đường viền của điều khiển.BorderStyle BorderStyle Qui định kiểu đường viền của điều khiển.BorderWidth Unit Qui định độ rộng của đường viền.CssClass String Qui định hình thức hiển thị của điều khiển qua tên CSS.Enabled Boolean Qui định điều khiển có được hiển thị hay không. Giá trị mặcđịnh của thuộc tính này là True – được phép hiển thị.www.Beenvn.comFont FontInfo Qui định Font hiển thị cho điều khiểnForeColor Color Qui định màu chữ hiển thị trên điều khiểnBiên sọan: Dương Thành Phết Trang 22


Bài Giảng Môn Lập Trình Website ASP.NetHeight Unit Qui định chiều cao của điều khiểnToolTip String Dòng chữ sẽ hiển thị khi rê chuột vào điều khiển.Width Unit Qui định độ rộng của điều khiển.1. LabelLabel thường được sử dụng để hiển thị và trình bày nội dung trên trang web. Nội dungđược hiển thị trong label được xác định thông qua thuộc tính Text. Thuộc tính Text có thể nhậnvà hiển thị nội dung với các tag HTML.Ví dụ:2. TextBoxlblA.Text = "Đây là chuỗi văn bản thường";lblB.Text = "Còn đây là chuỗi văn bản được in đậm";TextBox là điều khiển được dùng để nhập và hiển thị dữ liệu. TextBox thường được sửdụng nhiều với các ứng dụng trên windows form.Các thuộc tính:Ví dụ:3. ImageText: Nội dung chứa trong TextboxTextMode: Qui định chức năng của Textbox, có các giá trị sau:oooSingleLine: Hiển thị và nhập liệu 1 dòng văn bảnMultiLine: Hiển thị và nhập liệu nhiều dòng văn bảnPassword: Hiển thị dấu * thay cho các ký tự có trong Textbox.Rows: Trong trường hợp thuộc tính TextMode = MultiLine, thuộc tính Rows sẽ qui địnhsố dòng văn bản được hiển thị.Maxlength: Qui định số ký tự tối đa được nhập vào cho TextBoxWrap: Thuộc tính này qui định việc hiển thị của văn bản có được phép tự động xuốngdò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ănbản. Giá trị mặc định của thuộc tính này là True - tự động xuống dòng.Điều khiển này được dùng để hiển thị hình ảnh lên trang Web.Các thuộc tính:ImageURL: Đường dẫn đến tập tin hình ảnh cần hiển thị.www.Beenvn.comAlternateText: Chuỗi văn bản sẽ hiển thị khi tập tin được thiết lập trong thuộc tínhImageURL không tồn tại.ImageAlign: Vị trí hiển thị giữa hình và nội dung văn bản.oNotSetBiên sọan: Dương Thành Phết Trang 23


Bài Giảng Môn Lập Trình Website ASP.NetooooLeftMiddleTextTopRight4. Button, ImageButton, LinkButtonCác điều khiển Button, ImageButton, LinkButton mặc định đều là các nút Submit Button,mỗi khi được nhấn vào sẽ PostBack về Server.Khi chúng ta thiết lập giá tri thuộc tính CommandName cho các điều khiển này, chúng tagọi tên chung cho các điều khiển này là Command Button.Các thuộc tính chung của Button, ImageButton, LinkButtonTextThuộc tínhCommandNameÝ nghĩaChuỗi văn bản hiển thị trên điều khiển.Tên lệnh. Được sử dụng trong sự kiện Command.Ngoài những thuộc tính trên, điều khiển ImageButton còn có các thuộc tính ImageURL,ImageAlign và AlternateText như điều khiển Image.Ví dụ: Tạo Website Tinhtoan gồm các điều khiển: Label, Textbox, Buttonwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 24


Bài Giảng Môn Lập Trình Website ASP.NetXử lý sự kiện:protected void btTinhtien_Click(object sender, EventArgs e){int soluong=int.Parse(txtSoluong.Text );int dongia=int.Parse(txtDongia.Text );int Thanhtien=soluong * dongia;txtThanhtien.Text = Thanhtien.ToString();}Khi thi hành ứng dụng5. HyperLinkĐiều khiển này được sử dụng để tạo ra các liên kết siêu văn bản.Các thuộc tính:ImageURL: Qui định hình hiển thị trên điều khiển.Text: Chuỗi văn bản sẽ được hiển thị trên điều khiển. Trong trường hợp cả 2 thuộctính ImageURL và Text được thiết lập, thuộc tính ImageURL được ưu tiên, thuộc tínhText sẽ được hiển thị như Tooltip.Ví dụ:NavigateUrl: Đường dẫn cần liên kết đến.Target: Xác định cửa sổ sẽ hiển thị cho mối liên kếtooo_blank: Hiển thị trang liên kết ở một cửa sổ mới._self: Hiển thị trang liên kết tại chính cửa sổ chứa liên kết đó._parent: Hiển thị trang liên kết ở frame cha.hplASPNet.Text = "Trang chủ ASP.Net";hplASPNet.ImageUrl = "~/Pictures/logoaspnet.jpg";hplASPNet.NavigateUrl ="http://www.asp.net";hplASPNet.Target = "_blank";Kết quả hiển trị trên trang Web:Ví dụ: Tạo Website Lienket gồm 3 điều khiển Hyperlinkwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 25


Bài Giảng Môn Lập Trình Website ASP.Net6. Listbox và DropdownListListBox và DropdownList là điều khiển hiển thị danh sách lựa chọn mà người dùng cóthể chọn một hoặc nhiều (chỉ dành cho ListBox). Các mục lựa chọn có thể được thêm vào danhsách thông qua lệnh hoặc ở cửa sổ thuộc tính (Property Windows).Các thuộc tính:AutoPostBack: Thuộc tính này qui định điều khiển có được phép tự động PostBack vềServer khi chỉ số của mục chọn bị thay đổi. Giá trị mặc định của thuộc tính này là False -không tự động Postback.Items : Đây là tập hợp chứa các mục chọn của điều khiển. Ta có thể thêm vào mục chọnvào thời điểm thiết kế thông qua cửa sổ ListItem Collection Editor, hoặc thông qua lệnh.Rows: Qui định chiều cao của ListBox theo số dòng hiển thị.SelectionMode: Thuộc tính này xác định cách thức chọn các mục trong ListBox.SelectionMode chỉ được phép thay đổi trong quá trình thiết kế, vào lúc thực thi chươngtrình, thuộc tính này chỉ đọc.ooSingle: Chỉ được chọn một mục có trong danh sách (mặc định).Multiple: Cho phép chọn nhiều lựa chọn.Tìm hiểu về tập hợp ItemsoAdd: Thêm mục mới vào cuối danh sách, sử dụng phương thức Items.AddItems.Add();Insert: Thêm mục mới vào danh sách tại một vị trí nào đó, sử dụng phương thứcItems.InsertItems.Insert(,);Count: Trả về số mục (Item) có trong danh sách.Items.Count;Remove: Xóa đối tượng Item tại ra khỏi danh sách.Items.Remove();Trong trường hợp các đối tượng Item là kiểu chuỗi, ta truyền vào một chuỗi đểxóa. Nếu có nhiều giá trị giống nhau trong danh sách, chỉ có mục chọn đầu tiên bị xóa.RemoveAt: Xóa một item tại vị trí index ra khỏi danh sách.Items.RemoveAt();Clear: Phương thức Clear của tập hợp Items được dùng để xóa tất cả những Item cótrong danh sách. Cú phápXử lý mục chọnItems.Clear();Các thuộc tính sau sẽ giúp bạn xác định chỉ số, giá trị của mục đang được chọn. Trongtrường hợp điều khiển cho phép chọn nhiều, ta duyệt qua các Item trong tập hợp Items,oSử dụng thuộc tính Selected của đối tượng Items[i] để kiểm tra xem mục thứ i đócó được chọn hay không.www.Beenvn.comSelectedIndex: Cho biết chỉ số của mục được chọn. Trong trường hợp chọn nhiềumục, SelectedIndex sẽ trả về chỉ số mục chọn đầu tiên.SelectedItem: Cho biết mục được chọn. Trong trường hợp chọn nhiều mục,SelectedItem sẽ trả về mục chọn đầu tiên.Biên sọan: Dương Thành Phết Trang 26


Bài Giảng Môn Lập Trình Website ASP.NetSelectedValue: Cho biết giá trị của mục được chọn. Trong trường hợp chọn nhiềumục, SelectedValue sẽ trả về giá trị mục chọn đầu tiên.Ví dụ: Tạo Website Dulich gồm 1 listbox, 2 label , 1 Button trong đó điều khiển Listbox là điềukhiển danh sách lstKhu_dl: SelectionMode=Multiple ; Rows=4Khi thiết kế:Xử lý sự kiện:protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){lstDiadanh.Items.Add("Vịnh Hạ Long");lstDiadanh.Items.Add("Phan Thiết - Mũi Né");lstDiadanh.Items.Add("Nha Trang");lstDiadanh.Items.Add("Đà Lạt");lstDiadanh.Items.Add("Phú Quốc");lstDiadanh.Items.Add("Huế - Hội An");int n = lstDiadanh.Items.Count;lbSoDD.Text = n.ToString();}}protected void btChon_Click(object sender, EventArgs e){lbDiadanh.Text = "";for (int i = 0; i


Bài Giảng Môn Lập Trình Website ASP.Net7. Checkbox, RadioButtonCác thuộc tínhChecked: Cho biết trạng thái của mục chọn - có được chọn hay khôngTextAlign: Qui định vị trí hiển thị của điều khiển so với chuỗi văn bản.AutoPostBack: Thuộc tính này qui định điều khiển có được phép tự động PostBack vềServer khi các mục chọn của điều khiển bị thay đổi. Giá trị mặc định của thuộc tính nàylà False - không tự động Postback.GroupName (RadioButton): Tên nhóm. Thuộc tính này được sử dụng để nhóm các điềukhiển RadioButton lại thành 1 nhóm.Ví dụ: Nhóm các RadioButton Giới tính, Thu nhập, Nhóm Checkbox Ngoại ngữ8. CheckBoxList, RadioButtonListDanh sách các điều khiểnHai điều khiển này được dùng để tạo ra một nhóm các CheckBox/Radio Button. Do đâylà điều khiển danh sách nên nó cũng có thuộc tính Items chứa tập hợp các mục chọn nhưListBox/DropDownList. Các thao tác trên tập hợp Items, xử lý mục chọn cũng tương tự nhưListBox/DropDownList.Tạo mới: Kéo thả RadioButtonList (Hoặc CheckbocList) vào Formwww.Beenvn.com Chọn Edit ItemsBiên sọan: Dương Thành Phết Trang 28


Bài Giảng Môn Lập Trình Website ASP.Netb. Các thuộc tínhc. Ví dụRepeatColumns: Qui định số cột hiển thị.RepeatDirection: Qui định hình thức hiển thịoVertical: Theo chiều dọco Horizontal: Theo chiều ngangAutoPostBack: Thuộc tính này qui định điều khiển có được phép tự động PostBack vềServer khi các mục chọn của điều khiển bị thay đổi. Giá trị mặc định của thuộc tính nàylà False - không tự động Postback.Xử lý sự kiện:Private Sub rblThu_nhap_SelectedIndexChanged(…)…End SubKhi thi hành:lblThu_nhap.Text = "Bạn chọn thu nhập: " + rblThu_nhap.SelectedItem.Text;www.Beenvn.comVí dụ: Bổ sung thêm vào Website Dulich 1 trang Thongtincanhan gồm: 1 Textbox, 2RadioButton giới tính, 2 Checkbox ngọai ngữ, 3 radioButton thu nhập listbox, 2 label , 1RadioButtonList Trình độ, 1 Button Đăng ký.Biên sọan: Dương Thành Phết Trang 29


Bài Giảng Môn Lập Trình Website ASP.NetXử lý sự kiện:protected void Button1_Click(object sender, EventArgs e){string ten="",gt="", ngoaingu="", thunhap="", trinhdo="";ten = txtTen.Text;if (rdtNu.Checked == true)gt = "Nữ";elsegt = "Nam";if (chkAnh_van.Checked == true)ngoaingu = " Tiếng anh ";if (ChkPhap_van.Checked == true)ngoaingu = ngoaingu + " Tiếng pháp ";if (rdtThu_nhapA.Checked == true)thunhap = " 1 triệu ";else if (rdtThu_nhapB.Checked == true)thunhap = " từ 1 đến 3 triệu";elsethunhap = " trên 3 triệu ";trinhdo = rdblistTrinhdo.SelectedItem.Value;lbThongtin.Text = "THÔNG TIN VỀ BẠN Tên: " + ten+ " Giới tính:" + gt + " Ngoại ngữ :"+ ngoaingu + " Mức thu nhập:" + thunhap+ " Trình độ:" + trinhdo ;}Khi thi hành:www.Beenvn.comBiên sọan: Dương Thành Phết Trang 30


Bài Giảng Môn Lập Trình Website ASP.NetII. Điều khiển kiểm tra dữ liệuTrong phần này chúng ta sẽ tìm hiểu về các điều khiển được dùng để kiểm tra dữ liệu.Như các bạn đã biết, mỗi khi PostBack về Server, trang Web luôn kiểm tra tính hợp lệdữ liệu (nếu có yêu cầu khi thiết kế). Nếu dữ liệu không hợp lệ (bỏ trống, vi phạm miền giá trị,mật khẩu nhập lại không đúng, …), trang web sẽ không thể PostBack về Server.iều Ví dụ: Minh họa thuộc tính Display: Tại ô nhập lại mật khẩu, ta có 2 điều khiển kiểm tra dữliệu: một điều khiển kiểm tra không được phép rỗng (rfvNhap_lai), một điều khiển kiểm tra xemnhập lại mật khẩu có giống với mật khẩu đã nhập ở trên hay không.www.Beenvn.comrfvNhap_lai.Display = StaticBiên sọan: Dương Thành Phết Trang 31


Bài Giảng Môn Lập Trình Website ASP.NetrfvNhap_lai.Display = Dynamic1. Điều khiển Required Field ValidatorThuộc tínhĐiều khiển này được dùng để kiểm tra giá trị trong điều khiển phải được nhập.Sử dụng điều khiển này để kiểm tra ràng buộc dữ liệu khác rỗng (bắt buộc nhập).InitialValue: Giá trị khởi động. Giá trị bạn nhập vào phải khác với giá trị của thuộc tínhnày. Giá trị mặc định của thuộc tính này là chuỗi rỗng.2. Điều khiển Compare ValidatorĐiều khiển này được dùng để so sánh giá trị của một điều khiển với giá trị của một điềukhiển khác hoặc một giá trị được xác định trước.Thông qua thuộc tính Operator, chúng ta có thể thực hiện các phép so sánh như: =, ,>, >=,


Bài Giảng Môn Lập Trình Website ASP.Neto GreaterThanEqual: >=o LessThan:


Bài Giảng Môn Lập Trình Website ASP.NetBảng mô tả các ký hiệu thường sử dụng trong Validation Expression5. Điều khiển Custom ValidatorSự kiệnĐiều khiển này cho phép bạn tự viết hàm xử lý kiểm tra lỗi.ServerValidate: Đặt các xử lý kiểm tra dữ liệu trong sự kiện này. Việc kiểm tra này đượcthực hiện ở Server.Ví dụ: Xử lý kiểm tra dữ liệu nhập tại điều khiển txtSoA có phải là số chẵn hay không.6. Điều khiển Validation SummaryĐiều khiển này được dùng để hiển thị ra bảng lỗi - tất cả các lỗi hiện có trên trang Web.Nếu điều khiển nào có dữ liệu không hợp lệ, chuỗi thông báo lỗi - giá trị thuộc tínhErrorMessage của Validation Control sẽ được hiển thị. Nếu giá trị của thuộc tính ErrorMessagekhông được xác định, thông báo lỗi đó sẽ không được xuất hiện trong bảng lỗi.www.Beenvn.comCác thuộc tínhHeaderText: Dòng tiêu đề của thông báo lỗiBiên sọan: Dương Thành Phết Trang 34


Bài Giảng Môn Lập Trình Website ASP.NetShowMessageBox: Qui định bảng thông báo lỗi có được phép hiển thị như cửa sổMessageBox hay không. Giá trị mặc định của thuộc tính này là False - không hiển thị.ShowSummary: Qui định bảng thông báo lỗi có được phép hiển thị hay không. Giá trịmặc định của thuộc tính này là True - được phép hiển thị.Ví dụ: Tạo Website Dangkythanhvien Sử dụng các điều khiển ValidateControl.Trong ví dụ dưới đây, chúng ta thực hiện kiểm tra dữ liệu nhập trên các điều khiển cótrong hồ sơ đăng ký khách hàng.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 35


Bài Giảng Môn Lập Trình Website ASP.NetThuộc tính Text của các điều khiển kiểm tra dữ liệu đều là: (*)Xử lý sự kiện:Private Sub butDang_ky_Click(…)…End SublblThong_bao.Text = "Đăng ký thành công";Các thông báo lỗi xuất hiện trên màn hình nhập liệu khi dữ liệu nhập không hợp lệ.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 36


Bài Giảng Môn Lập Trình Website ASP.NetCác thông báo lỗi xuất hiện qua hộp thoại khi dữ liệu nhập không hợp lệ:Nếu tất cả đều hợp lệwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 37


Bài Giảng Môn Lập Trình Website ASP.NetIII. Một số điều khiển khác1. Điều khiển LiteralTương tự như điều khiển Label, điều khiển Literal cũng được sử dụng để hiển thị chuỗivăn bản trên trang Web.Nếu muốn hiển thị một chuỗi văn bản trên trang Web, chúng ta có thể đánh nội dungtrực tiếp vào trang Web mà không cần phải sử dụng điều khiển. Chỉ sử dụng các điều khiểnnhư Label, Literal để hiển thị khi cần thay đổi nội dung hiển thị ở phía server.Điểm khác biệt chính giữa Label và Literal là khi hiển thị nội dung lên trang web (lúc thihành), điều khiển Literal không tạo thêm một tag Html nào cả, còn Label sẽ tạo ra một tag span(được sử dụng để lập trình ở phía client).Ví dụ:Lệnh xử lý:Khi thiết kế.Khi thi hànhprotected void Page_Load(object sender, EventArgs e){}Label1.Text="Đây là chuỗi ký tự trong label";Literal1.Text = " Đây là chuỗi ký tự trong Literial";Chọn chức năng từ thực đơn View | Source trên Browser:Đây là chuỗi ký tự tronglabel Đây là chuỗi ký tự trong Literial2. Điều khiển AdRotatorĐiều khiển AdRotator được dùng để tạo ra các banner quảng cáo cho trang web, nó tựđộng thay đổi các hình ảnh (đã được thiết lập trước) mỗi khi có yêu cầu, PostBack về server.a. Thuộc tínhAdvertisementFile: Tên tập tin dữ liệu (dưới dạng xml) cho điều khiển. Dưới đây là cúpháp của tập tin Advertisement (*.xml)Đường dẫn đến tập tin hình ảnhwww.Beenvn.comĐường dẫn đến liên kếtChuỗi văn bản được hiển thị như TooltipTừ khóa dùng để lọc hình ảnhBiên sọan: Dương Thành Phết Trang 38


Bài Giảng Môn Lập Trình Website ASP.NetTần suất hiển thị của hình ảnhLưu ý: Phải nhập đúng các giá trị trong tag như mẫu trên. Các giá trị trong tag có phân biệt chữHoa chữ thường. Trong đóImageUrl: Đường dẫn đến một tập tin hình ảnhNavigateUrl: Đường dẫn đến trang web sẽ được liên kết đến khi người dùng nhấn vàohình ảnh đang hiển thị. AlternateText: Giá trị này sẽ được hiển thị nếu như đường dẫn đến tập tin hình ảnh(qua thuộc tính NavigateUrl) không tồn tại. Đối với một số trình duyệt, tham số này đượchiển thị như ToolTip của hình quảng cáo.Keyword: Được dùng để phân loại các quảng cáo. Thông qua giá trị này, ta có thể lọccác quảng cáo theo một điều kiện nào đó.Impressions: Tham số này quyết định tầng suất hiển thị của hình ảnh. Giá trị này cànglớn, khả năng hiển thị càng nhiều.KeywordFilter: Được dùng để chọn lọc và hiển thị những hình quảng cáo có giá trị củatham số Keyword = giá trị của tham số này.Giá trị của tham số này mặc định không được thiết lập Hiển thị tất cả những hình cótrong tập tin XML. Trong trường hợp nếu không có hình nào có giá trị Keyword bằng giá trịcủa thuộc tính này, sẽ không có hình nào được hiển thị.Target: Qui định cửa sổ hiển thị trang liên kết_blank: Trang liên kết sẽ được mở ở một cửa sổ mới._self: Trang liên kết sẽ được mở ở chính cửa sổ chứa điều khiển. _parent: Trang liên kết sẽ được mở ở cửa sổ cha.b. Sự kiện AdCreated: Xảy ra khi điều khiển tạo ra các quảng cáo.Ví dụ: Tạo Website Quangcao (Tạo Quảng cáo sử dụng điều khiển AdRotator)Bước 1. Thiết kế giao diệnBước 2. Tạo tập tin dữ liệu: Quangcao.xmlooSử dụng chức năng Add New Item… từ thực đơn ngữ cảnhChọn XML File trong hộp thoại Add New Itemwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 39


Bài Giảng Môn Lập Trình Website ASP.NetooNhập vào cú pháp qui định cho tập tin Quangcao.xml (theo cú pháp của tập tinAdvertisement)Pictures\Baihatviet.gifhttp://www.Baihatviet.netWeb Nhạc bài hátviệtMusic10Chuyển màn hình qua trang Data, nhập liệu trực tiếp trên màn hình này• Click phải màn hình đang code chọn View Data GridNhập thêm các liên kết quảng cáo sau:www.Beenvn.comBiên sọan: Dương Thành Phết Trang 40


Bài Giảng Môn Lập Trình Website ASP.NetBước 3. Thiết lập thuộc tính cho điều khiển adQuangcaooooAdvertisementFile: Quangcao.xmlTarget: _blank (Khi nhấn vào sẽ hiển thị liên kết ở cửa sổ mới.)KeywordFilter: Không thiết lập (Hiển thị tất cả các hình ảnh)Bước 4. Thi hành ứng dụng3. Điều khiển CalendarMột điều chắc chắn rằng điều khiển Calendar đã quá quen thuộc với các bạn lập trìnhứng dụng trên windows, nó có giao diện trực quan, vì vậy, người dùng có thể chọn ngày dễdàng.a. Thuộc tínhb. Sự kiệnDayHeaderStyle: Qui định hình thức hiển thị tiêu đề của các ngày trong tuầnDayStyle: Qui định hình thức hiển thị của các ngày trong điều khiển.NextPrevStyle: Qui định hình thức hiển thị của tháng trước/sau của tháng đang đượcchọn.SeleltedDayStyle: Qui định hình thức hiển thị của ngày đang được chọn.SeleltedDate: Giá trị ngày được chọn trên điều khiểnTitleStyle: Qui định hình thức hiển thị dòng tiêu đề của tháng được chọnTodayDayStyle: Qui định hình thức hiển thị của ngày hiện hành (trên server).WeekendDayStyle: Qui định hình thức hiển thị của các ngày cuối tuần (thứ 7, chủ nhật)OtherMonthDayStyle: Qui định hình thức hiển thị của các ngày không nằm trong thánghiện hành.SelectionChanged: Sự kiện này xảy ra khi bạn chọn một ngày khác với giá trị ngày đangđược chọn hiện hànhVisibleMonthChanged: Xự kiện này xảy ra khi bạn chọn tháng khác với tháng hiện hànhwww.Beenvn.comVí dụ: Tạo trang CalendardBước 1: Tạo Calendard vào trangBiên sọan: Dương Thành Phết Trang 41


Bài Giảng Môn Lập Trình Website ASP.NetBước 2: Chọn Auto Format (Chọn mẫu định dạng)Xử lý sự kiện:Khi thiết kếprotected void Page_Load(object sender, EventArgs e) {}lbNgay.Text = "Hôm nay ngày " + DateTime.Today.ToString ("dd/MM/yyyy");protected void Calendar1_SelectionChanged1(object sender, EventArgs e) {}lbThongbao.Text ="Bạn đang chọn " + Calendar1.SelectedDate.ToString("dd/MM/yyyy");www.Beenvn.comBiên sọan: Dương Thành Phết Trang 42


Bài Giảng Môn Lập Trình Website ASP.Net4. Điều khiển File Upload.Khi thi hànhĐiều khiển FileUpload cho phép người sử dụng Upload file từ chính ứng dụng Web củamình. File sau khi Upload có thể lưu trữ ở 1 nơi nào đó có thể là trên ổ cứng hay trongDatabase. Điều khiển FileUpload hỗ trợ các thuộc tính sau:Thuộc tínhEnableFileBytesFileContentFileNameHasFileÝ nghĩaCho phép bạn vô hiệu hoá điều khiển FileUpload.Cho phép lấy nội dung file đã được upload như một mảng Byte.Cho phép lấy nội dung của file đã được upload theo dòng dữ liệuLấy tên file được UploadTrả về giá trị đúng khi File được UploadĐiều khiển FileUpload hỗ trợ các phương thứcooFocus: Enables you to shift the form focus to the FileUpload control.SaveAs: Cho phép bạn lưu file được upload lên hệ thống.Thuộc tính PostedFile của điều khiển FileUpload cho phép lấy thông tin từ File uploadđược bao bọc trong đối tượng HttpPostedFile. đối tượng này sẽ đưa thêm thông tin về Uploadfile.Lớp HttpPostedFile gồm các thuộc tính sau:ooooContentLength: Lấy về kích thước của File Upload tính theo byteContentType: Lấy kiểu MIME của File UploadFileName: Cho phép lấy tên của file được upload.InputStream: Enables you to retrieve the uploaded file as a stream.www.Beenvn.comLớp HttpPostedFile chỉ hỗ trợ phương thứcoSaveAs: Cho phép bạn lưu file được upload lên hệ thống.Biên sọan: Dương Thành Phết Trang 43


Bài Giảng Môn Lập Trình Website ASP.NetVí dụ: Trong ví dụ sau, chúng ta sẽ thực hiện Upload tập tin lên server, cụ thể hơn, tập tin vừaUpload sẽ được lưu trong thư mục Upload.Xử lý sự kiện:}Màn hình ở chế độ thiết kếprotected void Button1_Click(object sender, EventArgs e) {Khi thi hành:string sTenfile ;//Tách lấy tên tập tinsTenfile = FileUpload1.FileName;//Thực hiện chép tập tin lên thư mục UploadFileUpload1.SaveAs(MapPath("~/Upload/" + sTenfile));lbThongbao.Text = "Đã upload thành công" ;Nếu thành công5. Điều khiển Panel và PlaceHolderHai điều khiển Panel và PlaceHolder được sử dùng để chứa các điều khiển khác. Thuộctính thường dùng của 2 điều khiển này là Visible. Nếu giá trị của thuộc tính này = True, cácđiều khiển chứa bên trong sẽ được hiển thị, ngược lại (Visible = False), không có điều khiểnnào chứa bên trong được hiển thị.Tuy nhiên, điều khiển Panel cho phép chúng ta kéo những điều khiển vào bên trong nólúc thiết kế, còn điều khiển PlaceHolder thì không.Các thuộc tính:DefaultButton: Cho phép bạn định nghĩa một button mặc định trong panel màbutton mặc định này sẽ được thực hiện khi bạn nhấn phím Enter.Direction: Cho phép bạn gán hoặc thiết đặt hướng hiển thị nội dung được đưa ratrong panel, có thể là các giá trị:NotSet, LeftToRight, and RightToLeft.www.Beenvn.comGroupingText: Cho phép bạn trình bày Panel như 1 Fieldset với một chú giải riêngbiệt.HorizontalAlign: Cho phép bạn chỉ ra hướng ngang thể hiện nội dung của panelvà nó có thẻ là các giá trị: Center, Justify, Left, NotSet, and Right.Biên sọan: Dương Thành Phết Trang 44


Bài Giảng Môn Lập Trình Website ASP.NetScrollBars: Cho phép bạn hiển thị scrollbars khi bạn cố định chiều cao hoặc chiềurộng của panel và nội dung trong panel vượt quá độ rộng hoặc độ cao đó, nó cóthể là các giá trị: Auto, Both, Horizontal, None, and Vertical.Ví dụ: Tao trang sử dụng Panel gồm: 1 panelpage chứa 1 panelsothich va 1 panel nghenghiep,trong panel sothich có vài checkbox, trong panel nghề nghệp hiện thị 100 nghề (Nghề 1, Nghề2, . . .) được điền vào khi trang được load.Thêm vào panelpage 2 check box: chkSothich và chkNghenghiep. Khi trang hiện thịngười dùng đánh check hoặc bỏ check vào checkbox nào thì panel tương ứng sẽ hiện hoặc ẩn.Thiết kế:Xử lý sự kiện:Thi hành:protected void Page_Load(object sender, EventArgs e){for (int i = 1; i < 100; i++){buletnghenghiep.Items.Add("Nghề "+i.ToString());}}protected void chkhtsothich_CheckedChanged(. . . .){if (chksothich.Checked == true)panelsothich.Visible = true;elsepanelsothich.Visible = false;}protected void chkhtnghenghiep_CheckedChanged(. . . ){if (chknghenghiep.Checked == true)panelnghenghiep.Visible = true;elsepanelnghenghiep.Visible = false;}www.Beenvn.comBiên sọan: Dương Thành Phết Trang 45


Bài Giảng Môn Lập Trình Website ASP.Net6. Điều khiển hiển thị các trang – MultiViewĐiều khiển MultiView cho phép bạn ẩn hoặc hiện các phần khác nhau của trang Web,điều khiển này tiện ích khi bạn tạo một TabPage. Nó thực sự tiện ích khi bạn muốn chia 1 trangweb có độ dài lớn thành các phần để hiển thị.Điều khiển MultiView chứa đựng 1 hoặc nhiều điều khiển View, bạn sử dụng Multiviewđể lựa chọn các điều khiển View để trình bày.Điều khiển MultiView hỗ trợ các thuộc tính.ActiveViewIndex: Lựa chọn điều khiển View được đưa ra hiển thị bằng chỉ sốIndexViews: Cho phép bạn lấy về tập hợp các điều khiển View chứa đựng trong điềukhiển MultiView.Điều khiển MultiView hỗ trợ hai phương thức.GetActiveView: Cho phép lấy về thông tin của điều khiển View được lựa chọn.SetActiveView: cho phép bạn thiết lập điều khiển View được hiên thị.Và MultiView hỗ trợ sự kiện sau:ActiveViewChanged: Xảy ra khi điều khiển View được lựa chọnVí dụ: Tạo 1 website MultiView: Sử dụng MultiView kết hợp với điều khiển Menu để tạo mộtTabPageThiết kếTrên trang thiết kế tạo: 1 Multiview1 bên trong gồm 3 View (View1 View2, View3)Tạo Control Menu1 từ nhóm Control Navigation : Gồm 3 Tab (Tab1, Tab2, Tab3)www.Beenvn.comoTạo Control Menu vào FormBiên sọan: Dương Thành Phết Trang 46


Bài Giảng Môn Lập Trình Website ASP.NetooChọn Edit Menu ItemLần lượt khái báo các nhãn (Text) là: Tab 1, Tab 2, Tab 3 và các giá trị(Value) tương ứng là: 0 , 1, 2Thuộc tính Orientation: Horizaltal (Menu hướng ngang)Bổ sung nội dung vào các view tương ứngXử lý sự kiệnvoid Menu1_MenuItemClick(object sender, MenuEventArgs e){int index = int.Parse(e.Item.Value);MultiView1.ActiveViewIndex = index;}void Page_Load(object sender, EventArgs e){if (!IsPostBack){www.Beenvn.comBiên sọan: Dương Thành Phết Trang 47


Bài Giảng Môn Lập Trình Website ASP.NetThi hành:}MultiView1.ActiveViewIndex = 0;}www.Beenvn.comBiên sọan: Dương Thành Phết Trang 48


Bài Giảng Môn Lập Trình Website ASP.NetIII. Đối Tượng View StateĐối tượng ViewState được cung cấp để lưu lại những thông tin của trang web sau khiweb server gởi kết quả về cho Client. Mặc định, các trang web khi được tạo sẽ cho phép sửdụng đối tượng ViewState thông qua thuộc tính EnableViewState (của trang web) = True.Gán giá trị cho ViewState:ViewState("Tên trạng thái") = ;Nhận giá trị từ đối tượng ViewState:Ví dụ: = ViewState("Tên trạng thái");Xử lý sự kiện:protected void btDem_Click(object sender, EventArgs e){lbThongbao.Text =Convert.ToString(int.Parse(lbThongbao.Text)+1);}Về bản chất, các giá trị trong đối tượng ViewState được lưu trong một điều khiển hiddenvà các giá trị này đã được mã hóa. Đối tượng ViewState giúp chúng ta giảm bớt công sứctrong việc lưu trữ và truy xuất các thông tin mà không phải sử dụng nhiều điều khiển hidden.Chọn chức năng View | Source từ browserwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 49


Bài Giảng Môn Lập Trình Website ASP.NetIV. Thiết kế Website với MasterPageMasterPage là cách để thiết kế layout chung cho website. Ví dụ website của bạn có layoutgồm 5 phần banner, footer, left, right Và content(phần chứa nội dung hiển thị cho các tin). Tathấy rằng trên trang web có các phần có cách trình bày không thay đổi trong quá trình duyệt tin.banner, footer, left, right: bạn có thể để các phần này vào một MasterPage và tất các trang webtrong website của bạn sẽ áp dụng layout này thông qua contentpageTạo MasterPageTạo MasterPage giống với tạo các trang aspx bình thường nhưng trên hộp Add NewItem bạn chọn MasterPage bạn thấy dưới ô đặt tên phần mở rộng của nó sẽ là Master. Bạn cóthể tạo nhiều MasterPage cho ứng dụng web của mình.Xóa Place Holder hiện có và dùng table thiết kế layout như sau:www.Beenvn.comBiên sọan: Dương Thành Phết Trang 50


Bài Giảng Môn Lập Trình Website ASP.Net Tạo phần banner (Phần trên)Tạo phần Menu (Cột trái)Tạo phần quảng cáo (Cột phải)Tạo phần footer (Phần dưới)Tạo phần nội dung (Giữa): Đặt ContetPalceHolderSử dụng trang Masterpage để thiết kế các trangTạo mới trang web Default.aspx và trang Tintuc.aspxwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 51


Bài Giảng Môn Lập Trình Website ASP.NetĐiều chỉnh MasterPageKhi có bất kỳ sự điều chỉnh nào trên trang Masterpage thì các trang được tạo từ trangMasterpage sẽ tự cập nhật.Ví dụ: Bổ sung vào phần trái của trang Masterpage 2 nhãn liên kết (Hyperlink) mơ 2trang tương ứng đã tạo (Default.aspx và Tintuc.aspx)www.Beenvn.comBiên sọan: Dương Thành Phết Trang 52


Bài Giảng Môn Lập Trình Website ASP.NetKết quả khi thi hànhwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 53


Bài Giảng Môn Lập Trình Website ASP.NetChương 3KẾT NỐI CƠ SỞ DỮ LIỆU TRONG ASP.NETI. SQL DATA SOURCE1. Giới thiệuSử dụng các thành phần kết nối CSDL như : SQLDataSource, Access DataSource, XML Data Source, . . .Cách truyền tham số vào các điều khiểnĐiều khiển SqlDataSource dung để kết nối CSDL nếu dữ liệu của ứng dụng được lưutrữ trong các hệ quản trị CSDL như: SQLServer, Ocracle Server, . . .Chọn đối tượng CSDL như Table, View hay câu lệnh truy vấn SQL và có thể khai báođiều kiện lọc dữ liệu (Where) với nhiều cách như: giá trị định sẳn, đối tượng Session,Request.form, Request.QueryString . . .2. Kết nối và trình bày CSDLa. Tạo kết nốiTạo trang aspx và kéo điều khiển SQLDataSource từ ngăn data trên thanh TollboxChọn tiếp vào Conigure Data SourceNếu trước đó đã có tạo kết nối CSDL thì chọn vào Combobox để chọn CSDL đã kết nối.Để tạo mới kết nối CSDL thì chọn New Connectionwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 54


Bài Giảng Môn Lập Trình Website ASP.NetTạo kết nối CSDL mớiwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 55


Bài Giảng Môn Lập Trình Website ASP.NetKhai báo các thông số cho SQLServer và chọn CSDL cần kết nối• Chọn Next• Chọn NextKiểm tra kết quả kết nối• Xác định nguồn dữ liệu từ Table, Quyery hay câu lệnh truy vấn có thể chỉđịnh điều kiện lọc dữ liệu và sắp xếp.www.Beenvn.comChỉ định các cột dữ liệuBiên sọan: Dương Thành Phết Trang 56


Bài Giảng Môn Lập Trình Website ASP.NetKhai báo điều kiện mệnh đề Where (Nếu có)Khai báo sắp xếp (Nếu cần)www.Beenvn.com• Chọn Test Query để kiểm tra kết quả nguồn dữ liệu. Chọn Finishđể hòan thànhBiên sọan: Dương Thành Phết Trang 57


Bài Giảng Môn Lập Trình Website ASP.NetPhần mã của giao tiếp này có được như sau:b. Trình bày dữ liệu lên trangĐể trình bày dữ liệu trên Webform sau khi thực hiện kết nối CSDL ta sẽ sử dụng trìnhđiều khiển lưới Gridview.Tạo Gridview vào trang từ ngăn Data trên Thanh ToolboxChọn Choose DataSource là: SqldataSource1 đã tạoGhi chú:Chọn mẫu định dạng lưới: Auto FormatĐể tạo phân trang dữ liệu: Đánh dấu chọn : Enable Pagingwww.Beenvn.comĐể cho phép sắp xếp khi click vào tiếu đề cột đánh dấu chọn: EnableSortingBiên sọan: Dương Thành Phết Trang 58


Bài Giảng Môn Lập Trình Website ASP.NetThi hành tarng DSTacgia.aspx: Click tiêu đề lưới để kiểm tra tính sắp xếpClick số thứ tự trang (Cuối lưới) để kiểm tra tính phân trang3. Điều khiển SQL Data Source và tham số.a. Điều khiển SQL DataSource và Request.QueryStringĐể lọc dữ liệu trong nguồn dữ liệu theo điều kiện thì giá trị tham số có thể được gán trựctiếp thông qua đối tượng Request.Querystring (Truyền tham số qua liên kết trang.)Tạo trang cho phép truyền tham số qua liên kết.Khi click vào liên kết trang liên kết có địa chỉ kèm theo tham số dạng như sau:Thực hiện:ohttp://localhost:49222/KetnoiCSDL/SachNXB.aspx?MaNXB=3Tạo trang NhaXB.aspx với nguồn dữ liệu là tòan bộ danh mục nhà xúât bản đượctrình bày trên lưới GridView như sauwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 59


Bài Giảng Môn Lập Trình Website ASP.Neto Điều chỉnh bổ sung và lưới 1 cột liên kếtChọn Edit Column từ GiridView TaskThực hiện bổ sung 1 cột dạng HyperLinkFieldVới các thuộc tính:• HeaderText: Nhãn tiêu đề cột• Text: Nhãn hiện thị trong cột (Giống nhau trên tất cả các ô) Hoặc• DatTextField: Dùng giá trị từ 1 field chỉ định trong nguồn dữ liệu• DataNavigateUrlFields: Danh mục tên các tham số ghi cách nhau bởi dấu ,• DataNavigateUrlFormatting: Địa chỉ trang liên kết kèm tham số dạng~/SachNXB.aspx?MaNXB={0}www.Beenvn.comTrong đó giá trị tham số ghi dưới dạng chỉ số các tham số được khai báotrong thuộc tính DataNavigateUrlFields bắt đầu là 0 và cách nhau là dấu ,Biên sọan: Dương Thành Phết Trang 60


Bài Giảng Môn Lập Trình Website ASP.NetThi hành:Tạo trang hiện thị dữ liệu với nguồn dữ liệu có tham số qua liên kết(Request.QueryString).Chỉ định nguồn dữ liệuwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 61


Bài Giảng Môn Lập Trình Website ASP.NetKhai báo điều kiện (Where) với tham số là QueryString. Đặt tên QueryStringField là:MaNXB AddThi hành :Trang NhaXB.aspxClick vào liên kết Xem sách của 1 nhà xuất bản (VD: Với MaNXB là 2) Các sách của Nhà xuất bản tương ứng sẽ được trình bàyb. Điều khiển SQL DataSource và Request.FormĐể lọc dữ liệu trong nguồn dữ liệu theo điều kiện thì giá trị tham số là giá trị trên form.Tạo trang Lietkesach.aspx gồm:ooo1 Control Textbox chỉ định thuộc tính ID: MaNXB1 Button chỉ định thuộc tính PostbackURL: ~/Lietkesach.aspx (Chính trang thiếtkế)Tạo SqlDataSource với nguồn dữ liệu như sau:www.Beenvn.comBiên sọan: Dương Thành Phết Trang 62


Bài Giảng Môn Lập Trình Website ASP.NetoĐiều kiện cho nguồn dữ liệuVới giá trị điều kiện Form field là: MaNXB (tên Textbx trên trang)Thực thi:Nhập MANXB vào textbox Click nút Xemwww.Beenvn.comc. Điều khiển SQL DataSource và điều khiển trình chủBiên sọan: Dương Thành Phết Trang 63


Bài Giảng Môn Lập Trình Website ASP.NetTa có thể khai báo tham số trong điều khiển SqlDataSource mà giá trị được lấy từ điềukhiển trình chủVì dụ thiết kế trang Chudesach.aspx thực hiện liệt kê danh mục sách có chủ đề đượcchọn từ điều khiển trình chủ DropdownList.Thiết kế Dropdownlist (ddlChude) với nguồn dữ liệu cho từ Table ChudeooTạo SQL DataSource (SqlDataSource1) cho DropDownList Với nguồn dữ liệu choDropDownList là Table Chude:Tạo DropDownList vào trang đặt thuộc tính• ID: ddlChude• DataSourceID: SqlDataSource1• DataTextField: TenCD (Field hiện thị)• AutoPostBack: True• DataValuefield: MaCD (Field giá trị để truyền tham số)www.Beenvn.comTạo GridView (GridView1) Với nguồn dữ liệu từ Table SachBiên sọan: Dương Thành Phết Trang 64


Bài Giảng Môn Lập Trình Website ASP.NetoVà tham số điều kiện (Where)Thi hành: Chọn 1 chủ đề sách từ DropdownList thì các sách tương ứng của chủđề sẽ hiển thị.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 65


Bài Giảng Môn Lập Trình Website ASP.Netd. Điều khiển SQL DataSource và thủ tục nội tạiTương tự như trường hợp kết nối CSDL bằng phát biểu SQL ta có thể sử dụng điềukhiển kết nối CSDL SqlDatasource để truy cập CSDL SQL Server bằng thủ tục nội tại (StoredProcedure)Ví dụ trong CSDL SQLServer QLBanSach ta tạo 1 thủ tục (Stored Procedure)Sachtheogia cho phép liệt kê các quyển sách với 2 tham số cho Procedure là Giatu và Giaden.Use QLBansachCreate Proc Sachtheogia@Giatu int, @Giaden IntasSelect Masach, Tensach, Dongia, Mota, Tenchude, TenNXB,NgaycapnhatFrom sach s, Chude c, nhaxuatban nWhere c.MaCD=s.MaCD and n.MaNXB=s.MaNXB and Dongia Between @Giatu and@GiadenLưu ý : Trong thủ tục có khai báo 2 tham số tên @Giatu và @GiadenKhi cấu hình Data Source cho điều khiển SqlDataSourcewww.Beenvn.comBiên sọan: Dương Thành Phết Trang 66


Bài Giảng Môn Lập Trình Website ASP.NetTa chọn : Specify a Custom SQL satament or stored procedureTiếp tục chọn Stored Procedure cần kết nối.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 67


Bài Giảng Môn Lập Trình Website ASP.NetXác định giá trị cho tham số của Procedure có thể là: Giá trị trực tiếp, QueryString, Form,hay điều khiển trình chủ (Ví dụ sử dụng điều khiển trình chủ DropDownlist1,DropDownList2 tương ứng 2 tham số Giatu và Giaden)Thi hành:www.Beenvn.comHãy Click chọn Giá từ DropDownList1 và Giá đến DropDownList2thì các sách thõa điềukiện giá sẽ hiện thị tương ứng vào GridViewBiên sọan: Dương Thành Phết Trang 68


Bài Giảng Môn Lập Trình Website ASP.NetII. KẾT NỐI CƠ SỞ DỮ LIỆU VỚI ACCESS, XML1. Điều khiển Access Data SourceTương tự như điều khiển kết nối cơ sở dữ liêu SQLDataSource dùng để kết nối với cơsở dữ liệu SQLserver điều khiển kết nối cơ sở dữ liệu AccessDataSource dùng để kết nốivới cơ sở dữ liệu Access MDB).Như vây khi có nhu cấu kết nối với CSDL Acces ta dùng điều khiển AccessDataSourcetừ ngăn Data trên thanh Toolbox.Ví dụ thiết kế trang DanhsachKH.aspx truy xuất và hiện thị Danh sách khách hang từTable khachhang của CSDL QLBansach.mdb (Access)Tạo AccessDataSource vào trangChọn Configure Data Source . . .: Để thực hiện kết nốiChọn Nút Browse để tìm và chọn CSDL Access : QLBansach (Thông thướng được tổchức lưu trữ trong thư mục App_Data của ứng dụng)www.Beenvn.comBiên sọan: Dương Thành Phết Trang 69


Bài Giảng Môn Lập Trình Website ASP.NetChọn Ok và chọn Next để tiếp tụcXác định nguồn dữ liệu (Khai báo điều kiện và sắp xếp nếu có) tiếp tục chọn NextChọn Test Query để xem kết quả, chọn Finish để hòan tấtwww.Beenvn.comTạo điều khiển lưới gridView và chỉ định nguồn dữ liệu là AccessdataSource1 vừa tạo.Biên sọan: Dương Thành Phết Trang 70


Bài Giảng Môn Lập Trình Website ASP.NetThi hành xem kết quảGhi chú:Để truyền giá trị cho các tham số theo các hình thức: Form, QueryString, Control, . . . takhai báo tương tự như sử dụng điều khiển SQLDataSource .2. Điều khiển XML DataSourceNgòai các điều khiển kết nối CSDL SQLDataSource, AccessDataSource chúng ta có thểsử dụng điều khiển kết nối CSDL định dạng XML.Tuy nhiên khác với SQLDataSource, AccessDataSource khi sử dụng điều khiểnXMDataSource ta cần có tập tin XML.Sử dụng điều khiển XMLDataSource từ ngăn Data trên thanh Toolbox.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 71


Bài Giảng Môn Lập Trình Website ASP.NetVí dụ thiết kế trang DanhsachSV.aspx hiện thị từ tập tin XML (DanhsachSV.XML)Tạo tập tin DanhsachSV.XMLTriệu gọi trang DanhsaxhSV.xml lên trình duyệt có kết quả như sau:Tạo điều khiển XMLDataSource vào trang DanhsachSV.aspxChọn Configure Data Source . . .: Để thực hiện kết nốiwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 72


Bài Giảng Môn Lập Trình Website ASP.NetChọn Nút Browse để tìm và chọn tập tin DanhsachSV.Chọn Ok để hòan tấtTạo điều khiển lưới gridView và chỉ định nguồn dữ liệu là AccessdataSource1 vừa tạo.Thi hành xem kết quảwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 73


Bài Giảng Môn Lập Trình Website ASP.NetIII. KẾT NỐI VÀ CẬP NHẬT CSDLSQLDataSource và Access DataSource ngoài chức năng thong thường cho phép tạo kếtnối CSDL và truy xúât dữ liệu còn cho thực hiện các thao tác cập nhật dữ liệu như: Thêm, Xóa,Sửa (Insert, Update. Delete)Ví dụ minh họa: Thực hiện chức năng “Nhập sách mới” vào Table Sach CSDL trongQLBansach.SachTrang web được thiết kế với các Control tương ứng dư liệu cần nhập mới vào TableTạo Control SqlDataSource vào trang Tạo kết nối với CSDL QLBansach choSqlDataSourceoChọn “Specify columns from a table or view”www.Beenvn.comBiên sọan: Dương Thành Phết Trang 74


Bài Giảng Môn Lập Trình Website ASP.NetoooooName: SachColumns : chọn tất cả các cột cần nhập mới dữ liệu tương ứngChọn Advanced … Chọn “Generate INSERT, UPDATE, and DELETE statements”(Tự động tạo các câu truy vấn INSERT, UPDATE, DELETE)Click Next FinishPhải chuột SqlDataSource1, chọn Property, chọn thuộc tínho “InsertQuery” : Câu lệnh nhập liệuooDeleteQuery: Câu lệnh xóa dữ liệuUpdateQuery: Câu lệnh cập nhật sự điều chỉnh dữ liệu.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 75


Bài Giảng Môn Lập Trình Website ASP.NetoViết hàm xử lý sự kiện click cho nút Lưuprotected void btnLuu_Click(object sender, EventArgs e){SqlDataSource1.Insert();}oChạy và kiểm tra chương trình.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 77


Bài Giảng Môn Lập Trình Website ASP.NetChương 4I. Điều khiển GridViewCÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆUSử dụng các điều khiển GridView, Data List và Repeater để hiển thị dữ liệu.GridView là một điều khiển khá linh hoạt và hiệu quả trong việc hiển thị, định dạng vàthao tác với dữ liệu. Bên cạnh đó, chúng ta có thể thực hiện sắp xếp dữ liệu, thực hiện phântrang với sự hỗ trợ khá tốt của VS .Net trong quá trình thiết kế.1. Tạo GridView vào trangKéo Control GridView vào trangChèn them cột mớiTạo các cột tùy biến2. Định dạng tự độngThực hiện chọn những mẫu định dạng có sẳn quy định về khung viền màu nên bằngcách Chọn Auto Format từ khung DataGrid Task3. Kết nối nguồn dữ liệuKết nối nguồn dữ liệuĐiều chỉnh các cộtThực hiện kết nối nguồn dữ liệu với cơ sở dữ liệu Access, SQLServer, . .Trong cửa sổ DataGrid Task tại mục Choose Data Source chọn : New Data Sourcewww.Beenvn.comBiên sọan: Dương Thành Phết Trang 78


Bài Giảng Môn Lập Trình Website ASP.NetoVới CSDL AccessVới CSDL AccessTìm chọn tập tin CSDL AccessXác định nguồn dữ liệu từ Table, Quyery hay câu lệnh truy vấn có thể chỉ địnhđiều kiện lọc dữ liệu và sắp xếp.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 79


Bài Giảng Môn Lập Trình Website ASP.NetthànhoChọn Test Query để kiểm tra kết quả nguồn dữ liệu. Chọn Finish để hòanVới CSDL SQLServerKhai báo tham số điều kiệnChỉ định sắp xếpwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 80


Bài Giảng Môn Lập Trình Website ASP.NetVới CSDL SQLServer 2000/2005Tạo kết nối CSDL mớiKhai báo các thông số và chọn CSDL cần kết nốiwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 81


Bài Giảng Môn Lập Trình Website ASP.Net• Chọn OkKiểm tra kết quả kết nối• Xác định nguồn dữ liệu từ Table, Quyery hay câu lệnh truy vấn có thể chỉđịnh điều kiện lọc dữ liệu và sắp xếp.Khai báo tham số điều kiệnChỉ định sắp xếpwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 82


Bài Giảng Môn Lập Trình Website ASP.Net- Chọn Test Query để kiểm tra kết quả nguồn dữ liệu. Chọn Finish để hòan thànhThi hành xem kết quả:4. Thêm cộtTrong cửa sổ DataGrid Task chọn : Add New ColumnChọn Loại field cần tạo : BoundFieldKhai báo tiêu đề côt : Header TextChỉ định tên field dữ liệu: DataFieldwww.Beenvn.comOk hòan thànhBiên sọan: Dương Thành Phết Trang 83


Bài Giảng Môn Lập Trình Website ASP.Net5. Hiệu chỉnh, Tạo mới các cộtTrong cửa sổ DataGrid Task chọn : Edit ColumnAvailableFields: Chọn lọai Field liên kết dữ liệuoooooBoundField: Cột có liên kết với nguồn dữ liệu dạng Textbox.Checkbox Field: Cột có liên kết với nguồn dữ liệu dạng Checkbox.Hyperlink Field: Cột có liên kết dữ liệu dạng liên kết.Button Field: Cột dạng nút lệnhCommandField: Cột dạng nút lệnh đã được thiết kế sẵn. Điều khiểnGridView cung cấp cho chúng ta 3 loại cột dạng này:• Select: Nút lệnh chọn dòng dữ liệu• Edit, Cancel, Update: Các nút lệnh hỗ trợ chức năng cập nhật dữliệu trực tiếp trên lưới.• Delete: Nút lệnh xóa dòng dữ liệuChúng ta sẽ có dịp tìm hiểu kỹ hơn về các nút lệnh này trong phầnCập nhật dữ liệu trực tiếp trên lưới.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 84


Bài Giảng Môn Lập Trình Website ASP.NetoTemplateField: Cột do người dùng tự thiết kế. Đây là loại cột có khả nănglàm việc khá linh họat.Ví dụ bạn cần hiển thị danh sách khách hàng. Tại cột Phái, bạnmuốn hiển thị dạng Nam/Nữ. Chúng ta sẽ tìm hiểu sâu hơn về TemplateColumn ở phần sau.BoundColumn properties: Qui định thông tin chi tiết cho các cộtooooooHeaderText, Footer Text: Thông tin tiêu đề trên/dưới của cộtHeader Image: Hình hiển thị trên tiêu đề cột (thay thế thông tin tiêu đề cột - HeaderText).Sort Expression: Biểu thức sắp xếp của cột.Visible: Qui định cột có được hiển thị hay không.DataField: Qui định tên field hay tên thuộc tính của đối tượng dữ liệu cần hiển thị.Data formatting expression: Biểu thức định dạng dữ liệu.Mẫu định dạng: {0:}. Ví dụ:+ Định dạng số: {0:000.00}, {0:0.##}+ Định dạng ngày giờ: {0:dd/MM/yyyy}, {0:hh/mm/ss tt}Convert this Field into a Template Column: Chuyển cột hiện hành thành cột dạng TemplateColumn.6. Thiết lập các thuộc tính định dạng lướiĐể thực hiện các thao tác thiết lập các thuộc tính, chúng ta chọn GridView Properties.Hiện / Ẩn : Header / Footer - Phần đầu và chân của GridViewooShow header: Qui định dòng tiêu đề trên có được phép hiển thị hay không. (mặcđịnh là có hiển thị dòng tiêu đề)Show footer: Qui định dòng tiêu đề dưới có được phép hiển thị hay không. (mặcđịnh là không hiển thị dòng tiêu đề dưới)Định dạng dòng Header/Footer: HeaderStyle / FooterStylewww.Beenvn.comĐịnh dạng dòng dữ liệu lẽ/chẵn: RowStyleAlternatingRowStyleBiên sọan: Dương Thành Phết Trang 85


Bài Giảng Môn Lập Trình Website ASP.NetSắp xếp: AllowSortingAllow sorting: Có cho phép sắp xếp dữ liệu hay không. (mặc định là không chophép sắp xếp)Phân trang: AlowPagingoĐịnh dạng cho phân trang• Page size: Qui định số dòng của mỗi trang.• Possition: Qui định vị trí hiển thị của bộ nút di chuyển. Ở phía trên thanhtiêu đề, ở phía dưới hay cả hai.• Mode: Qui định hình thức hiển thị của bộ nút di chuyển. Hiển thị dạng sốtrang hay là các chuỗi ký tự đại diện (Next page/Previous page button text).Trong trường hợp hiển thị dạng số, Numeric buttons qui định số nút lệnhđược hiển thị tối đa.www.Beenvn.comGoogle hiển thị kết quả được phân trang theo dạng sốBiên sọan: Dương Thành Phết Trang 86


Bài Giảng Môn Lập Trình Website ASP.NetII. Điều khiển DataList1. Sử dụng DataList để hiển thị dữ liệuNhư điều khiển Gridview, điều khiển DataList được sử dụng để hiển thị dữ liệu. Tuynhiên, đối với DataList, chúng ta phải tự thiết kế hình thức hiển thị dữ liệu (giống như TemplateColumn của GridView).www.Beenvn.comBiên sọan: Dương Thành Phết Trang 87


Bài Giảng Môn Lập Trình Website ASP.NetSử dụng DataList hiển thị thông tin sáchMột số thuộc tính cần chú ý của DataListRepeatDirection: Qui định hướng hiển thị dữ liệuooHorizontal: Hiển thị dữ liệu theo chiều ngangVertical (mặc định): Hiển thị dữ liệu theo chiều đứngRepeatColumns: Qui định số cột hiển thị của DataListThiết kế hình thức hiển thị cho DataList cũng tương tự như thiết kế cho cột TemplateColumn của GridViewChọn Edit Template từ thực đơn ngữ cảnh để thực hiện thiết kế hình thức hiển thị choDataList.Ghi chú:Chọn chức năng thiết kế cho DataListwww.Beenvn.comTrong quá trình thực hành, để công việc thiết kế được dễ dàng, các bạn thực hiện thiếtkế ở bên ngoài điều khiển DataList. Sử dụng Table để định vị trí hiển thị của các điều khiển.Sau khi hoàn tất công việc thiết kế, chúng ta kéo kết quả đã thiết kế vào vị trí cần hiển thị trongDataList.Biên sọan: Dương Thành Phết Trang 88


Bài Giảng Môn Lập Trình Website ASP.NetVí dụ: Hiển thị thông tin sách với DataListIII. Điều khiển RepeaterThiết kế thông tin sách với DataListKết quả trên trang WebNhư 2 điều khiển DataList & DataGrid, điều khiển Repeater cũng được dùng để hiển thịdữ liệu. Tuy nhiên, để hiển thị dữ liệu, chúng ta phải tự thiết kế hình thức hiển thị thông qua cáctag HTML.Điều khiển Repeater có các tag sau: (tùy chọn)Qui định hình thức hiển thị cho tiêu đề. (Chỉ xuất hiện 1 lần, phía trên của điều khiển) (Bắt buộc phải có)Qui định hình thức hiển thị cho các mục dữ liệu trong điều khiển. (tùy chọn)Qui định hình thức hiển thị cho các mục dữ liệu trong điều khiển. Nội dung được quiđịnh trong cặp tag này sẽ hiển thị xen kẽ với các nội dung trong cặp tagwww.Beenvn.com (tùy chọn)Biên sọan: Dương Thành Phết Trang 89


Bài Giảng Môn Lập Trình Website ASP.NetQui định hình thức hiển thị giữa các dòng dữ liệu (tùy chọn)Qui định hình thức hiển thị cho tiêu đề dưới. (Chỉ xuất hiện 1 lần, phía dưới củađiều khiển)Ví dụ:Bước 1. Tạo mới điều khiển Repeater: rptChudesach vào trang Web.Điều khiển rptChudesach trên trang WebBước 2. Kết nối và tạo nguồn dữ liệu cho điều khiển từ Table Chude với các cột: MaCD,Tenchude.Bước 3:. Chuyển qua xem trang Web dưới dạng HTMLBước 3. Bổ sung các tag sauMã CĐTên chủ đề www.Beenvn.comBước 4. Xem lại màn hình thiết kế và thực thi kết quả.Biên sọan: Dương Thành Phết Trang 90


Bài Giảng Môn Lập Trình Website ASP.NetV. Sử dụng DetailView và FormViewHai điều khiển này cho phép bạn làm việc với một trường dữ liệu đơn tại mỗi thời điểmCả hai điều khiển này cho phép bản thay đổi, thêm mới hay xoá dữ liệu như một bản ghi cơ sởdữ liệu, và nó cho phép bạn chuyển sang trang tiếp theo hay quay lại trang trước thông quathiết lập dữ liệu.1. DetailViewa. Hiển thị dữ liệu với DetailViewmột bản ghi.DetailView được đưa ra hiển thị như một bảng() trong HTML để hiển thị dữ liệuVí dụ: Trang XemthongtinKH.aspxb. Sử dụng Fields với điều khiển DetailViewDetailView hỗ trợ tất cả các Field như GridViewoooBoundField: cho phép bạn hiển thị giá trị của dữ liệu như TextCheckBoxField: hiển thị dữ liệu dưới dạng một CheckBoxCommandField: hiển thị liên kết cho phép chỉnh sửa, thêm mới, xoá dữ liệu.o ButtonField: hiển thị dữ liệu như một button(ImageButton, )oooHyperLinkField: hiển thị môt liên kếtImageField: hiển thị ảnhTemplateField: cho phép hiển thị các đìều khiển tuỳ biến.www.Beenvn.comc. Xử lý phân trang với điều khiển DetailViewBiên sọan: Dương Thành Phết Trang 91


Bài Giảng Môn Lập Trình Website ASP.NetĐể tạo phân trang chỉ định thuộc tính AllowPaging=”true” cho điều khiển DetailView. Vớicác thuộc tính định dạng thuộc nhóm thuộc tính: Pagersettingsd. Minh họa:Trong ví dụ trên bạn liên kết dữ liệu với Table Khachhang đưa vào 5 BoundField và mộtCheckBoxField, điền vào dữ liệu với thuộc tính DataField và thiết đặt cho nó tiêu dề vớiHeaderText. Tạo phân trang và định dạng trình bày tại góc trên bên phải. Kết xuất của chươngtrình2. DetailViewa. Hiển thị dữ liệu với FormViewFormView được đưa ra hiển thị dữ liệu với các điều khiển tùy biến để hiển thị dữ liệumột bản ghi. Ví dụ: Trang XemthongtinNXB.aspxb. Trình bày dữ liệu sử dụng Edit TemplateFormView hỗ trợ trình bày dữ liệu dạng tùy biến cho tất cả các Field DataListoTạo FormView vào trang và lien kết dữ liệuoTại cửa sổ thiết kế chọn Edit Tempalte từ cửa sổ FormView Taskwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 92


Bài Giảng Môn Lập Trình Website ASP.NetoThiết kế trình bày với các Control điều khiển tương tự như khi thiết kế DataListvới các điều khiển tùy biếnc. Xử lý phân trang với điều khiển DetailViewĐể tạo phân trang chỉ định thuộc tính AllowPaging=”true” cho điều khiển DetailView. Vớicác thuộc tính định dạng thuộc nhóm thuộc tính: Pagersettingsd. Minh họa:Trong ví dụ trên bạn liên kết dữ liệu với Table NhaXuatBan đưa vào 4 Label, điền vàodữ liệu với thuộc tính Text cho các File tương tứng và thiết đặt cho nó tiêu dề với HeaderText.Tạo phân trang và định dạng trình bày tại phía dưới giữa trangKết xuất của chương trìnhwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 93


Bài Giảng Môn Lập Trình Website ASP.NetChương 5I. Tìm hiểu về ADO.NETXỬ LÝ DỮ LIỆU VỚI ADO.NETHầu hết ứng dụng hay các website đều cần phải có cơ sở dữ liệu, để lưu trữ dữ liệu, xửlý thông tin và đưa ra các báo cáo, hỗ trợ tìm kiếm… Khi dữ liệu trở thành trung tâm của ứngdụng thì cung cấp các chức năng tới người dùng phụ thuộc vào khả năng thao tác dữ liệu, vấnđề mà người thiết kế và người xây dựng ứng dụng quan tâm khi sử dụng dữ liệu là:Lưu dữ liệu tập trungĐảm bảo toàn vẹn dữ liệuĐảm bảo khả năng truy xuất đồng thời của nhiều người dùng trên dữ liệuĐảm bảo thời gian hồi đáp ngắn cho mỗi người dùngBảo mật dữ liệuTrao đổi dữ liệu giữa các hệ thống khác nhauNhững vấn đề này được giải quyết dựa vào khả năng của các hệ quản trị cơ sở dữliệu(HQT CSDL) và các phần mềm xử lý dữ liệu do HQT CSDL cung cấp..Net truy xuất dữ liệu qua ADO.NET, đặc điểm chính của ADO.NET là khả năng làmviệc với dữ liệu không kết nối, dữ liệu được lưu trữ trong bộ nhớ như một csdl thu nhỏ gọi làdataset, nhằm tăng tốc độ tính toán, xử lý tính toán và hạn chế sử dụng tài nguyên trênDatabase Server.Đặc điểm quan trọng thứ 2 là khả năng xử lý dữ liệu chuẩn XML, dữ liệu ở dạng XMl cóthể trao đổi giữa bất kỳ hệ thống nào nên ứng dụng của bạn sẽ có nhiều khả năng làm việc vớinhiều ứng dụng khác.1. Kiến trúc ADO .NetKiến trúc ADO.NET có thể chia làm 2 phần chính:- Managed Provider Component: bao gồm các đối tượng như DataAdapter, DataReader,…giữ nhiệm vụ làm việc trực tiếp với dữ liệu như database, file,…www.Beenvn.com- Content Component: bao gồm các đối tượng như DataSet, DataTable,… đại diện cho dữliệu thực sự cần làm việc.Biên sọan: Dương Thành Phết Trang 94


Bài Giảng Môn Lập Trình Website ASP.NetoooDataReader là đối tượng mới, giúp truy cập dữ liệu nhanh chóng nhưng forward-onlyvà read-only giống như ADO RecordSet sử dụng Server cursor, OpenFowardOnly vàLockReadOnly.DataSet cũng là một đối tượng mới, không chỉ là dữ liệu, DataSet có thể coi là mộtbản sao gọn nhẹ của CSDL trong bộ nhớ với nhiều bảng và các mối quan hệ.DataAdapter là đối tượng kết nối giữa DataSet và CSDL, nó bao gồm 2 đối tượngConnection và Command để cung cấp dữ liệu cho DataSet cũng như cập nhật dữliệu từ DataSet xuống CSDL.2. Minh họa tạo kết nối cơ sở dữ liệuusing System;using System.Data;using System.Data.SqlClient;public partial class vd1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");//Mở kết nốicnn.Open();//Command điều khiển truy vấn sqlSqlCommand cmd = cnn.CreateCommand();cmd.CommandText = "select HotenKH from Khachhang where MaKH=5";//lấy về chuỗi giá trị trong cơ sở dữ liệustring result = (string)cmd.ExecuteScalar();//đóng kết nốicnn.Close();//in giá trị ra màn hìnhResponse.Write(result);}}Thi hànhCơ bản các bước thực hiện với database• Bước 1: Tạo kết nối• Bước 2: Mở kết nối dữ liệuwww.Beenvn.com• Bước 3: Tạo lệnh điều khiển truy vấn SQL• Bước 4: Thực thi lệnh• Bước 5: Đóng kết nối• Bước 6: in kết quảBiên sọan: Dương Thành Phết Trang 95


Bài Giảng Môn Lập Trình Website ASP.NetII. Các đối tượng trong ADO.Net1. Đối tượng ConnectionVai trò của Connection trong ADO.net là tạo kết nối giữa ứng dụng với nguồn dữliệu(CSDL)Data Provider :ooSystem.Data.Oledb : Sử dụng với AccessSystem.Data.SqlClient : Sử dụng với SQLServerỨng với mỗi tên miến ta có một connection tương ứng:ooSystem.Data.Oledb.OledbConnectionSystem.Data.SqlClient.SqlConnectionNgòai ra Ado.net còn hỗ trợ các Data Provider khác nhưoooConnection StringSystem.data.OcracleClient : Dành cho OcracleMicroSoft.data.Odbc : Dành cho dạng kết nối thong qua Odbc Connectionủa Hệđiều hànhMicrosoft.Data.Sqlxml: Dành cho XML trên SqlserverTrước khi thực hiện kết nối Connectionần khai báo các thong tin cho Connectionthông qua thuộc tính Connection String. Cách khai báo thay đổi tùy thuộc vào DataProvider. Gồm có các thành phần sau:oNếu kết nối với CSDL AccessProvider: Khai báo Data Provider Connectionủa Hệ QT CSDL AccessData Source: Nguồn dữ liệu (Tên CSDL.mdb)User ID: Tên người dùngPassword : Mật khẩuVí dụ: Tạo kết nối với CSDL Accessusing System;using System.Data;using System.Data.OleDb;public partial class VD2 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionString StrCnn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/QLBansach.mdb");OleDbConnection cnn = new OleDbConnection (StrCnn);//Mở kết nốicnn.Open();//Command điều khiển truy vấn sqlOleDbCommand cmd = cnn.CreateCommand();cmd.CommandText = "select HotenKH from Khachhang where MaKH=2";//lấy về chuỗi giá trị trong cơ sở dữ liệustring result = (string)cmd.ExecuteScalar();//đóng kết nốicnn.Close();//in giá trị ra màn hìnhResponse.Write(result);}}www.Beenvn.comBiên sọan: Dương Thành Phết Trang 96


Bài Giảng Môn Lập Trình Website ASP.Neto Nếu kết nối với CSDL SQLServerProvider: Khai báo Data Provider Connectionủa Hệ QT CSDL SQLServerData Source:Tên máy cài đặt SQLServerInitial Catalog: Tên CSDLUser ID: Tên người dùngPassword : Mật khẩuCác thuộc tính Của ConnectionooooCác phương thứcDataBase: : Tương ứng với Initial Catalog(SQL) hay tên CSDL muốn làm việc(Access)DataSource: Tương ứng với DataSource Tên máy SQL hay tên CSDLProvider: Tương ứng với ProviderState: Tình trạng kết nối Connectionủa Connection với các giá trịBroken: Kết nối đã bị ngắt chỉ xảy ra sau khi đã kết nốiClosed: Kết nối đã đóngConnecting: Đang kết nốiExecuting: Kết nối đang thực hiện một lệnhFetching: Kết nối đang truy xuất dữ liệuOpen: Kết nối đang mởChange Databse: Thay đổi DataBase làm việcClose : Đóng kết nối sử dụng đóng Connection đang mởDispose: Xóa tòan bộ tài nguyên liên quan đấn Connection trên vùng nhớ.Open: Thực hiện kết nối Connectionới các thông tin đã khai báo trongConnectionStringVí dụ: Kiểm tra kết nối với CSDL SQLServerprotected void Button1_Click(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=;Initial Catalog=QLbansach;User ID=sa;Password=");//Mở kết nốicnn.Open();TextBox1.Text = "State = " + cnn.State; ;// Thực hiện các câu lệnh SELECT, INSERT, DELETE, UPDATE.cnn.Close();//Đóng kết nối}www.Beenvn.comBiên sọan: Dương Thành Phết Trang 97


Bài Giảng Môn Lập Trình Website ASP.Net2. Đối tượng CommandSau khi tạo kết nối với nguồn dữ liệu, mọi thao tác với nguồn dữ liệu đó đều được thựchiện thông qua Command. Tùy theo loại Connection đối tượng Command thuộc tên miền nhưsau:System.Data.OleDb.OleDbCommandSystem.Data.SqlClient.SqlCommandTạo CommandChúng ta có thể tạo Command thông qua đối tượng Connection bàng cách: As New ;.Connection=;.CommandText=;Hoặc As New Command();.Connection=;Các thuộc tínhParametersCommandText : Lệnh SQL hay tên Stored Procedure muốn thực hiện trên nguồn dữ liệuCommandType: Giá trị cho biết nội dugn Commandtext là gì:Text: (Mặc định) là câu lệnh SQLStoredProcedure: Tên thủ tụcTableDirect: Tên Connectionủa tableVD:SqlCommand cmd As SqlCommand = New SqlCommand();cmd.Connection = cnn;cmd.CommandType = CommandType.Text;cmd.CommandText = "Select* From Khachhang Where MaKH=2";Lệnh SQL trong commandText có thể sử dụng dấu ? thay cho trị chưa xác định và khithực hiện sẽ dùng đối tượng Parameters để truyền gái trị vào dấu ? . Tùy theo CommandParameter sẽ khai báo từ lớp OledbParameter hay SqlParameter. Cú pháp khai báo sau:OleDbParameter | SqlParameter AsOleDbParameter | SqlParameter AsOleDbParameter | SqlParameter AsCác thuộc tính cần chú ý:Direction : Giá trị cho biết lọai tham sốNew OleDbParameter | SqlParameter();New OleDbparameter | SqlParameter();New OleDbParameter | SqlParamter(,);www.Beenvn.comInput: (mặc định) Loại tham số đầu vàoInputOutput: Loại tham số đầu vào và raOutput: Loại tham số đầu raBiên sọan: Dương Thành Phết Trang 98


Bài Giảng Môn Lập Trình Website ASP.NetReturnValue: Loại tham số nhận giá trị trả về Connectionủa một thủ tụcOleDbType / SqlDbType: Kiểu dữ liệu OleDb hay SQLDb Connectionủa tham số.ParameterName: Tên tham sốValue: Giá trị tham sốDùng phương thức CreateParameter và Add Command của tập hợp Parameters.VD: Khi sử dụng OleDbCommandcmd.CommandText=”Select * From Khachhang Where MaKH=?”;OleDbParameter Par As OleDbParameter= cmd.CreateParameter();Par.Value=”KH01”;;cmd.Parameters.Add(Par);VD: Khi sử dụng SqlDbCommandcmd.CommandText=”Select * From Khachhang Where MaKH=@MaKH”;SqlParameter Par As SqlParameter = cmd.CreateParameter();Par.ParameterName=”@MaKH”;Par.Value=”KH01”;cmd.Parameters.Add(Par);Đưa tham số vào tập hợp ParametersVD: Khi sử dụng OleDbCommandcmd.CommandText=”Select * From BangDiem Where Masv=? And MaMH=?”;OleDbParameter Par1 As OleDbParameter=Par1.Value=”SV01”OleDbParameter Par2 As OleDbParameter=Par2.Value=”MH01”VD: Khi sử dụng SqlDbCommandcmd.CreateParameters.Add(“Sinhvien”,OleDbType.Char,4);cmd.CreateParameters.Add(“Monhoc”,OleDbType.Char,4);cmd.CommandText=”Select * From BangDiem Where Masv=@MaSVSqlDbParameter Par1 As SqlDbParameter=Par1.Value=”SV01”SqlDbParameter Par2 As SqlDbParameter=Par2.Value=”MH01”;Tạo tham số và đưa vào tập hợp Parametersand MaMH = @MaMH ”;cmd.CreateParameters.Add(“@MaSV”,SqlType.Char,4);cmd.CreateParameters.Add(“@MaMH”,SqlType.Char,4);www.Beenvn.comVD: Procedure SpKetQuaThi Cần 2 tham số đầu vào: @MaSV , @MaMH và trảvề Điểm thi của Môn học Connectionủa sinh viên đó. Vì vậy chúng ta Connectionầntruyền 3 tham số: 1 trả về, 2 đưa vào. Tham số trả về phải được truyền cho Commandtrước tiênBiên sọan: Dương Thành Phết Trang 99


Bài Giảng Môn Lập Trình Website ASP.NetThực hiện Commandcmd.CommandText=”spKetQuaThi”;cmd.CommandType=CommandType.StoredProcedure;OleDbParameter ts3 As New OleDbParameter();ts3.Direction=ParameterDirection.ReturnValue;ts3.OleDbType=OleDn.OleDbType.Int;cmd.parameters.Add(ts3);OleDbParameter ts1 as OleDbParameter=Ts1.Value=”Sv01”;OleDbParameter ts2 as OleDbParameter=Ts1.Value=”MH01”;cmd.Parameters.Add(“@MaSV”,OleDbType.Char,4);cmd.Parameters.Add(“@MAMH”,OleDbType.Char,4);Phương thức ExecuteReader: Phương thức này trả về một đối tượng DataReader đểđọc dữ liệu mỗi lần một dòng với phương thức Read. DataReader đọc dữ liệu trực tiếp từnguốn dữ liệu nên phải duy trì kết nối đến khi đọc xong cú pháp.SqlDataReader As SqlDataReader; = .ExecuteReader;VD:SqlDataReader reader As SqlDataReader;reader = cmd.ExecuteReader;Phương thức ExcuteNoneQuery: Dùng để thực thi các phát biểu T-Sql như: Insert,Update, Delete, Create,…hàng.Phương thức ExcuteScalar: Trả về từ phát biết SQL dạng Select chỉ có một cột một3. Đối tượng DatareaderLà đối tượng truy cập dữ liệu trực tiếp, sử dụng con trỏ phía Server và duy trì kết nối vớiServer trong suốt quá trình đọc dữ liệu, DataReader thuộc tên miềnSystem.data.OleDbDatReader hoặc System.Data.SqlDataRaederCác thuộc tínhFieldCout: Số Connectionột trên dòng hiện hành của DataReaderIsClosed : Cho biết dataReader đã đóngItem:Trị của cột truyền vào. Tham số truyền vào là tên cột hoặc số thứ tự từ 0.Các phương thứcClose: Đóng DataReaderGetFieldType: Trả về kiểu dữ liệu của cột truyền vào.GetName: Trả về tên của cột truyền vàoGetValue: Tar3 về trị của cột truyền vàowww.Beenvn.comRead : Di chuyển đến dòng kế tiếp và trả về true nếu còn dòng để di chuyển,ngược lại trả về False.Trong khi dataReader đang mở các thao tác dữ liệu trên nguồn dữ liệu đều khôngthể cho đến khi dataRaeder đóng lại bằng lệnh Close.Biên sọan: Dương Thành Phết Trang 100


Bài Giảng Môn Lập Trình Website ASP.Net4. Đối tượng DataAdapterĐể lầy dữ liệu từ nguồn dữ liệu về cho ứng dụng, chúng ta sử dụng một đối tượng gọi làDataAdapter. Đối tượng này cho phép ta lấy cấu trúc và dữ liệu của các bảng trong nguồn dữliệu.DataAdapte là một bộ gồm 4 đối tượng:- SelectCommand: Cho phép lấy thông tin từ nguồn dữ liệu về.- InsertCommand cho phép thêm dữ liệu vào bảng trong nguồn dữ liệu.- UpdateCommand cho phép điều chỉnh dữ liệu của bảng trong nguồn dữ liệu.- DeleteCommand cho phép xóa dữ liệu của bảng trong nguồn dữ liệu.a. Tạo DataAdapterKhai báo rõ DataAdapter sử dụng theo DataProvider nào: sqlDataAdapter hayOledbDataAdapter hai lớp này thuộc tên miền:System.Data.OleDb.OleDbDataAdapterSystem.Data.SqlClient.SqlDataAdapterCú pháp tạo DataAdapterNew DataAdapter();New DataAdapter();: Có sẳn với nội dụng lệnh truy xuất.New DataAdapter(,)DataAdapter chỉ thao tác với một nguồn dữ liệu qua một đối tượng connection đang kếtnối, khi Connection chưa mở thì DataAdapter sẽ tự động mở kết nối khi cần và đóng lại.VD:OleDbDataAdapter DA As New OleDbDataAdapter();DA.SelectCommand.CommandText=”Select * From Sinhvien”;AD.SelectCommand.Connection.ConnectionString=”Provider=MicroSoft.Jet.OleDb.4.0;b. Các thuộc tín chính của DataAdapterData Source=c:\QuanLySV.mdb”;DeleteCommand : Đối tượng Command chứa nội dung lệnh hủy các mẫu tin trên nguồndữ liệu.InsertCommand : Đối tượng Command chứa nội dung lệnh thêm các mẫu tin trên nguồndữ liệu.SelectCommand: Đối tượng Command chứa nội dung lệnh truy xuất các mẫu tin trênnguồn dữ liệu.UpdateCommand : Đối tượng Command chứa nội dung lệnh sửa các mẫu tin trênnguồn dữ liệu.c. Các chức năng của DataAdapterwww.Beenvn.com- Lấy dữ liệu từ nguồn: Sử dụng DataAdapter để lấy dữ liệu về cho các đối tượngo DataTable: Fill()o DataSet: Fill() Dữ liệu lấy về DataSet dưới dạng cácdataTable với tên mặc định là: Table,Table1, Table2. . .:Biên sọan: Dương Thành Phết Trang 101


Bài Giảng Môn Lập Trình Website ASP.Neto Đổ dữ liệu vào Datset cho bảng DataTable nếu chưa có sẽ tạo mới:Fill(,)- Phương thức trả về mẫu tin lấy về đượcDim DS as New Dataset()Dim so As Integerso= DA.Fill(DS,”Sinhvien”)- Để cập nhật dữ liệu về nguồnUpdate(): Cập nhật các dòng (Các đối tượng DataRow) vào nguồn dữ liệu.Update(): Cập nhật các thay đổi trên tất cả các bảng của Dataset vào nguồndữ liệu.Update(): Cập nhật tất cả các thay đổi trên DataTable vào nguồn dữ liệu.Update(,) Cập nhật các they đổi trên bảng trong Dataset vàonguồn dữ liệu..5. Đối tượng DataSetDataset là một mô hình CSDL quan hệ thu nhỏ đáp ứng nhu cầu của ứng dụng.Dataset chứa các bảng (DataTable) các quanhệ (DataRelation) và các ràng buộc(constraint) Dataset thuộc tên miền: System.Data.Dataset.a. Khai báoHoặcNew System.Data.Dataset()New System.Data.Dataset()b. Các phương thức- Thêm một bảng vào DatasetTables.Add()Một bảng mới tự động được tạo ra với tên mặc định Table1, Table2 . . .Tables.Addd()Một bảng mới tạo ra theo đúng Ghi chú: Tên bảng có phân biệt chữ in, thường- Xóa bảng ra khỏi DatasetTables.Remove()Xóa bảng ra khỏi tập hợp Table.- Kiểm tra bảng có thuộc về DatasetTables.Contains()- Lấy chỉ số của bảngTables.IndexOf()- Lấy số bảng trong DatasetTables.Count- Lấy ra một bảng trong DatasetTables()www.Beenvn.comBiên sọan: Dương Thành Phết Trang 102


Bài Giảng Môn Lập Trình Website ASP.Net- Để cập nhật các thay đổi trên DatasetAcceptChanges()- Để hủy các thay đổi trên DatasetRejectChanges()- Để xóa bỏ mọi dữ liệu trên dataSetClear()- Để tạo một bản sau của DatasetClone()- Để xóa bỏ DatasetGọi phương thức Dispone để giải phóng mọi tài nguyên trên vùng nhớ Dataset đang sửdụng.- Tạo quan hệ giữa hai bảng trong Dataset.Relations.Add(,)- Xóa quan hệ giữa hai bảng trong Dataset.Relations.Remove()6. Đối tượng DatatableDữ liệu các bảng trong nguồn dữ liệu được lấy về và đưa vào các DataTable. DataTablethuộc tên miền : System.Data.dataTable.Cú pháp:New DataTable();New DataTable();DataTable được hình thành từ các DataColumn, DataRow.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 103


Bài Giảng Môn Lập Trình Website ASP.NetIII. Một số minh họa1. Kết nối cơ sở dữ liệuprotected void Button1_Click(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");//Mở kết nốicnn.Open();// Thực hiện các câu lệnh SELECT, INSERT, DELETE, UPDATE.TextBox1.Text = "State = " + cnn.State;}//Đóng kết nốicnn.Close();2. Kết nối, thao tác dữ liệu, sử dụng đối tượng Command với câu lệnh SELECTprotected void Button2_Click(object sender, EventArgs e){try{//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");}//Khai báo và khởi tạo biến CommandSqlCommand cmd = new SqlCommand();//Khai báo biến Command sử dụng Connection nào để đến database?cmd.Connection = cnn;//Biến Commnad thao tác với database bằng//(1.Câu lệnh, 2.Tên bảng, 3.Tên Store) nào?cmd.CommandText = "SELECT COUNT(*) FROM Chude";//Cho biết CommandText chính là câu lệnh.cmd.CommandType = CommandType.Text;//Mở kết nốicnn.Open();// Lấy dữ liệu về bằng phương thức ExecuteScalar.int count = (int)cmd.ExecuteScalar();//Xuất kết quả ra WebFormTextBox2.Text = count.ToString();//Đóng kết nối.cnn.Close();}catch (Exception){//Xuất kết quả ra WebFormTextBox2.Text = "Không thành công!";}3. Kết nối, thao tác dữ liệu, sử dụng đối tượng Command với câu lệnh INSERT,UPDATE, DELETEwww.Beenvn.comprotected void Button3_Click(object sender, EventArgs e){try{//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Biên sọan: Dương Thành Phết Trang 104


Bài Giảng Môn Lập Trình Website ASP.Net}Initial Catalog=QLbansach;User ID=sa;Password=");SqlCommand cmd = new SqlCommand();cmd.Connection = cnn;//Biến Commnad thao tác với database bằng câu lệnh//(INSERT, UPDATE, DELETE)cmd.CommandText = "INSERT INTO CHUDE(TenCD) VALUES(N'Văn hóa')";cmd.CommandType = CommandType.Text;cnn.Open();//Thao tác dữ liệu (INSERT, UPDATE, DELETE)//bằng phương thức ExecuteNonQuery.cmd.ExecuteNonQuery();//Xuất kết quả ra WebFormTextBox3.Text = "Thành công!";cnn.Close();}catch (Exception){//Xuất kết quả ra WebFormTextBox3.Text = "Không thành công!";}4. Kết nối, thao tác dữ liệu, sử dụng đối tượng Command với câu lệnh INSERT,UPDATE, DELETE + Truyền tham số.protected void Button4_Click(object sender, EventArgs e){try{//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");SqlCommand cmd = new SqlCommand();cmd.Connection = cnn;//Khai báo và khởi tạo tham sốSqlParameter parTenLinhVuc =new SqlParameter("@TENCHUDE", SqlDbType.NVarChar, 50);cmd.CommandText ="INSERT INTO CHUDE VALUES(@TENCHUDE)";cmd.CommandType = CommandType.Text;//Thêm biến tham số cho Commandcmd.Parameters.Add(parTenchude);//Gán giá trị cho biến tham sốparTenLinhVuc.Value = TextBox1.Text;cnn.Open();cmd.ExecuteNonQuery();cnn.Close();lbThongbao.Text = "Thành công!";}catch (Exception){lbThongbao.Text = "Không thành công!";}www.Beenvn.com}Biên sọan: Dương Thành Phết Trang 105


Bài Giảng Môn Lập Trình Website ASP.Net5. Kết nối, thao tác dữ liệu, sử dụng đối tượng Command với câu lệnh INSERT,UPDATE, DELETE + Truyền tham số.protected void Button5_Click(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");}SqlCommand cmd = new SqlCommand();cmd.Connection = cnn;cmd.CommandText = "SELECT * FROM Nhaxuatban";cmd.CommandType = CommandType.Text;cnn.Open();//Lấy danh sách nhà xuất bản bỏ vào biến DataReaderIDataReader dr = cmd.ExecuteReader();String list = "";//Duyệt qua DataReaderwhile (dr.Read()){list = list + dr["TenNXB"].ToString().Trim() + " ";}dr.Close();TextBox6.Text = list.ToString();cnn.Close();6. Kết nối cơ sở dữ liệu + gọi store để lấy dữ liệu.CREATE PROCEDURE GetNhaxuatbanASBEGINSELECT * FROM NhaxuatbanENDGOprotected void Button6_Click(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");SqlCommand cmd = new SqlCommand("Getnhaxuatban", cnn);cmd.Connection = cnn;cmd.CommandType = CommandType.StoredProcedure;cnn.Open();IDataReader dr = cmd.ExecuteReader();String list = "";while (dr.Read()){list = list + dr["TenNXB"].ToString();}dr.Close();TextBox7.Text = list.ToString();cnn.Close();www.Beenvn.com}7. Kết nối cơ sở dữ liệu + gọi store để lấy dữ liệu + truyền tham số.Biên sọan: Dương Thành Phết Trang 106


Bài Giảng Môn Lập Trình Website ASP.NetCREATE PROCEDURE GetchudeByMachude@Machude char(15)ASBEGINSELECT * FROM CHUDE WHERE MaCD=@MachudeENDGOprotected void Button7_Click(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");}SqlCommand cmd = new SqlCommand("GetchudeByMachude", cnn);cmd.Connection = cnn;cmd.CommandType = CommandType.StoredProcedure;//Khai báo và khởi tạo biến CommandSqlParameter parMALINHVUC =new SqlParameter("@Machude", SqlDbType.NChar, 10);parMAVHUDE.Value = TextBox1.Text;cmd.Parameters.Add(parMACHUDE);cnn.Open();IDataReader dr = cmd.ExecuteReader();String list = "";while (dr.Read()){list = list + dr["Tenchude"].ToString();}dr.Close();TextBox2.Text = list.ToString();cnn.Close();8. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + update dữ liệuprotected void Button8_Click(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");SqlDataAdapter da = new SqlDataAdapter("select * from CHUDE", cnn);SqlCommandBuilder commandBuilder = new SqlCommandBuilder(da);DataSet ds = new DataSet();da.Fill(ds);foreach (DataRow row in ds.Tables[0].Rows)if (row["MaCD"]=="1"){row["TENCHUDE"] = "BBB";}www.Beenvn.com}TextBox1.Text = ds.Tables[0].Rows[2].ItemArray[1].ToString();GridView1.DataSource = ds.Tables[0];GridView1.DataBind();//Không sử dụng SqlCommandBuilder thì không thể update dữ liệu.da.Update(ds);Biên sọan: Dương Thành Phết Trang 107


Bài Giảng Môn Lập Trình Website ASP.Net9. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + gọi storeprotected void Button9_Click(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");//Khai báo và khởi tạo SqlDataAdapterSqlDataAdapter da = new SqlDataAdapter("GETNHAXUATBAN", cnn);//Khai báo và khởi tạo DataSetDataSet ds = new DataSet();//Lấy dữ liệu trả về đổ vào dataset dsda.Fill(ds);TextBox11.Text = ds.Tables[0].Rows[2].ItemArray[1].ToString();GridView2.DataSource = ds.Tables[0];GridView2.DataBind();}10. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + gọi store + truyền tham sốprotected void Button10_Click(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");SqlCommand cmd = new SqlCommand("GetchudeByMachude", cnn);cmd.Connection = cnn;cmd.CommandType = CommandType.StoredProcedure;//Khai báo và khởi tạo tham sốSqlParameter parMACD =new SqlParameter("@MACD", SqlDbType.NChar, 10);parMACD.Value = "1";cmd.Parameters.Add(parMACD);cnn.Open();SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = cmd;DataSet ds = new DataSet();da.Fill(ds);GridView1.DataSource = ds.Tables[0];GridView1.DataBind();cnn.Close();}11. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + đối số là Commandprotected void Button10_Click(object sender, EventArgs e){//Khai báo và khởi tạo biến ConnectionSqlConnection cnn = new SqlConnection("Data Source=(local);Initial Catalog=QLbansach;User ID=sa;Password=");SqlCommand cmd = new SqlCommand("GETNHAXUATBAN ", cnn);cmd.Connection = cnn;cmd.CommandType = CommandType.StoredProcedure;cnn.Open();SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = cmd;//da.InsertCommand = cmd;//da.DeleteCommand = cmd;//da.UpdateCommand = cmd;DataSet ds = new DataSet();da.Fill(ds);GridView1.DataSource = ds.Tables[0];GridView1.DataBind();cnn.Close();}}www.Beenvn.comBiên sọan: Dương Thành Phết Trang 108


Bài Giảng Môn Lập Trình Website ASP.NetChương 4I. Điều khiển DataGridCÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆUSử dụng các điều khiển Data List, DataGrid và Repeater để hiển thị dữ liệu.Liên kết dữ liệu với các kiểu tập hợp:ArrayList, SortedList, HashTable, …DataGrid là một điều khiển khá linh hoạt và hiệu quả trong việc hiển thị, định dạng vàthao tác với dữ liệu. Bên cạnh đó, chúng ta có thể thực hiện sắp xếp dữ liệu, thực hiện phântrang với sự hỗ trợ khá tốt của VS .Net trong quá trình thiết kế.Bổ sung Control DataGrid vào Thanh ToolBox (Nếu chưa có): Click phải thanh toolboxchọn Choose Items.Đánh dấu vào mục DataGrid (System.Web.UI.WebControls) Ok1. Tạo DataGrid vào trangKéo Control DataGrid vào trangĐịnh dạng tự độngKết nối nguồn dữ liệuwww.Beenvn.comThiết lập thuộc tínhBiên sọan: Dương Thành Phết Trang 109


Bài Giảng Môn Lập Trình Website ASP.Net2. Định dạng tự độngThực hiện chọn những mẫu định dạng có sẳn quy định về khung viền màu nền bằngcách Chọn Auto Format từ khung DataGrid Task3. Kết nối nguồn dữ liệuChọn New Data Source từ mục Choose Data Sourcewww.Beenvn.comBiên sọan: Dương Thành Phết Trang 110


Bài Giảng Môn Lập Trình Website ASP.NetChọn lọai nguồn dữ liệu (DataBase)Đặt tên cho nguồn dữ liệu (Sieuthi)Chọn New Connection Chọn Microsoft SQL Server Continuewww.Beenvn.comBiên sọan: Dương Thành Phết Trang 111


Bài Giảng Môn Lập Trình Website ASP.NetKhai báo các thông số của CSDL => Chọn Test Connection để kiểm tra. Chọn Ok đểđồng ý kết nối.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 112


Bài Giảng Môn Lập Trình Website ASP.NetKhai báo dữ liệu cần truy xuất.Chọn Test Query để kiểm tra kết quả. Chọn Finish để hòan tất4. Thiết lập các thuộc tínhĐể thực hiện các thao tác thiết lập các thuộc tính, chúng ta chọn chức năng PropertyBuilder… từ khung DataGrid Task.www.Beenvn.coma. Trang GeneralTrong trang này, có các mục chọn sau:Biên sọan: Dương Thành Phết Trang 113


Bài Giảng Môn Lập Trình Website ASP.Net Show header: Qui định dòng tiêu đề trên có được phép hiển thị hay không. (mặc định làcó hiển thị dòng tiêu đề) Show footer: Qui định dòng tiêu đề dưới có được phép hiển thị hay không. (mặc định làkhông hiển thị dòng tiêu đề dưới) Allow sorting: Có cho phép sắp xếp dữ liệu hay không. (mặc định là không cho phép sắpxếp)Các mục chọn trong Tab Generalb. Trang Columns (Quản lý thông tin các cột)Trang Columns quản lý thông tin các cột sẽ hiển thị trên lưới.www.Beenvn.comTrang ColumnsBiên sọan: Dương Thành Phết Trang 114


Bài Giảng Môn Lập Trình Website ASP.Net Create columns automatically at runtime: Khi chọn chức năng này, DataGrid sẽ tựđộng phát sinh đầy đủ các cột có trong nguồn dữ liệu. Nếu chúng ta muốn quiđịnh các cột cần hiển thị, chúng ta không chọn chức năng này. Column list: Qui định các cột được hiển thị trong lưới.ooooBound Column: Cột có liên kết với nguồn dữ liệu.Button Column: Cột dạng nút lệnh đã được thiết kế sẵn. Điều khiểnDataGrid cung cấp cho chúng ta 3 loại cột dạng này:• Select: Nút lệnh chọn dòng dữ liệu• Edit, Cancel, Update: Các nút lệnh hỗ trợ chức năng cập nhật dữliệu trực tiếp trên lưới.• Delete: Nút lệnh xóa dòng dữ liệuChúng ta sẽ có dịp tìm hiểu kỹ hơn về các nút lệnh này trong phầnCập nhật dữ liệu trực tiếp trên lưới.Hyperlink Column: Cột có liên kết dữ liệu dạng liên kết.Template Column: Cột do người dùng tự thiết kế. Đây là loại cột có khảnăng làm việc khá linh họat.Ví dụ bạn cần hiển thị danh sách khách hàng. Tại cột Phái, bạnkhông muốn hiển thị Nam/Nữ, thay vào đó, bạn muốn hiển thị điều khiểncheckbox thay thế, nếu checkbox được chọn - thể hiện phái Nam vàngược lại. Trong tình huống này, TemplateColumn là sự chọn lựa tốt dànhcho bạn. Chúng ta sẽ tìm hiểu sâu hơn về Template Column ở phần sau.BoundColumn properties: Qui định thông tin chi tiết cho các cộtoHeaderText, Footer Text: Thông tin tiêu đề trên/dưới của cộto Header Image: Hình hiển thị trên tiêu đề cột (thay thế thông tin tiêu đề cột -Header Text).ooooooSort Expression: Biểu thức sắp xếp của cột.Visible: Qui định cột có được hiển thị hay không.DataField: Qui định tên field hay tên thuộc tính của đối tượng dữ liệu cần hiển thị.Data formatting expression: Biểu thức định dạng dữ liệu.Mẫu định dạng: {0:}. Ví dụ:+ Định dạng số: {0:000.00}, {0:0.##}+ Định dạng ngày giờ: {0:dd/MM/yyyy}, {0:hh/mm/ss tt}Read Only: Chọn giá trị này để cột chỉ được phép đọc, không cho phép cập nhậtdữ liệu.Convert this column into a Template Column: Chuyển cột hiện hành thành cộtdạng Template Column.c. Trang Paging (Quản lý phân trang)Trang này quản lý việc phân trang của DataGrid.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 115


Bài Giảng Môn Lập Trình Website ASP.Net Allow paging: Có cho phép phân trang hay không.Page size: Qui định số dòng của mỗi trang.Show navigation buttons: Có hiển thị bộ nút để di chuyển từ trang này qua trang kháchay không. Giá trị mặc định là True.Possition: Qui định vị trí hiển thị của bộ nút di chuyển. Ở phía trên thanh tiêu đề, ở phíadưới hay cả hai.Mode: Qui định hình thức hiển thị của bộ nút di chuyển. Hiển thị dạng số trang hay là cácchuỗi ký tự đại diện (Next page/Previous page button text). Trong trường hợp hiển thịdạng số, Numeric buttons qui định số nút lệnh được hiển thị tối đa.d. Trang Format (Định dạng)Google hiển thị kết quả được phân trang theo dạng sốTrang Format quản lý việc định dạng hiển thị trên điều khiển DataGrid. Các định dạngchung như: Màu chữ, màu nền, Font chữ, kích cỡ, in đậm /in nghiêng/gạch dưới và canh lề.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 116


Bài Giảng Môn Lập Trình Website ASP.NetTrang FormatDataGrid: Qui định các định dạng chung cho lướiHeader: Định dạng cho dòng tiêu đề.Footer: Định dạng cho dòng tiêu đề dưới.Pager: Định dạng cho dòng chứa các nút lệnh phân trang.ItemsooooNormal Items: Định dạng cho các dòng dữ liệu.Alternating Items: Định dạng hiển thị cho các dòng lẻ.Selected Items:Định dạng hiển thị cho dòng đang được chọn.Edit Mode Items: Định dạng hiển thị cho dòng đang ở trạng thái hiệu chỉnh dữliệu.Columns: Qui định độ rộng và các định dạng riêng cho từng cột.e. Trang Borders (Khung viền)Trang Borders quản lý việc kẻ khung viền cho lưới.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 117


Bài Giảng Môn Lập Trình Website ASP.NetThi hànhCell margino Cell padding: Qui định khoảng cách giữa nội dung trong ô với đường viền của ô.oCell spacing: Qui định khoảng cách giữa các ôwww.Beenvn.com2. Xử lý sắp xếpSắp xếp dữ liệu trên lưới là một công việc rất cần thiết đối với người sử dụng. Hãy thửtưởng tượng xem trong trường hợp chúng ta có khá nhiều dữ liệu hiển thị trên màn hình (giảsử là danh sách nhân viên chẳng hạn), thật khó để chọn ra các nhân viên có thâm niên làmBiên sọan: Dương Thành Phết Trang 118


Bài Giảng Môn Lập Trình Website ASP.Netviệc lâu nhất hay các nhân viên có số giờ tham gia đề án nhiều nhất…. Với chức năng sắp xếptrên lưới sẽ giúp cho người dùng dễ dàng chọn ra các nhân viên thỏa mãn các yêu cầu trên.Để thực hiện được thao tác sắp xếp dữ liệu trên lưới, chúng ta cần phải thực hiện cáccông việc sau:Giá trị thuộc tính Allow sorting = TrueNhập giá trị cho thuộc tính Sort expression của các cột cần sắp xếp.Xử lý sự kiện SortCommand(ByVal source As Object, ByVal e AsSystem.Web.UI.WebControls.DataGridSortCommandEventArgs)Trong sự kiện trên, giá trị e.SortExpression cho biết thông tin của cột được chọn sắp xếp.Ví dụ:Private Sub Page_Load(…) Handles MyBase.LoadEnd SubIf Not IsPostBack ThenEnd IfdtgKhach_hang.DataSource = Doc_ds_khach_hang()dtgKhach_hang.DataBind()Private Sub dtgKhach_hang_SortCommand(…,e …)…End SubdtgKhach_hang.DataSource = Doc_ds_khach_hang(e.SortExpression)dtgKhach_hang.DataBind()Public Function Doc_ds_khach_hang(Optional ByValwww.Beenvn.comEnd FunctionpChuoi_sap_xep As String = "") As DataTableDim sKet_noi As StringsKet_noi = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _Server.MapPath("..\Data\QlBanSach.mdb")Dim cnKet_noi As New OleDbConnection(sKet_noi)Dim dsCSDL As New DataSetDim sLenh_sql As String = "Select * From KHACH_HANG"sLenh_sql &= IIf(pChuoi_sap_xep = "", _"", " Order by " & pChuoi_sap_xep)'Mở và đóng kết nối ngay khi thực hiện xongcnKet_noi.Open()Dim daBo_doc_ghi As New OleDbDataAdapter(sLenh_sql, cnKet_noi)cnKet_noi.Close()daBo_doc_ghi.Fill(dsCSDL, "KHACH_HANG")Return dsCSDL.Tables("KHACH_HANG")Biên sọan: Dương Thành Phết Trang 119


Bài Giảng Môn Lập Trình Website ASP.NetSắp xếp khách hàng tăng dần theo tên3. Xử lý phân trangPhân trang dữ liệu không những giúp cho việc xem và tìm kiếm thông tin được dễ dàngmà còn giảm được khối lượng dữ liệu cần được truyền tải từ Server về Client. Việc phân trangtrong ASP.Net được thực hiện khá dễ dàng, chỉ với một số thao tác đơn giản.Để thực hiện phân trang, chúng ta cần phải thực hiện các công việc sau:Qui định các thông số cần thiết cho việc phân trang (xem Quản lý phân trang ở phầnCác thao tác định dạng lưới).Xử lý sự kiện PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs)Trong sự kiện trên, giá trị e.NewPageIndex cho biết trang được chọn để hiển thị dữ liệu.Định dạng phân trangMã lệnh xử lý:Private Sub Page_Load(…) Handles MyBase.LoadEnd SubIf Not IsPostBack ThenEnd IfLien_ket_du_lieu()Private Sub dtgKhach_hang_PageIndexChanged(…, e …) …dtgKhach_hang.CurrentPageIndex = e.NewPageIndexLien_ket_du_lieu()End SubDữ liệu hiển thị được phân trang4. Tùy biến các cộtTrong phần này, chúng tôi sẽ hướng dẫn các bạn tùy biến các cột trên lưới, cụ thể hơn, chúngta sẽhiển thị checkbox thay cho giá trị True/False của cột giới tính.Để thực hiện việc tùy biến các cột, chúng ta cần phải thực hiện 2 giai đoạn sau: Giai đoạn 1: Thiết kếTrong giai đoạn này, chúng ta tùy biến cột theo một yêu cầu cụ thể. Thay vì phải hiển thị ô dữliệu bình thường (như họ khách hàng, tên khách hàng, …), chúng ta có thể sử dụng điều khiểnCheckbox để thay thế cho cột có giá trị luận lý, sử dụng điều khiển Image, Image button hayHyperlink để hiển thị hình ảnh thay cho chuỗi đường dẫn dẫn đến hình ảnh đó, … Giai đoạn 2: Xử lýSau khi thực hiện hoàn tất giai đoạn thiết kế, đây là lúc chúng ta phải viết các lệnh xử lý đểwww.Beenvn.comhiển thị dữ liệu theo yêu cầu của mình.I.4.1. Giai đoạn 1: Thiết kếBước 1. Thêm mới cột Phái, kiểu Template Column. Nhập giá trị Header text, Sort expressionchoBiên sọan: Dương Thành Phết Trang 120


Bài Giảng Môn Lập Trình Website ASP.Netcột này (nếu cần)Bổ sung cột Phái kiểu Template ColumnBước 2. Từ thực đơn ngữ cảnh, chọn Edit Template \ Column[X] –YYY(X: Số thứ tự của cột; Y: Chuỗi tiêu đề của cột)Chúng ta chọn cột cần hiệu chỉnh.Chọn chức năng hiệu chỉnh cột PháiBước 3. Thêm điều khiển checkbox chkPhai, vào mục ItemTemplateTùy biến cột PháiBước 4. Chọn End Template Editing từ thực đơn ngữ cảnh sau khi thiết kế xong.Điều khiển lưới sau khi đã được tùy biến cột PháiI.4.2. Giai đoạn 2: Xử lýKhác với Bound column, cột kiểu Template column không tự động hiển thị dữ liệu. Mà làm saohiểnthị dữ liệu được khi chính bản thân các điều khiển (mới được tạo khi thiết kế) không có qui địnhfield cần được hiển thị từ nguồn dữ liệu. Do đó, để hiển thị dữ liệu (theo ý đồ của chúng ta), taphải viết lệnh các xử lý trong sự kiện ItemDataBoundMã lệnh xử lý:(1)Private Sub dtgKhach_hang_ItemDataBound(…,e …) …(2) If e.Item.ItemIndex < 0 Then Exit Sub(3) Dim chkPhai As CheckBox(4) chkPhai = e.Item.FindControl("chkPhai")(5) chkPhai.Checked = e.Item.DataItem("Gioi_tinh")(6)End SubTrước khi đi vào tìm hiểu các lệnh xử lý trong đoạn lệnh trên, chúng ta cũng nên tìm hiểu ýnghĩasự kiện ItemDataBound của DataGrid. Sự kiện ItemDataBound xảy ra ngay khi phương thứcDataBind được gọi (lẽ đương nhiên là ta phải gán nguồn dữ liệu cho lưới trước đó). Ứng vớimỗidòng dữ liệu sẽ xảy ra một sự kiện ItemDataBound tương ứng.Phân tích xử lý trong đoạn lệnh trên:Dòng lệnh (2): Dòng lệnh này kiểm tra xem lần xảy ra sự kiện này có phải dành cho dòng dữliệuhay không. Tại sao cần phải kiểm tra điều kiện này? Bởi vì không chỉ ứng với mỗi dòng dữ liệu,màcòn có các dòng Header, Footer và Pager, … cũng xảy ra trong sự kiện này.chkPhaiwww.Beenvn.comĐể biết được lần xảy ra sự kiện dành cho dòng nào, chúng ta kiềm tra giá trị của thuộc tínhe.Item.ItemType. Thuộc tính này có các giá trị sau:Các giá trị của thuộc tính ItemTypeBiên sọan: Dương Thành Phết Trang 121


Bài Giảng Môn Lập Trình Website ASP.Net AlternatingItem: Xảy ra ứng với dòng dữ liệu có chỉ số lẻ (dòng dữ liệu đầu tiên tính từ 0). EditItem: Ứng với dòng ở trạng thái hiệu chỉnh dữ liệu. Footer: Ứng với dòng tiêu đề dưới. Header: Ứng với dòng tiêu đề. Item: Xảy ra ứng với dòng dữ liệu có chỉ số chẳn. Pager: Ứng với dòng phân trang. SelectedItem: Ứng với dòng ở trạng thái đang được chọn. Seperator: Ứng với dòng phân cáchBên cạnh đó, nếu ta chỉ quan tâm đến lần xảy ra sự kiện này có phải là dòng dữ liệu haykhông, tacó thể sử dụng thuộc tính e.ItemIndex. e.Item.ItemIndex < 0: Đây không phải là dòng dữ liệu e.Item.ItemIndex >= 0: Đây là dòng dữ liệu. Giá trị của thuộc tính này cho biết chỉ số củadòng dữ liệu hiện hành.Dòng lệnh (3,4): Nhiệm vụ chính ở 2 dòng lệnh này là chúng ta khai báo các điều khiển ứngvớicác điều khiển được đặt vào lúc thiết kế. Sử dụng phương thức e.Item.FindControl() để lấy điều khiển hiện có trong dòng đang xảy ra sự kiện.chkPhai = e.Item.FindControl("chkPhai") 'haychkPhai =Ctype(e.Item.FindControl("chkPhai"),CheckBox)BảngKHACH_HANGDòng lệnh (5): Sau khi lấy được điều khiển ứng với dòng đang xảy ra sự kiện, tùy theo dữ liệumàta sẽ hiển thị lên điều khiển giá trị tương ứng. Để lấy được dữ liệu của dòng hiện hành, ta sửdụngthuộc tính e.Item.DataItem()chkPhai.Checked = e.Item.DataItem("Gioi_tinh")Kết quả hiển thịĐối với những xử lý phức tạp, sự kiện ItemDataBound sẽ là sự lựa chọn hàng đầu trong việctùy biến hiển thị dữ liệu. Tuy nhiên, đối với những xử lý đơn giản, chúng ta có thể thực hiệnliên kết dữ liệu trong quá trình thiết kế.Chọn Edit Template cột Phái, chọn điều khiển chkPhai.Chọn điều khiển chkPhai trong lúc thiết kếTrên cửa sổ thuộc tính, chọn (DataBindings)www.Beenvn.comChọn chức năng DataBidingsTrên cửa sổ thuộc tính, chọn (DataBindings). Hộp thoại DataBindings của điều khiển chkPhaixuấtBiên sọan: Dương Thành Phết Trang 122


Bài Giảng Môn Lập Trình Website ASP.Nethiện.Các thuộc tính có thể liên kết dữ liệu của điều khiển xuất hiện trong Danh sách bên trái hộpthoại.Chọn thuộc tính cần liên kết, chọn loại liên kết là Custom binding expression, nhập chuỗi liênkết dữliệu trong điều khiển bên dưới theo cú pháp:Container.DataItem("Tên field")Ở ví dụ này, chúng ta thực hiện liên kết thuộc tính Checked của điều khiển chkPhai với fieldGioi_tinh có trong nguồn dữ liệu của lưới.I.5. Cập nhật dữ liệu trực tiếp trên lướiCập nhật dữ liệu trực tiếp trên lưới trong ASP.Net được hỗ trợ khá tốt về giao diện. Công việccònlại của chúng ta là thiết kế các nút lệnh như: Chọn, Sửa/Ghi - Không, Hủy, … và viết các lệnhcậpnhật dữ liệu.I.5.1. Giai đoạn thiết kếTrong cửa sổ thuộc tính của lưới, chúng ta tạo bộ nút lệnh cần thiết hỗ trợ cho việc cập nhật dữliệu. Ở ví dụ này, chúng tôi tạo bộ nút (Select - chọn), (Edit, Update, Cancel - Sửa, Ghi, Không)và(Delete - Hủy)Đối với các nút lệnh trên, các bạn cần chú ý đến giá trị của thuộc tính Command name. Ứngvớimỗi nút lệnh có giá trị CommandName khác nhau, nhờ đó, ta viết lệnh xử lý với chức năngtươngứng được chọn. Select: Command name = "Select" Edit, Update/Cancel: Command name = "Edit", "Update"/"Cancel" Delete: Command name = "Delete"Tạo bộ nút lệnh Thêm - Sửa/Ghi/Không - HủyTìm hiểu về thuộc tính Command NameCũng cần bàn thêm một chút ở đây về thuộc tính Command Name. Như các bạn cũng biết, cácnútlệnh ở trên (Chọn, Thêm - Sửa / Ghi / Không - Hủy) là do VS.Net hỗ trợ, giá trị thuộc tínhCommandName của các nút lệnh trên là những giá trị mặc định được qui định sẵn.Ứng với mỗi CommandName mặc định, sẽ có các sự kiện để ta thực hiện các xử lý tương ứng: Command name="Edit" Sự kiện EditCommand Command name="Update" Sự kiện UpdateCommandwww.Beenvn.com Command name="Cancel" Sự kiện CancelCommand Command name="Delete" Sự kiện DeleteCommandChắc hẳn các bạn sẽ thắc mắc tại sao không có sự kiện SelectCommand? Bốn sự kiện đượcliệt kêBiên sọan: Dương Thành Phết Trang 123


Bài Giảng Môn Lập Trình Website ASP.Nettrên là 4 sự kiện dành riêng, tương ứng với giá trị của các Command name mặc định là Edit,Update, Cancel, Delete. Đối với những CommandName có giá trị khác, chúng ta sẽ sử dụng sựkiệndành chung cho tất cả các nút lệnh có thuộc tính CommandName (Button, Linkbutton,ImageButton) được đặt trên lưới - sự kiện ItemCommand.Tại sao vậy? Vì khi ta đặt các nút lệnh vào lưới (sử dụng cột Template column), chúng (các nútlệnh) không còn sự kiện Click nữa, thay vào đó, tất cả các nút lệnh khi được nhấn sẽ gây ra sựkiện ItemCommand. Dựa vào giá trị e.CommandName (tham số trong sự kiện) để chúng taxácđịnh nút lệnh nào đã được nhấn.Cũng cần lưu ý thêm ở đây là bất kỳ nút lệnh nào khi được nhấn đều gây ra sự kiệnItemCommand.Do đó, đối với các nút lệnh có giá trị thuộc tính CommandName là Edit, Update, Cancel, Deletekhiđược nhấn vẫn gây ra sự kiện ItemCommand trước khi gây ra các sự kiện dành riêng chochúng.Giao diện lưới sau khi thêm bộ nút lệnhI.5.2. Giai đoạn xử lý Xử lý chọn mẩu tinChọn mẫu tin trên lướiPrivate Sub dtgKhach_hang_ItemCommand(…, e …) …If e.CommandName = "Select" ThendtgKhach_hang.SelectedIndex = e.Item.ItemIndexLien_ket_du_lieu()End IfEnd Sub Xử lý sửa, ghi, khôngMuốn cập nhật dữ liệu, ta cần xác định khách hàng được cập nhật thông qua Mã khách hàng.Để lấy Mã khách hàng: Gán thuộc tính DataKeyField của điều khiển lưới = "MKH" .DataKeys() Trả về Mkh tại dòng Chọn mẫu tin để cập nhật dữ liệuPrivate Sub Page_Load(…) …If Not IsPostBack ThendtgKhach_hang.DataKeyField = "MKH"Lien_ket_du_lieu()End IfEnd Subwww.Beenvn.comPrivate Sub dtgKhach_hang_EditCommand(…, e …) …Biên sọan: Dương Thành Phết Trang 124


Bài Giảng Môn Lập Trình Website ASP.NetdtgKhach_hang.EditItemIndex = e.Item.ItemIndexLien_ket_du_lieu()End SubPrivate Sub dtgKhach_hang_UpdateCommand(…, e …) …'Khai báo và khởi tạo biến kết nối: cnKet_noi'Lấy dữ liệu mà người dùng vừa cập nhậtDim lHo_kh As TextBox = e.Item.Cells(0).Controls(0)Dim lTen_kh As TextBox = e.Item.Cells(1).Controls(0)Dim lPhai As CheckBox = e.Item.FindControl("chkPhai")Dim lMkh As Integer = dtgKhach_hang.DataKeys(e.Item.ItemIndex)'Tạo đối tượng Command để cập nhật dữ liệuDim cmdLenh As New OleDbCommandcmdLenh.Connection = cnKet_noicmdLenh.CommandText = "Update KHACH_HANG " & _"Set Ho_khach_hang=?, Ten_khach_hang=?, " & _"Gioi_tinh=? Where MKH=?"'Truyền tham số cho đối tượng CommandcmdLenh.CommandType = CommandType.TextcmdLenh.Parameters.Add("Ho_kh", lHo_kh.Text)cmdLenh.Parameters.Add("Ten_kh", lTen_kh.Text)cmdLenh.Parameters.Add("Phai", lPhai.Checked)cmdLenh.Parameters.Add("Mkh", lMkh)'Thi hành CommandcnKet_noi.Open()cmdLenh.ExecuteNonQuery()cnKet_noi.Close()'Tắt chế độ cập nhật dữ liệudtgKhach_hang.EditItemIndex = -1'Hiển thị dữ liệu mới cập nhật lên lướiLien_ket_du_lieu()End SubPrivate Sub dtgKhach_hang_CancelCommand(…, e …) …dtgKhach_hang.EditItemIndex = -1Lien_ket_du_lieu()End SubHiệu chỉnh độ rộng của các Textbox khi dòng ở trạng thái sửaBạn có thể bổ sung đoạn lệnh sau (trong sự kiện ItemDataBound) để hiệu chỉnh độ rộng cácTextbox của dòng ở trạng thái sửa.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 125


Bài Giảng Môn Lập Trình Website ASP.NetIf e.Item.ItemType = ListItemType.EditItem ThenCType(e.Item.Cells(0).Controls(0),TextBox).Width = New Unit(133)CType(e.Item.Cells(1).Controls(0), TextBox).Width = New Unit(63)End IfXử lý hủy mẫu tinPrivate Sub dtgKhach_hang_DeleteCommand(…, e …) …'Thực hiện xóa dòng dữ liệu ở đây'Xử lý tương tự như Update Command'Hiển thị dữ liệu mới cập nhật lên lướiLien_ket_du_lieu()End SubII. Điều khiển DataListII.1. Sử dụng DataList để hiển thị dữ liệuNhư điều khiển DataGrid, điều khiển DataList được sử dụng để hiển thị dữ liệu. Tuy nhiên, đốivớiDataList, chúng ta phải tự thiết kế hình thức hiển thị dữ liệu (giống như Template Column củaDataGrid).Huy Cận Về Tác Giả Và Tác PhẩmNXB: Giáo dụcCuốn Huy Cận Về Tác Gia Và Tác Phẩm tập hợp những bài nghiêncứu, phê bình của các nhà văn, nhà thơ, các cán bộ giảng dạy, cácnhà nghiên cứu phê bình văn học, các nhà nghiên cứu văn hóa nướcngoài đã được công bố trên sách, báo, tạp chí. Các bài viết này đượcsắp xếp theo thứ tự thời gian và chủ đề, để bạn đọc có thể hình ...Giá: 45,500.00 VND[Đặt hàng] [Xem Tiếp]Địa Chất Công Trình (Giáo Trình Dùng Cho Sinh Viên Ngành XâyDựng Cầu Đường)NXB: Giao thông vận tảiĐịa chất công trình là một môn được đưa vào chương trình đào tạo kỹsư ngành Xây dựng cầu đường của trường Đại học GTVT từ lâu.Những hiểu biết về địa chất công trình sẽ giúp ích nhiều cho kỹ sư cầuđường trong khảo sát, thiết kế và thi công các công trình giao thông ...Giá: 14,000.00 VND[Đặt hàng] [Xem Tiếp]www.Beenvn.comSử dụng DataList hiển thị thông tin sáchMột số thuộc tính cần chú ý của DataList RepeatDirection: Qui định hướng hiển thị dữ liệuBiên sọan: Dương Thành Phết Trang 126


Bài Giảng Môn Lập Trình Website ASP.Net Horizontal: Hiển thị dữ liệu theo chiều ngangRepeatDirection = Horizontal Vertical (mặc định): Hiển thị dữ liệu theo chiều đứngRepeatDirection = Vertical RepeatColumns: Qui định số cột hiển thị của DataListL'Enquête CorseĐặt muaUnspeakableĐặt muaBottle RocketĐặt muaRipperĐặt muaEnduring LoveĐặt muaThe Good ThiefĐặt muaRepeatColumns = 3Thiết kế hình thức hiển thị cho DataList cũng tương tự như thiết kế cho cột Template ColumncủaDataGrid.Chọn Edit Template | ItemTemplate từ thực đơn ngữ cảnh để thực hiện thiết kế hình thức hiểnthịcho DataList.Chọn chức năng thiết kế cho DataListTrong quá trình thực hành, để công việc thiết kế được dễ dàng, các bạn thực hiện thiết kế ởbên ngoài điều khiển DataList. Sử dụng Table (thực đơn Insert Table) để định vị trí hiểnthị của các điều khiển.Sau khi hoàn tất công việc thiết kế, chúng ta kéo kết quả đã thiết kế vào vị trí cần hiển thị trongDataList.Ví dụ: Hiển thị thông tin sách với DataListThiết kế thông tin sách với DataListNhư cột Template Column của DataGrid, xử lý hiển thị dữ liệu cho DataList được viết trong sựkiệnItemDataBound. Xử lý nhấn của các Button đặt trong DataList được viết trong sự kiệnItemCommand.Private Sub Page_Load(…, e …) Handles MyBase.LoadIf Not IsPostBack Thenwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 127


Bài Giảng Môn Lập Trình Website ASP.NetLien_ket_du_lieu()End IfEnd SubPublic Sub Lien_ket_du_lieu()dtSach = Doc_danh_sach_Sach()dtlSach.DataSource = dtSachdtlSach.DataKeyField = "Ms"dtlSach.DataBind()End SubPrivate Sub dtlSach_ItemDataBound(…, e …) …Dim lDong as Integer = e.Item.ItemIndexIf lDong < 0 Then Exit Sub'Hiển thị Tên sáchDim lnkTs As LinkButtonlnkTs = e.Item.FindControl("lnkTen_sach")lnkTs.Text = e.Item.DataItem("Ten_sach")'Hiển thị thông tin mô tả tóm tắt nội dungLabelHyperLinkLinkButtonTài liệu hướng dẫn giảng dạyHọc phần 3 - Lập trình ứng dụng web với ASP.NET Trang 82/174Dim lblMt As LabellblMt = e.Item.FindControl("lblMo_ta")lblMt.Text = Left(e.Item.DataItem("Mo_ta"), 200) & "..."'Hiển thị hình ảnh minh họaDim hplHinh As HyperLinkhplHinh = e.Item.FindControl("hplHinh_mh")hplHinh.ImageUrl = "../Data_Pic/" & e.Item.DataItem("Hinh_minh_hoa")'Hiển thị giá bán sáchDim lblGia As LabellblGia = e.Item.FindControl("lblGia_ban")lblGia.Text = e.Item.DataItem("Don_gia")End SubKết quả hiển thị thông tin sách trên trang WebKết quả trên trang WebTài liệu hướng dẫn giảng dạyHọc phần 3 - Lập trình ứng dụng web với ASP.NET Trang 83/174www.Beenvn.comBiên sọan: Dương Thành Phết Trang 128


Bài Giảng Môn Lập Trình Website ASP.NetII.2. Cập nhật dữ liệu với DataListNgoài việc hiển thị dữ liệu, DataList cũng hỗ trợ các thao tác cập nhật dữ liệu. Để thực hiệnchứcnăng cập nhật dữ liệu với DataList, chúng ta cần phải thiết kế thêm vùng EditIemTemplate choDataList. (xem hình)II.2.1. Các bước xử lýa. Thiết kếThiết kế cả 2 vùng ItemTemplate và EditItemTemplate. Thực hiện các thao tác liên kết dữ liệuchocác điều khiển trong vùng EditItemTemplate thông qua cửa sổ thuộc tính tương tự như trongItemTemplate.Chú ý: Chúng ta hoàn toàn có thể thực hiện việc liên kết dữ liệu trong sự kiện ItemDataBound.Chọn chức năng DataBindings cho ô Đơn giáLiên kết dữ liệu với cột Don_giaYêu cầu thiết kếTên điều khiển Thiết lập thuộc tínhHieu_chinh: ImageButton CommandName: EditGhi_nhan: ImageButton CommandName: UpdateCommandArgument:DataBinder.Eval(Container, "DataItem.Ms") Lưu lại mã số của sách đang hiệu chỉnh.Bo_qua: ImageButton CommandName: CancelTài liệu hướng dẫn giảng dạyHọc phần 3 - Lập trình ứng dụng web với ASP.NET Trang 85/174b. Xử lý lệnh để cập nhật dữ liệuXử lý các sự kiện EditCommand, CancelCommand, UpdateCommand để thực hiện/bỏ qua việcthayđổi dữ liệu.Private Sub Page_Load(…, e …) Handles MyBase.Load'Put user code to initialize the page hereIf Not IsPostBack ThenLien_ket_du_lieu()End IfEnd SubPrivate Sub dtlHang_hoa_EditCommand(…, e …) …dtlHang_hoa.EditItemIndex = e.Item.ItemIndexLien_ket_du_lieu()End SubPrivate Sub dtlHang_hoa_CancelCommand(…, e …) …www.Beenvn.comBiên sọan: Dương Thành Phết Trang 129


Bài Giảng Môn Lập Trình Website ASP.NetdtlHang_hoa.EditItemIndex = -1Lien_ket_du_lieu()End SubPrivate Sub dtlHang_hoa_UpdateCommand(…, e …) …'Xử lý cập nhật dữ liệu tại đâyDim Don_gia_sua As TextBoxDon_gia_sua = e.Item.FindControl("Don_gia_sua")'Don_gia_sua.Text Trả về đơn giá mới được sửa'……dtlHang_hoa.EditItemIndex = -1Lien_ket_du_lieu()End SubTài liệu hướng dẫn giảng dạyHọc phần 3 - Lập trình ứng dụng web với ASP.NET Trang 86/174DataList ở chế độ đang hiệu chỉnhIII. Điều khiển RepeaterNhư 2 điều khiển DataList & DataGrid, điều khiển Repeater cũng được dùng để hiển thị dữ liệu.Tuynhiên, để hiển thị dữ liệu, chúng ta phải tự thiết kế hình thức hiển thị thông qua các tag HTML.Điều khiển Repeater có các tag sau: (tùy chọn)Qui định hình thức hiển thị cho tiêu đề. (Chỉ xuất hiện 1 lần, phía trên của điều khiển) (Bắt buộc phải có)Qui định hình thức hiển thị cho các mục dữ liệu trong điều khiển. (tùy chọn)Qui định hình thức hiển thị cho các mục dữ liệu trong điều khiển. Nội dung được qui định trongcặp tag này sẽ hiển thị xen kẽ với các nội dung trong cặp tag (tùy chọn)Qui định hình thức hiển thị giữa các dòng dữ liệu (tùy chọn)Qui định hình thức hiển thị cho tiêu đề dưới. (Chỉ xuất hiện 1 lần, phía dưới của điều khiển)Ví dụ:Bước 1. Tạo mới điều khiển Repeater: rptKhach_hang vào trang Web.Điều khiển rptKhach_hang trên trang Webwww.Beenvn.comBước 2. Chuyển qua xem trang Web dưới dạng HTMLBiên sọan: Dương Thành Phết Trang 130


Bài Giảng Môn Lập Trình Website ASP.NetBước 3. Bổ sung các tag sauHọ khách hàngTên khách hàngĐịa chỉĐiện thoạiwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 131


Bài Giảng Môn Lập Trình Website ASP.NetBước 4. Xem lại màn hình thiết kếBước 5. Tạo nguồn dữ liệu cho điều khiểnPrivate Sub Page_Load(…) Handles MyBase.Load'Tạo dữ liệu cho đối tượng DataTable: dtKhach_hangrptKhach_hang.DataSource = dtKhach_hangrptKhach_hang.DataBind()End SubBước 6. Thi hành ứng dụngTài liệu hướng dẫn giảng dạyHọc phần 3 - Lập trình ứng dụng web với ASP.NET Trang 90/174IV. Các ví dụ mở rộngIV.1. Xử lý đảo hướng sắp xếp trong DataGridVí dụ minh họa dưới đây xử lý đảo hướng sắp xếp trong DataGrid. Đồng thời, trong ví dụ này,chúng tôi thực hiện liên kết dữ liệu qua đối tượng DataView để thực hiện sắp xếp trên nguồndữliệu.Private Sub Page_Load(…, e …) Handles MyBase.LoadIf Not IsPostBack Then Lien_ket_du_lieu()End Subwww.Beenvn.comPublic Sub Lien_ket_du_lieu()Dim dtKhach_hang As DataTable = Doc_ds_khach_hang()Biên sọan: Dương Thành Phết Trang 132


Bài Giảng Môn Lập Trình Website ASP.NetDim dvKhach_hang As New DataView(dtKhach_hang)dvKhach_hang.Sort = ViewState("SortExpression")If ViewState("SortAscending") = "false" ThendvKhach_hang.Sort &= " desc"End IfdtgKhach_hang.DataSource = dvKhach_hangdtgKhach_hang.DataBind()End SubPublic Function Doc_ds_khach_hang() As DataTableDim sKet_noi As StringsKet_noi = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _Server.MapPath("..\Data\QlBanSach.mdb")Dim cnKet_noi As New OleDbConnection(sKet_noi)Dim dsCSDL As New DataSet'Mở và đóng kết nối ngay khi thực hiện xongcnKet_noi.Open()Dim daBo_doc_ghi As New OleDbDataAdapter _("Select * From KHACH_HANG", cnKet_noi)cnKet_noi.Close()daBo_doc_ghi.Fill(dsCSDL, "KHACH_HANG")Return dsCSDL.Tables("KHACH_HANG")End FunctionPrivate Sub dtgKhach_hang_SortCommand(…, e …) …Dim sSap_xep As String = ViewState("SortExpression")Tài liệu hướng dẫn giảng dạyHọc phần 3 - Lập trình ứng dụng web với ASP.NET Trang 91/174Dim sHuong As String = ViewState("SortAscending")ViewState("SortExpression") = e.SortExpressionIf (e.SortExpression = sSap_xep) ThenViewState("SortAscending") = IIf(sHuong = "false", "true", "false")End IfLien_ket_du_lieu()End SubIV.2. Tạo biểu tượng sắp xếp trong cột cho DataGridSắp xếp tăng dần theo tên khách hàngPrivate Sub dtgKhach_hang_ItemDataBound(…, e …) …If e.Item.ItemType = ListItemType.Header ThenDim sSap_xep As String = ViewState("SortExpression")www.Beenvn.comBiên sọan: Dương Thành Phết Trang 133


Bài Giảng Môn Lập Trình Website ASP.NetDim sHuong As String = ViewState("SortAscending")Dim sKy_hieu As String = IIf(sHuong = "false", " 6", " 5")Dim i%For i = 0 To dtgKhach_hang.Columns.Count - 1If sSap_xep = _dtgKhach_hang.Columns(i).SortExpression ThenDim cell As TableCell = e.Item.Cells(i)Dim lblKy_hieu As New LabellblKy_hieu.Text = sKy_hieulblKy_hieu.Font.Name = "webdings"lblKy_hieu.Font.Size = FontUnit.XSmallcell.Controls.Add(lblKy_hieu)End IfNextEnd IfEnd SubIV.3. Định dạng hình thức hiển thị cho dòng dữ liệu thỏa điềukiện trên DataGridTrong ví dụ sau, chúng ta thực hiện tô màu cho những khách hàng có tên bắt đầu bằng ký tựH.Private Sub dtgKhach_hang_ItemDataBound(…, e …) …If e.Item.ItemIndex < 0 Then Exit SubDim sTen_kh As StringsTen_kh = e.Item.DataItem("Ten_khach_hang")'Tiến hành kiểm tra điều kiện,'nếu thỏa thực hiện các xử lý định dạngIf sTen_kh.StartsWith("H") Thene.Item.BackColor = Color.LemonChiffone.Item.Cells(1).Font.Bold = TrueEnd IfEnd SubTô màu những khách hàng có tên bắt đầu bằng ký tự HIV.4. Tạo hiệu ứng chọn khi rê chuột qua các dòng dữ liệuPrivate Sub dtgKhach_hang_ItemDataBound(…, e …) …If e.Item.ItemIndex < 0 Then Exit Subwww.Beenvn.come.Item.Attributes("onMouseOver") = _"this.style.backgroundColor='#FFF8DC'"e.Item.Attributes("onMouseOut") = _Biên sọan: Dương Thành Phết Trang 134


Bài Giảng Môn Lập Trình Website ASP.Net"this.style.backgroundColor=''"End SubTạo hiệu ứng chọn dòng dữ liệu trên lướiKinh nghiệm giảng dạy:Các điều khiển liên kết dữ liệu (DataGrid, DataList, Repeater) hỗ trợ khá tốt việc hiểnthị dữ liệu trên trang web.Do hỗ trợ khá nhiều chức năng, giáo viên nên hướng dẫn học viên sử dụng tuần tựtừng chức năng mà các điều khiển hỗ trợ. Sau khi nắm vững các thao tác của từngchức năng, học viên có thể phối hợp các chức năng lên cùng một bài tập.www.Beenvn.comBiên sọan: Dương Thành Phết Trang 135


Bài Giảng Môn Lập Trình Website ASP.NetTÀI LIỆU THAM KHẢO1. MSDN Library - April 2003 & MSDN Library - July 20052. MSDN Traning: Developing Microsoft ASP.NET Web Applications Using Visual Studio.NET3. MSDN Traning: Programming with Microsoft ADO.NET4. ASP.NET Web Developer’s Guide5. ASP.NET By Example [Steven A. Smith]6. Developing Web Applications with Visual Basic .NET and ASP.NET [John Alexander, BillyHollis]7. Programming ASP.NET, 2nd Edition [Dan Hurwitz, Jesse Liberty]8. Inside ASP.NET [Scott Worley]9. ASP NET Bible [Mridula Parihar]10. ASP.NET for Web Designers [Peter Ladka]11. Professional ADO.NET Programming [Wrox]12. Cascading Style Sheets - The Designer's Edge [Molly E. Holzschlag ]13. JavaScript Bible - Gold Edition [Danny Goodman]14. Real World Web Services [Yasser Shohoud]15. Trang chủ ASP.Net: http://www.asp.net16. Trường học trực tuyến của W3C: http://www.w3schools.com1. Đối tượng transaction được tạo bởi phương thức nào :a. NewTransactionb. StartTransactionc. BeginTransactiond. CreateTransactionwww.Beenvn.com2. Điều nào sau đây không phải là ưu điểm của Server control so với HTML control :a. Duy trì dữ liệu trên controlb. Hiển thị không phụ thuộc vào trình duyệtBiên sọan: Dương Thành Phết Trang 136


Bài Giảng Môn Lập Trình Website ASP.Netc. Có các sự kiện riêng biệtd. Tốc độ hiển thị nhanh3. Phương thức di chuyển nào sau đây cho phép giữ lại thông tin từ web form xuất phát :a. Respose.Redirectb. Server.Transferc. Server.Executed. Cả 3 phương thức trên4. Ứng dụng web không sử dụng các control nào :a. Windows controlsb. Server controlsc. HTML controlsd. User controlse. Custom controls5. Phương thức nào sau đây chắc chắn không làm thay đổi dữ liệu :a. ExecuteNonQueryb. ExecuteReaderc. ExecuteScalard. ExecuteReadOnly6. Lệnh SQL nào dùng để thêm một dòng mới vào một bảng trong cơ cở dữ liệu :a. INSERT NEWb. ADD ROWc. INSERT ROWd. INSERT INTO7. Chúng ta sử dụng giao dịch khi :a. Lập trình các ứng dụng thương mại điện tửb. Lập trình các ứng dụng cơ sở dữ liệu phức tạpc. Thực hiện nhiều lệnh cơ sở dữ liệu như một lệnhd. Cả 3 câu trên đều đúng8. Mức cô lập (isolation level) cao nhât của một giao dịch là :a. RepeatableReadb. Serializablec. Chaosd. ReadUncommittede. ReadCommitted9. Thành phần nào không phải là thuộc tính của đối tượng Dat Adapter :a. SQLCommandb. DeleteCommandc. UpdateCommandd. InsertCommand10. Yếu tố nào sau đây không phải là sự khác biệt giữa Web form và Windows form :a. Các loại control trên formb. Chu trình sốngc. Giao diện người dùngd. Khả năng lưu trữ dữ liệu11. Các bước để tạo nơi lưu trữ một ứng dụng ASP.Net là :a. Tạo thư mục vật lý, tạo thư mục ảo, tạo subwebb. Tạo thư mục ảo, tạo subweb, tạo thư mục vật lýc. Tạo thư mục ảo, tạo thư mục vật lý, tạo subwebd. Tạo thư mục vật lý, tạo subweb, tạo thư mục ảo12. Các sự kiện Application và Section diễn ra theo trình tự nào :a. Application_Start, Application_End, Section_Start, Section_Endb. Application_Start, Section_Start, Section_End, Application_Endc. Section_Start, Application_Start, Application_End, Section_Endd. Section_Start, Section_End, Application_Start, Application_Endwww.Beenvn.com13. Các trình tự trên web form diễn ra theo trình tự nào :a. Page_Init, Page_Load, Page_Unload, Page_Disposeb. Page_Load, Page_Init, Page_Unload, Page_DisposeBiên sọan: Dương Thành Phết Trang 137


Bài Giảng Môn Lập Trình Website ASP.Netc. Page_Load, Page_Unload, Page_Init, Page_Disposed. Page_Load, Page_Init, Page_Dispose, Page_Unload14. Cookie là :a. Một chuỗi kí tự trong dòng địa chỉ webb. Một file nằm trên serverc. Một file nằm trên Clientd. Một file XML15. Ứng dụng email như Outlook Express là loại ứng dụng :a. Internetb. Webc. Ngang hàng (peer-to-peer)d. Cả 3 câu trên đều sai16. Ứng dụng web :a. Chỉ chạy trên một máy đơnb. Có kiến trúc Client/Serverc. Là tất cả ứng dụng có sử dụng Internetd. Cả 3 câu trên đều đúng17. Địa chỉ URL của ứng dụng web được xác định bởi :a. Thư mục ảo của ứng dụngb. Thư mục vật lý của ứng dụngc. Tên của Projectd. Cả 3 câu đều sai18. Ta có thể lưu trữ dữ liệu chung cho tât cả người dùng ở :a. Biến Applicationb. Biến Sectionc. View Stated. Cả 3 nơi nói trên19. Dữ liệu trên các control của web form được lưu trữ ở :a. View stateb. Biến Applicationc. Biến Sectiond. Các biến toàn cục20. Từ khóa nào không phải là từ khóa thứa kế trong C# :a. newb. protectedc. inheritd. override21. Dùng lệnh nào sau đây để di chuyển đến trang web hello.html :a. Server.Transfer ("hello.html")b. Response.Redirect ("hello.html")c. Server.Execute ("hello.html")d. Tất cả đều đúng22. Control Kiểm chứng nào không có trong ASP.NET :a. RequiredValidatorb. CompareValidatorc. RangeValidatord. CustomValidator23. Phương thức nào sau đây của Data Set dùng để cập nhật dữ liệu :a. Fillb. AcceptChangesc. RejectChanged. Updatewww.Beenvn.com24. Lệnh dùng để hoàn tất một giao dịch là :a. Finishb. Commitc. Rollbackd. UpdateBiên sọan: Dương Thành Phết Trang 138


Bài Giảng Môn Lập Trình Website ASP.Net25. Phát biểu nào sai :a. Phần thực thi của ứng dụng web chạy dưới sự điều khiển của web serverb. Thông tin được truyền từ server đến client bằng giao thức FTPc. Ứng dụng web không cần phải được cài đặt trên phía clientd. Dịch vụ web là một loại ứng dụng Internet26. Tên của một thư mục ảo có dạng :a. c:\myprojectb. http://www.mycompany.com/myprojectc. aspnet://myprojectd. c:\myproject\aspnetwww.Beenvn.comBiên sọan: Dương Thành Phết Trang 139

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!