SlideShare a Scribd company logo
Bài Giảng Môn Lập Trình Website ASP.Net


                                                        MỤC LỤC
         Chương 01: TỔNG QUAN VỀ ASP.NET ........................................................... Trang 1
         I. Giới thiệu về ASP.Net.................................................................................................1
                 1. Tìm hiểu về ASP.Net ......................................................................................1
                 2. Những ưu điểm của ASP.Net ..........................................................................1
                 3. Quá trình xử lý tập tin ASPX............................................................................2
                 4. Tìm hiểu về .Net Phatform và .Net Framework................................................3
         II. Web Server ............................................................................................................... 6
                 1. Internet Information Services ...........................................................................6
                 2. Cài đặt Web Server ........................................................................................7
                 3. Cấu hình Internet Information Services ...........................................................9
         III. Tạo ứng dụng Web đầu tiên ..................................................................................12
                 1. Khởi động MS Visual Studio .Net .................................................................12
                 2. Tạo mới ứng dụng Web.................................................................................13
                 3. Bổ sung các điều khiển..................................................................................14
                 4. Thi hành ứng dụng .......................................................................................15
                 5. Phân loại tập tin trong ASP.Net .....................................................................15
        IV. Làm quen với các thành phần giao diện trên VS .Net ........................................16
                 1. Solution Explorer .........................................................................................16
                 2. Property Window ..........................................................................................17
                 3. Toolbox .........................................................................................................17
                 4. Document Outline Window ............................................................................18
         Chương 02: WEB SERVER CONTROL .....................................................................19
         I. Điều khiển cơ bản chuẩn – Standard......................................................................19
                 1. Label..............................................................................................................20
                 2. TextBox .........................................................................................................20
                 3. Image.............................................................................................................20
                 4. Button, ImageButton, LinkButton ...................................................................21
                 5. HyperLink.......................................................................................................22
                 6. ListBox Và DropDownList ..............................................................................22
                 7. CheckBox & RadioButton ..............................................................................25
                 8. CheckBoxList & RadioButtonList ...................................................................25
         II. Điều khiển kiểm tra dữ liệu

       III. Một số điều khiển khác
       IV. Đối tượng ViewState
       V. Asp.Net Page
Chương 03: CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU
I. Điều khiển DataGrid...................................................................................... 62
I.1. Các thao tác định dạng lưới ...........................................................................62
I.2. Xử lý sắp xếp................................................................................................67
I.3. Xử lý phân trang ...........................................................................................69
I.4. Tùy biến các cột ...........................................................................................70
I.5. Cập nhật dữ liệu trực tiếp trên lưới.................................................................74

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

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

I. Tìm hiểu về Web Services ........................................................................... 137
II. Xây dựng Web Services .............................................................................. 140
Tài liệu hướng dẫn giảng dạy
Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 4/174
II.1. Tạo Web Services trong VS .Net...................................................................140
II.2. Kiểm tra Web Service ..................................................................................141
III. Sử dụng Web Service.................................................................................. 143
III.1. Sử dụng Web Service do người dùng xây dựng .............................................144
III.2. Sử dụng Web Services được cung cấp miễn phí trên mạng.............................144
IV. Xây dựng Web Services truy xuất dữ liệu................................................... 148
IV.1. Web Service: WS_KHACH_HANG..................................................................148
IV.2. Sử dụng WS_KHACH_HANG.........................................................................150
Bài 8.................................................................................................................. 152
PHỤ LỤC ........................................................................................................... 152
I. Cơ sở dữ liệu dùng trong ứng dụng ............................................................ 153
I.1. Thiết kế cơ sở dữ liệu..................................................................................153
I.2. Dữ liệu thử.................................................................................................156
II. Giới thiệu về các tag HTML ......................................................................... 157
II.1. Cơ bản về tag HTML....................................................................................157
II.2. Các tag nhập liệu........................................................................................163
III. Cascading Style Sheets - CSS...................................................................... 166
III.1. Giới thiệu CSS.............................................................................................166
III.2. Cú pháp CSS ..............................................................................................167
       III.3. Sử dụng CSS trong trang HTML....................................................................169



Chương 01

                                     TỔNG QUAN VỀ ASP.NET
                                                                              Giới thiệu về Asp.Net
                                                                              Web Server
                                                                              Tạo ứng dụng web đầu tiên
I. Giới thiệu về ASP.Net
1. Tìm hiểu về ASP.Net
       Từ khoảng cuối thập niên 90, ASP (Active Server Page) đã được nhiều lập trình viên lựa
chọn để xây dựng và phát triển ứng dụng web động trên máy chủ sử dụng hệ điều hành
Windows. ASP đã thể hiện được những ưu điểm của mình với mô hình lập trình thủ tục đơn
giản, sử dụng hiệu quả các đối tượng COM: ADO (ActiveX Data Object) - xử lý dữ liệu, FSO
(File System Object) - làm việc với hệ thống tập tin…, đồng thời, ASP cũng hỗ trợ nhiều ngôn
ngữ: VBScript, JavaScript.
        Chính những ưu điểm đó, ASP đã được yêu thích trong một thời gian dài. Tuy nhiên,
ASP vẫn còn tồn đọng một số khó khăn như Code ASP và HTML lẫn lộn, điều này làm cho quá
trình viết code khó khăn, thể hiện và trình bày code không trong sáng, hạn chế khả năng sử
dụng lại code. Bên cạnh đó, khi triển khai cài đặt, do không được biên dịch trước nên dễ bị mất
source code, hạn chế về mặt tốc độ thực hiện. Quá trình xử lý Postback khó khăn, …



Biê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ọi
ban đầu là ASP+, tên chính thức sau này là ASP.Net. Với ASP.Net, không những không cần
đòi hỏi bạn phải biết các tag HTML, thiết kế web, mà nó còn hỗ trợ mạnh lập trình hướng đối
tượng trong quá trình xây dựng và phát triển ứng dụng Web.
       ASP.Net là kỹ thuật lập trình và phát triển ứng dụng web ở phía Server (Server-side)
dựa trên nền tảng của Microsoft .Net Framework.
        Hầu hết, những người mới đến với lập trình web đều bắt đầu tìm hiểu những kỹ thuật ở
phía Client (Client-side) như: HTML, Java Script, CSS (Cascading Style Sheets). Khi Web
browser yêu cầu một trang web (trang web sử dụng kỹ thuật client-side), Web server tìm trang
web mà Client yêu cầu, sau đó gởi về cho Client. Client nhận kết quả trả về từ Server và hiển
thị lên màn hình.
       ASP.Net sử dụng kỹ thuật lập trình ở phía server thì hoàn toàn khác, mã lệnh ở phía
server (ví dụ: mã lệnh trong trang ASP, ASP.NET) sẽ được biên dịch và thi hành tại Web
Server. Sau khi được Server đọc, biên dịch và thi hành, kết quả tự động được chuyển sang
HTML/ JavaScript/ CSS và trả về cho Client.
        Tất cả các xử lý lệnh ASP, 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.Net
      ASP.Net cho phép bạn lựa chọn một trong các ngôn ngữ lập trình mà bạn yêu thích:
       Visual Basic.Net, J#, C#,…
      Trang ASP.Net được biên dịch trước thành những tập tin DLL mà Server có thể thi hành
       nhanh chóng và hiệu quả. Yếu tố này là một bước nhảy vọt đáng kể so với kỹ thuật
       thông dịch của ASP.




      ASP.Net hỗ trợ mạnh mẽ bộ thư viện phong phú và đa dạng của .Net Framework, làm
       việc với XML, Web Service, truy cập cơ sở dữ liệu qua ADO.Net, …
      ASPX và ASP có thể cùng hoạt động trong 1 ứng dụng.
      ASP.Net sử dụng phong cách lập trình mới: Code behide. Tách code riêng, giao diện
       riêng  Dễ đọc, dễ quản lý và bảo trì.
      Kiến trúc lập trình giống ứng dụng trên Windows.
      Hỗ trợ quản lý trạng thái của các control
      Tự động phát sinh mã HTML cho các Server control tương ứng với từng loại Browser
      Triển khai cài đặt
          o Không cần lock, không cần đăng ký DLL
          o Cho phép nhiều hình thức cấu hình ứng dụng
      Hỗ trợ quản lý ứng dụng ở mức toàn cục
          o Global.aspx có nhiều sự kiện hơn

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

         o Quản lý session trên nhiều Server, không cần Cookies
3. Quá trình xử lý tập tin ASPX
      Khi Web server nhận được yêu cầu từ phía client, nó sẽ tìm kiếm tập tin được yêu cầu
thông qua chuỗi URL được gởi về, sau đó, tiến hành xử lý theo sơ đồ sau:




4. Tìm hiểu về .Net Phatform và .Net Framework
      .Net Phatform
            Bao gồm .Net Framework và những công cụ được dùng để xây dựng, phát triển
      ứng dụng và dịch vụ. ASP.Net.




      .Net Framework
                                  Kiến trúc .Net Framework




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




      Hệ điều hành
      Cung cấp các chức năng xây dựng ứng dụng với vai trò quản lý việc xây dựng và thi
hành ứng dụng, .NET Framework cung cấp các lớp đối tượng (Class) để bạn có thể gọi thi
hành các chức năng mà đối tượng đó cung cấp. Tuy nhiên, lời kêu gọi của bạn có được
"hưởng ứng" hay không còn tùy thuộc vào khả năng của hệ điều hành đang chạy ứng dụng
của bạn.
      Các chức năng đơn giản như hiển thị một hộp thông báo (Messagebox) sẽ được .NET
Framework sử dụng các hàm API của Windows. Chức năng phức tạp hơn như sử dụng các
COMponent sẽ yêu cầu Windows phải cài đặt Microsoft Transaction Server (MTS) hay các
chức năng trên Web cần Windows phải cài đặt Internet Information Server (IIS).
       Như vậy, bạn cần biết rằng lựa chọn 1 hệ điều hành để cài đặt và sử dụng .NET
Framework cũng không kém phần quan trọng. Cài đặt .NET Framework trên các hệ điều hành
Windows 2000, 2000 Server, XP, 2003 Server, Vista sẽ đơn giản và tiện dụng hơn trong khi lập
trình.
      Common Language Runtime
       Là thành phần "kết nối" giữa các phần khác trong .NET Framework với hệ điều hành.
Common Language Runtime (CLR) giữ vai trò quản lý việc thi hành các ứng dụng viết bằng
.NET trên Windows.
       CLR sẽ thông dịch các lời gọi từ chương trình cho Windows thi hành, đảm bảo ứng dụng
không chiếm dụng và sử dụng tràn lan tài nguyên của hệ thống. Nó cũng không cho phép các
lệnh "nguy hiểm" được thi hành. Các chức năng này được thực thi bởi các thành phần bên
trong CLR như Class loader, Just In Time compiler, Garbage collector, Exception handler, COM
marshaller, Security engine,…
       Trong các phiên bản hệ điều hành Windows mới như XP.NET và Windows 2003, Win
Vista CLR được gắn kèm với hệ điều hành. Điều này đảm bảo ứng dụng viết ra trên máy tính
của chúng ta sẽ chạy trên máy tính khác mà không cần cài đặt, các bước thực hiện chỉ đơn
giản là một lệnh xcopy của DOS!
      Bộ thư viện các lớp đối tượng
       Nếu phải giải nghĩa từ "Framework" trong thuật ngữ .NET Framework thì đây là lúc thích
hợp nhất. Framework chính là một tập hợp hay thư viện các lớp đối tượng hỗ trợ người lập
trình khi xây dựng ứng dụng. Có thể một số người trong chúng ta đã nghe qua về MFC và JFC.
      Microsoft Foundation Class là bộ thư viện mà lập trình viên Visual C++ sử dụng trong khi
Java Foundation Class là bộ thư viện dành cho các lập trình viên Java. Giờ đây, có thể coi
.NET Framework là bộ thư viện dành cho các lập trình viên .NET.
       Với hơn 5000 lớp đối tượng để gọi thực hiện đủ các loại dịch vụ từ hệ điều hành, chúng
ta có thể bắt đầu xây dựng ứng dụng bằng Notepad.exe!!!… Nhiều người lầm tưởng rằng các

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

môi trường phát triển phần mềm như Visual Studio 98 hay Visual Studio.NET là tất cả những gì
cần để viết chương trình. Thực ra, chúng là những phần mềm dùng làm "vỏ bọc" bên 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 quan
trọng của .NET Framework.
     Nếu không có cái cốt lõi .NET Framework, Visual Studio.NET cũng chỉ là cái vỏ bọc!
Nhưng nếu không có Visual Studio.NET, công việc của lập trình viên .NET cũng lắm bước gian
nan!
         o Base class library – thư viện các lớp cơ sở
               Đây là thư viện các lớp cơ bản nhất, được dùng trong khi lập trình hay bản
         thân những người xây dựng .NET Framework cũng phải dùng nó để xây dựng các
         lớp cao hơn. Ví dụ các lớp trong thư viện này là String, Integer, Exception,…
         o ADO.NET và XML
                Bộ thư viện này gồm các lớp dùng để xử lý dữ liệu. ADO.NET thay thế ADO
         để trong việc thao tác với các dữ liệu thông thường. Các lớp đối tượng XML được
         cung cấp để bạn xử lý các dữ liệu theo định dạng mới: XML. Các ví dụ cho bộ thư
         viện này là SqlDataAdapter, SqlCommand, DataSet, XMLReader, XMLWriter,…
         o ASP.NET
               Bộ thư viện các lớp đối tượng dùng trong việc xây dựng các ứng dụng Web.
         ASP.NET không phải là phiên bản mới của ASP 3.0. Ứng dụng web xây dựng bằng
         ASP.NET tận dụng được 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: code
         behind.
                Đây là cách mà lập trình viên xây dựng các ứng dụng Windows based thường
         sử dụng – giao diện và lệnh được tách riêng. Tuy nhiên, nếu bạn đã từng quen với
         việc lập trình ứng dụng web, đây đúng là một sự "đổi đời" vì bạn đã được giải phóng
         khỏi mớ lệnh HTML lộn xộn tới hoa cả mắt.
               Sự xuất hiện của ASP.NET làm cân xứng giữa quá trình xây dựng ứng dụng
         trên Windows và Web.
                ASP.NET cung cấp một bộ các Server Control để lập trình viên bắt sự kiện và
         xử lý dữ liệu của ứng dụng như đang làm việc với ứng dụng Windows. Nó cũng cho
         phép chúng ta chuyển một ứng dụng trước đây viết chỉ để chạy trên Windows thành
         một ứng dụng Web khá dễ dàng. Ví dụ cho các lớp trong thư viện này là WebControl,
         HTMLControl, …
         o Web services
              Web services có thể hiểu khá sát nghĩa là các dịch vụ được cung cấp qua
         Web (hay Internet). Dịch vụ được coi là Web service không nhằm vào người dùng
         mà nhằm vào người xây dựng phần mềm.
                Web service có thể dùng để cung cấp các dữ liệu hay một chức năng tính
         toán. Ví dụ, công ty du lịch của bạn đang sử dụng một hệ thống phần mềm để ghi
         nhận thông tin về khách du lịch đăng ký đi các tour. Để thực hiện việc đặt phòng
         khách sạn tại địa điểm du lịch, công ty cần biết thông tin về phòng trống tại các khách
         sạn. Khách sạn có thể cung cấp một Web service để cho biết thông tin về các phòng
         trống tại một thời điểm. Dựa vào đó, phần mềm của bạn sẽ biết rằng liệu có đủ chỗ
         để đặt phòng cho khách du lịch không? Nếu đủ, phần mềm lại có thể dùng một.
              Web service khác cung cấp chức năng đặt phòng để thuê khách sạn. Điểm lợi
         của Web service ở đây là bạn không cần một người làm việc liên lạc với khách sạn

Biê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ên
          lạc lại với khách sạn để đặt phòng. Đừng quên là khách sạn lúc này cũng cần có
          người để làm việc với nhân viên của bạn và chưa chắc họ có thể liên lạc thành công.
                Web service được cung cấp dựa vào ASP.NET và sự hỗ trợ từ phía hệ điều
          hành của Internet Information Server.
          o Window form
                 Bộ thư viện về Window form gồm các lớp đối tượng dành cho việc xây dựng
          các ứng dụng Windows based. Việc xây dựng ứng dụng loại này vẫn được hỗ trợ tốt
          từ trước tới nay bởi các công cụ và ngôn ngữ lập trình của Microsoft. Giờ đây, ứng
          dụng chỉ chạy trên Windows sẽ có thể làm việc với ứng dụng Web dựa vào Web
          service. Ví dụ về các lớp trong thư viện này là: Form, UserControl,…
      Phân nhóm các lớp đối tượng theo loại
        Một khái niệm không được thể hiện trong hình vẽ trên nhưng cần đề cập đến là
   Namespace. Đây là tên gọi một nhóm các lớp đối tượng phục vụ cho một mục đích nào đó.
         Chẳng hạn, các lớp đối tượng xử lý dữ liệu sẽ đặt trong một namespace tên là Data.
   Các lớp đối tượng dành cho việc vẽ hay hiển thị chữ đặt trong namespace tên là Drawing.
          Một namespace có thể là con của một namespace lớn hơn. Namespace lớn nhất
   trong .NET Framework là System.




                              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ùng
       với nhau không sử dụng được. .NET Framework cho phép chúng ta tạo ra các lớp đối
       tượng và các namespace của riêng mình.
              Với hơn 5000 tên có sẵn, việc đặt trùng tên lớp của mình với một lớp đối tượng
       đã có là điều khó tránh khỏi. Namespace cho phép việc này xảy ra bằng cách sử dụng 1
       tên đầy đủ để nói đến 1 lớp đối tượng. Ví dụ, nếu muốn dùng lớp WebControls, chúng ta
       có thể dùng tên tắt của nó là WebControls hay tên đầy đủ là:
       System.Web.UI.WebControls.


Biê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ình
       cho mình vì tất cả các ngôn ngữ đều mạnh ngang nhau. Cũng bằng cách sử dụng các
       lớp đối tượng để xây dựng ứng dụng, .NET Framework buộc người lập trình phải sử
       dụng kỹ thuật lập trình hướng đối tượng (sẽ được nói tới trong các chương sau).
II. Web Server
      Trong phần này giới thiệu về IIS (phần mềm Web Server của Microsot dành cho
Windows), đồ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ựng
các ứng dụng Web tận dụng các điểm mạnh của Server-side Script, COM component,…theo
mô hình Client/Server. IIS có rất nhiều phiên bản, đầu tiên được phát hành rời trong bản
Service pack của WinNT.
      Các phiên bản Windows 2000 đã có tích hợp IIS 5.0.
      Windows XP tích hợp IIS 5.5
      Windows XP .NET Server tích hợp IIS 6 hỗ trợ các tính năng dành cho .NET của
       ASP.NET và Web Service.
      Windows Vista tích hợp IIS 7.0
2. Cài đặt Web Server
a. Cài đặt Web Server trên Windows 2000/Windows XP Professional
       Windows 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ài
IIS 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).




      Bướ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ặc
       http://127.0.0.1

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

      Ghi chú: Để kiểm tra cài đặt: Khởi động trình duyệt truy cập địa chỉ : http://Localhost
       Kết quả thành công.




b. Cài đặt Web Server trên Windows Vista
      Bước 1: Chọn Start  Settings  Control Panel
      Bước 2: Chọn Classic View  Chọn Programs and features




      Bước 3: Chọn Turn Windows features on or off




      Bước 4: Đánh dấu vào mục Internet Information Services (IIS)  Chọn Ok để cài đặt

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




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

       Kiềm tra kết quả cài đặt: Khởi động trình duyệt nhập địa chỉ http://localhost




c. Cài đặt Web Server trên Windows Server 2003
      Cài đặt Web Server trên Windows Server 2003 cũng tương tự như cài đặt Web Server
trên Windows 2000.
      Bước 1. Chọn Control Panel | Add/Remove programs.
      Bước 2. Add/Remove Windows Components.
      Bước 3. Đánh dấu vào Application Server.




      Bước 4: Chọn Next để cài đặt
3. Cấu hình Internet Information Services
     Để cấu hình IIS, vào Control Panel  Administrative Tools  Internet Services
Manager. Trên các hệ điều hành Windows 2000/XP, Vista Microsoft sử dụng công cụ Microsoft
Management Console (MMC) để làm công cụ quản lý.
a. Cấu hình IIS quy định trang chủ mặc định
      Trên Win 2000, XP
          o Start  Settings  Control Panel  Administratrive tools  Mở mục Internet
            Infomtic Services




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

          o Click phải mục Default Website  Properties Chọn trang Documents để quy
            định trang chủ mặc định
                VD:       Default.Aspx
                          Default.asp
                          Index.asp
                          Home.html
                          Index.htm




      Cấu hình IIS trên Win Vista
          o Start  Settings  Control Panel     Administratrive tools  Mở mục IIS
            Manager




          o Click phải mục Default Document




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

b. 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ột
thư mục con trong wwwroot cho mỗi ứng dụng nhưng tố hơn bạn nên tạo ánh xạ (Virtual
Directory) liên kết đến thư mục đó.Để tạo một virtual directory:
    Trên Windows 2000, Xp
             Click phải: Default WebsiteNew/ Virtual Directory Next




                                           Next                                     Nextt
Khai 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  Finish
      Trên Win Vista
             Click phải: Default WebsiteAdd Application (hoặc Virtual Directory)




       Khai 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.Net




Chạ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/Maytinh




IV. Tạo ứng dụng đầu tiên
1. Khởi động MS Visual Studio .Net
       Chúng ta sẽ bắt đầu bằng việc làm quen với môi trường phát triển ứng dụng (IDE) của
Visual Studio.NET 2005.
       Start  Programs  Microsoft Visual Studio 2005  Microsoft Visual Studio 2005




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

2. Tạo ứng dụng web
      Bước 1. Chọn từ thực đơn File  New  Website
            Chọn các dạng ứng dụng tạo (ASP.Net Website) Vị trí lưu trữ (D:Wellcom) Ngôn
      ngữ lập trình (C#)  Chon Ok




Kết quả:
   Cửa sổ Solution Explorer




   Trang Default.aspx (Design)




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

   Trang Default.aspx (Source)




   Trang Default.aspx.cs




3. 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.

Biê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ụng
       o Kiểm lỗi trước khi chạy: Từ Menu Build  Chọn Build Web Site




       o Chấp nhận bật chế độ debug cho Website




       o Chạy chương trình Bấm Ctrl + F5 : để chạy chương trình (không debug) và F5 để
         chạy debug.




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

5. Phân loại tập tin trong ASP.Net

ASP.Net ASP                                                Diễn giải
.asax   .asa            Tập tin global.asax trong ASP .Net thay thế cho tập tin global.asa của ASP,
                        là tập tin quản lý các sự kiện của ứng dụng (application), session, và các sự
                        kiện khi có các yêu cầu tới trang web.
.ascx                   Các điều khiển do người dùng tự tạo được lưu trữ với phần mở rộng là ascx.
.asmx                   Tập tin Web Service của ứng dụng ASP.Net
.aspx         .asp      Phần mở rộng của trang ASP.Net
.config                 Tập tin cấu hình ứng dụng theo định dạng XML. Web.config chứa hầu hết
                        các cấu hình của ứng dụng
.cs                     Tập tin mã nguồn viết theo ngôn ngữ C#
.js           .js       Tập tin mã nguồn của Jscript
.vb                     Tập tin mã nguồn viết theo ngôn ngữ VB.Net
V. Làm quen với các thành phần giao diện trên VS .Net
1. Solution Explorer
                   Hiển thị cửa số Solution Explorer: Thực đơn View | Solution Explorer
                   Thao tác với cửa sổ Solution Explorer : Đây là cửa số quản lý các "tài nguyên" có
                    trong ứng dụng. Thông qua cửa sổ này, chúng ta có thể:
                       o Thực hiện các chức năng: sao chép, cắt, dán trên tập tin, thư mục như
                         Windows Explorer.
                       o Tổ chức thư mục quản lý ứng dụng: Sử dụng chức năng Add | New Folder
                         từ thực đơn ngữ cảnh.
                       o Thêm thành phần mới cho ứng dụng: Sử dụng chức năng Add | Add New
                         Item…từ thực đơn ngữ cảnh. Xuất hiện hộp thoại Add New Item.




                                 Web Form: Thêm trang Web
                                 Class: Thêm lớp đối tượng
                                 Module Web Form: Thêm thư viện
                                 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ấp
              chuộ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.Net




         Xác định Project khởi động (trong trường hợp Solution có nhiều Project): Chọn Set
          as StartUp Project từ thực đơn ngữ cảnh.




2. Property Window
      Hiển thị cửa số Properties Window: Thực đơn View | Properties Window.
      Thông qua cửa sổ thuộc tính, chúng ta có thể thiết lập thuộc tính cho trang web và các
      đối tượng có trong trang web.




3. Toolbox
      Hiển thị Toolbox: Thực đơn View  Toolbox




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




4. Document Outline Window
      Hiển thị cửa sổ Document Outline: Thực đơn View / Other Windows / Document Outline.
      Cửa sổ này hiển thị các thành phần của trang web theo tổ chức cây  rất dễ quản lý và
      thao tác với các đối tượng có trong trang Web.




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

Chương 02:

                                 WEB SERVER CONTROL
                                                   Điều khiển chuẩn – Standard
                                                   Điều khiển kiểm tra dữ liệu Validation
                                                   Một số điều khiển khác
                                                   Đối tượng ViewState
I. Điều khiển chuẩn – Standard
       Những lý do nên sử dụng ASP.Net Standard Web Control:
            Đơn giản, tương tự như các điều khiển trên Windows Form.
            Đồng nhất: Các điều khiển Web server có các thuộc tính giống nhau  dễ tìm hiểu
             và sử dụng.
            Hiệu quả: Các điều khiển Web Server tự động phát sinh ra các tag HTML theo từng
             loại Browser.




Bảng liệt kê các thuộc tính chung của các Web control
Thuộc tính                Kiểu                                  Ý nghĩa
(ID)             Chuỗi              Qui định tên của điều khiển. Tên của điều khiển là duy nhất.
AccessKey        String             Qui định ký tự để di chuyển nhanh đến điều khiển - ký tự xử
                                    lý phím nóng.
Attributes       AttributeCollection Tập hợp các thuộc tính của điều khiển HTML
BackColor        Color              Qui định màu nền của điều khiển.
BorderColor      Color              Qui định màu đường viền của điều khiển.
BorderStyle      BorderStyle        Qui định kiểu đường viền của điều khiển.
BorderWidth Unit                    Qui định độ rộng của đường viền.
CssClass         String             Qui định hình thức hiển thị của điều khiển qua tên CSS.
Enabled          Boolean            Qui định điều khiển có được hiển thị hay không. Giá trị mặc
                                    định của thuộc tính này là True – được phép hiển thị.
Font             FontInfo           Qui định Font hiển thị cho điều khiển
ForeColor        Color              Qui định màu chữ hiển thị trên điều khiển


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

Height           Unit                Qui định chiều cao của điều khiển
ToolTip          String              Dòng chữ sẽ hiển thị khi rê chuột vào điều khiển.
Width            Unit                Qui định độ rộng của điều khiển.
1. Label
       Label thường được sử dụng để hiển thị và trình bày nội dung trên trang web. Nội dung
được hiển thị trong label được xác định thông qua thuộc tính Text. Thuộc tính Text có thể nhận
và hiển thị nội dung với các tag HTML.
Ví dụ:
         lblA.Text = "Đây là chuỗi văn bản thường";
         lblB.Text = "<B>Còn đây là chuỗi văn bản được in đậm</B>";
2. TextBox
      TextBox là điều khiển được dùng để nhập và hiển thị dữ liệu. TextBox thường được sử
dụng nhiều với các ứng dụng trên windows form.
Các thuộc tính:
        Text: Nội dung chứa trong Textbox
        TextMode: Qui định chức năng của Textbox, có các giá trị sau:
            o SingleLine: Hiển thị và nhập liệu 1 dòng văn bản
            o MultiLine: Hiển thị và nhập liệu nhiều dòng văn bản
            o Password: Hiển thị dấu * thay cho các ký tự có trong Textbox.
        Rows: Trong trường hợp thuộc tính TextMode = MultiLine, thuộc tính Rows sẽ qui định
         số dòng văn bản được hiển thị.
        Maxlength: Qui định số ký tự tối đa được nhập vào cho TextBox
        Wrap: Thuộc tính này qui định việc hiển thị của văn bản có được phép tự động xuống
         dòng khi kích thước ngang của của điều khiển không đủ để hiển thị dòng nội dung văn
         bản. Giá trị mặc định của thuộc tính này là True - tự động xuống dòng.
Ví dụ:




3. Image
         Đ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ị.
        AlternateText: Chuỗi văn bản sẽ hiển thị khi tập tin được thiết lập trong thuộc tính
         ImageURL không tồn tại.
        ImageAlign: Vị trí hiển thị giữa hình và nội dung văn bản.
            o NotSet

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




              o Left




              o Middle




              o TextTop




              o Right




4. Button, ImageButton, LinkButton
       Các điều khiển Button, ImageButton, LinkButton mặc định đều là các nút Submit Button,
        mỗi khi được nhấn vào sẽ PostBack về Server.
       Khi chúng ta thiết lập giá tri thuộc tính CommandName cho các điều khiển này, chúng ta
        gọi tên chung cho các điều khiển này là Command Button.
   Các thuộc tính chung của Button, ImageButton, LinkButton
          Thuộc tính                                     Ý nghĩa
       Text                Chuỗi văn bản hiển thị trên điều khiển.
       CommandName         Tên lệnh. Được sử dụng trong sự kiện Command.
       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, Button




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

Xử lý sự kiện:
               protected void btTinhtien_Click(object sender, EventArgs e)
                   {
                       int soluong=int.Parse(txtSoluong.Text );
                       int dongia=int.Parse(txtDongia.Text );
                       int Thanhtien=soluong * dongia;
                       txtThanhtien.Text = Thanhtien.ToString();
                    }
Khi thi hành ứng dụng




5. HyperLink
      Điều khiển này được sử dụng để tạo ra các liên kết siêu văn bản.
Các thuộc tính:
         ImageURL: Qui định hình hiển thị trên điều khiển.
         Text: Chuỗi văn bản sẽ được hiển thị trên điều khiển. Trong trường hợp cả 2 thuộc
          tính ImageURL và Text được thiết lập, thuộc tính ImageURL được ưu tiên, thuộc tính
          Text sẽ được hiển thị như Tooltip.
         NavigateUrl: Đường dẫn cần liên kết đến.
         Target: Xác định cửa sổ sẽ hiển thị cho mối liên kết
               o _blank: Hiển thị trang liên kết ở một cửa sổ mới.
               o _self: Hiển thị trang liên kết tại chính cửa sổ chứa liên kết đó.
               o _parent: Hiển thị trang liên kết ở frame cha.
      Ví dụ:
                        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 Hyperlink




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

6. Listbox và DropdownList
       ListBox và DropdownList là điều khiển hiển thị danh sách lựa chọn mà người dùng có
thể chọn một hoặc nhiều (chỉ dành cho ListBox). Các mục lựa chọn có thể được thêm vào danh
sách thông qua lệnh hoặc ở cửa sổ thuộc tính (Property Windows).
Các thuộc tính:
      AutoPostBack: Thuộc tính này qui định điều khiển có được phép tự động PostBack về
       Server khi chỉ số của mục chọn bị thay đổi. Giá trị mặc định của thuộc tính này là False -
       không tự động Postback.
      Items : Đây là tập hợp chứa các mục chọn của điều khiển. Ta có thể thêm vào mục chọn
       vào thời điểm thiết kế thông qua cửa sổ ListItem Collection Editor, hoặc thông qua lệnh.
      Rows: Qui định chiều cao của ListBox theo số dòng hiển thị.
      SelectionMode: Thuộc tính này xác định cách thức chọn các mục trong ListBox.
       SelectionMode chỉ được phép thay đổi trong quá trình thiết kế, vào lúc thực thi chương
       trình, thuộc tính này chỉ đọc.
          o Single: Chỉ được chọn một mục có trong danh sách (mặc định).
          o Multiple: Cho phép chọn nhiều lựa chọn.
Tìm hiểu về tập hợp Items
      Add: Thêm mục mới vào cuối danh sách, sử dụng phương thức Items.Add
              Items.Add(<String>);
      Insert: Thêm mục mới vào danh sách tại một vị trí nào đó, sử dụng phương thức
       Items.Insert
              Items.Insert(<index>,<String>);
      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(<Chuoi>);
             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(<index>);
   o Clear: Phương thức Clear của tập hợp Items được dùng để xóa tất cả những Item có
     trong danh sách. Cú pháp
              Items.Clear();
Xử lý mục chọn
      Các thuộc tính sau sẽ giúp bạn xác định chỉ số, giá trị của mục đang được chọn. Trong
trường hợp điều khiển cho phép chọn nhiều, ta duyệt qua các Item trong tập hợp Items,
          o Sử 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.
             SelectedIndex: Cho biết chỉ số của mục được chọn. Trong trường hợp chọn nhiều
              mục, SelectedIndex sẽ trả về chỉ số mục chọn đầu tiên.
             SelectedItem: Cho biết mục được chọn. Trong trường hợp chọn nhiều mục,
              SelectedItem sẽ trả về mục chọn đầu tiên.

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

              SelectedValue: Cho biết giá trị của mục được chọn. Trong trường hợp chọn nhiều
               mục, SelectedValue sẽ trả về giá trị mục chọn đầu tiên.
Ví dụ: Tạo Website Dulich gồm 1 listbox, 2 label , 1 Button trong đó điều khiển Listbox là điều
khiển danh sách lstKhu_dl:     SelectionMode=Multiple ;             Rows=4
       Khi 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 <= lstDiadanh.Items.Count - 1; i ++)
                  {
                      if (lstDiadanh.Items[i].Selected)
                           lbDiadanh.Text += "<li>" + lstDiadanh.Items[i].Value;
                  }
                  /* Hoặc
                  foreach (ListItem item in lstDiadanh.Items )
                    {
                   if (item.Selected)
                        lbDiadanh.Text += "<li>" + item.Value     ;
                   } */
              }
      Khi thi hành:




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

7. Checkbox, RadioButton
Các thuộc tính
      Checked: Cho biết trạng thái của mục chọn - có được chọn hay không
      TextAlign: Qui định vị trí hiển thị của điều khiển so với chuỗi văn bản.



      AutoPostBack: Thuộc tính này qui định điều khiển có được phép tự động PostBack về
       Server khi các mục chọn của điều khiển bị thay đổi. Giá trị mặc định của thuộc tính này
       là False - không tự động Postback.
      GroupName (RadioButton): Tên nhóm. Thuộc tính này được sử dụng để nhóm các điều
       khiển RadioButton lại thành 1 nhóm.
Ví dụ: Nhóm các RadioButton Giới tính, Thu nhập, Nhóm Checkbox Ngoại ngữ




                                    Danh sách các điều khiển




8. CheckBoxList, RadioButtonList
       Hai điều khiển này được dùng để tạo ra một nhóm các CheckBox/Radio Button. Do đây
là điều khiển danh sách nên nó cũng có thuộc tính Items chứa tập hợp các mục chọn như
ListBox/DropDownList. Các thao tác trên tập hợp Items, xử lý mục chọn cũng tương tự như
ListBox/DropDownList.
Tạo mới: Kéo thả RadioButtonList (Hoặc CheckbocList) vào Form




 Chọn Edit Items



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




b. Các thuộc tính
      RepeatColumns: Qui định số cột hiển thị.
      RepeatDirection: Qui định hình thức hiển thị
           o Vertical: Theo chiều dọc
           o    Horizontal: Theo chiều ngang
      AutoPostBack: Thuộc tính này qui định điều khiển có được phép tự động PostBack về
       Server khi các mục chọn của điều khiển bị thay đổi. Giá trị mặc định của thuộc tính này
       là False - không tự động Postback.
c. Ví dụ




Xử lý sự kiện:
       Private Sub rblThu_nhap_SelectedIndexChanged(…)…
               lblThu_nhap.Text = "Bạn chọn thu nhập: " + rblThu_nhap.SelectedItem.Text;
       End Sub
Khi thi hành:




Ví dụ: Bổ sung thêm vào Website Dulich 1 trang Thongtincanhan gồm: 1 Textbox, 2
RadioButton giới tính, 2 Checkbox ngọai ngữ, 3 radioButton thu nhập listbox, 2 label , 1
RadioButtonList 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.Net




Xử 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ữ";
                  else
                       gt = "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";
                  else
                       thunhap = " trên 3 triệu ";
                  trinhdo = rdblistTrinhdo.SelectedItem.Value;
                  lbThongtin.Text = "THÔNG TIN VỀ BẠN <li> Tên: " + ten
                       + "<li> Giới tính:" + gt + " <li> Ngoại ngữ :"
                       + ngoaingu + "<li> Mức thu nhập:" + thunhap
                        + "<li> Trình độ:" + trinhdo ;
       }
Khi thi hành:




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

II. Điều khiển kiểm tra dữ liệu
      Trong phần này chúng ta sẽ tìm hiểu về các điều khiển được dùng để kiểm tra dữ liệu.




       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 xem
nhập lại mật khẩu có giống với mật khẩu đã nhập ở trên hay không.
rfvNhap_lai.Display = Static




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




rfvNhap_lai.Display = Dynamic




1. Điều khiển Required Field Validator
       Điều khiển này được dùng để kiểm tra giá trị trong điều khiển phải được nhập.
       Sử dụng điều khiển này để kiểm tra ràng buộc dữ liệu khác rỗng (bắt buộc nhập).
Thuộc tính
      InitialValue: Giá trị khởi động. Giá trị bạn nhập vào phải khác với giá trị của thuộc tính
       này. Giá trị mặc định của thuộc tính này là chuỗi rỗng.
2. Điều khiển Compare Validator
       Điều khiển này được dùng để so sánh giá trị của một điều khiển với giá trị của một điều
khiển khác hoặc một giá trị được xác định trước.
       Thông qua thuộc tính Operator, chúng ta có thể thực hiện các phép so sánh như: =, <>,
>, >=, <, <= hoặc dùng để kiểm tra kiểu dữ liệu (DataTypeCheck).
       Sử dụng điều khiển này để kiểm tra ràng buộc miền giá trị, kiểu dữ liệu, liên thuộc tính.
Lưu ý: Trong trường hợp không nhập dữ liệu, điều khiển sẽ không thực hiện kiểm tra vi phạm.
Các thuộc tính
      ControlToCompare: Tên điều khiển cần so sánh giá trị. Nếu bạn chọn giá trị của thuộc
       tính Operator = DataTypeCheck thì không cần phải xác định giá trị cho thuộc tính này.
      Operator: Qui định phép so sánh, kiểm tra kiểu dữ liệu
          o Equal: = (Đây là giá trị mặc định)
          o GreaterThan: >
Biên sọan: Dương Thành Phết                                                               Trang 32
Bài Giảng Môn Lập Trình Website ASP.Net

          o GreaterThanEqual: >=
          o LessThan: <
          o LessThanEqual: <=
          o NotEqual: <>
          o DataTypeCheck: Kiểm tra kiểu dữ liệu
      Type: Qui định kiểu dữ liệu để kiểm tra hoặc so sánh.
          o String
          o Integer
          o Double
          o Date
          o Currency
       ValueToCompare: Giá trị cần so sánh. Trong trường hợp bạn xác định giá trị của cả 2
       thuộc tính ControlToCompare và ValueToCompare thì giá trị của điều khiển được qui
       định bởi thuộc tính ControlToCompare được ưu tiên dùng để kiểm tra.
3. Điều khiển Range Validator
     Điều khiển này được dùng để kiểm tra giá trị trong điều khiển phải nằm trong đoạn [min-
max]  Sử dụng điều khiển này để kiểm tra ràng buộc miền giá trị của dữ liệu.
Lưu ý: Trong trường hợp không nhập dữ liệu, điều khiển sẽ không thực hiện kiểm tra vi phạm.
Các thuộc tính
      MinimumValue: Giá trị nhỏ nhất.
      MaximumValue: Giá trị lớn nhất.
      Type: Xác định kiểu để kiểm tra dữ liệu. Có thể thực hiện kiểm tra trên các kiểu dữ liệu
       sau:
          o String
          o Integer
          o Double
          o Date
          o Currency
4. Điều khiển Regular Expression Validator
       Điều khiển này được dùng để kiểm tra giá trị của điều khiển phải theo mẫu được qui
định trước: địa chỉ email, số điện thoại, mã vùng, số chứng minh thư, …
Lưu ý: Trong trường hợp không nhập dữ liệu, điều khiển sẽ không thực hiện kiểm tra vi phạm.
Thuộc tính:
      ValidationExpression: Qui định mẫu kiểm tra dữ liệu.




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




Bảng mô tả các ký hiệu thường sử dụng trong Validation Expression




5. Điều khiển Custom Validator
       Điều khiển này cho phép bạn tự viết hàm xử lý kiểm tra lỗi.
Sự kiện
      ServerValidate: Đặt các xử lý kiểm tra dữ liệu trong sự kiện này. Việc kiểm tra này được
       thực hiện ở Server.
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ính
ErrorMessage của Validation Control sẽ được hiển thị. Nếu giá trị của thuộc tính ErrorMessage
không được xác định, thông báo lỗi đó sẽ không được xuất hiện trong bảng lỗi.
Các thuộc tính
      HeaderText: Dòng tiêu đề của thông báo lỗi


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

      ShowMessageBox: Qui định bảng thông báo lỗi có được phép hiển thị như cửa sổ
       MessageBox hay không. Giá trị mặc định của thuộc tính này là False - không hiển thị.




      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.




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




      Thuộ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(…)…
             lblThong_bao.Text = "Đăng ký thành công";
      End Sub
Các thông báo lỗi xuất hiện trên màn hình nhập liệu khi dữ liệu nhập không hợp lệ.




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




Các thông báo lỗi xuất hiện qua hộp thoại khi dữ liệu nhập không hợp lệ:




Nếu tất cả đều hợp lệ




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

III. Một số điều khiển khác
1. Điều khiển Literal
      Tương tự như điều khiển Label, điều khiển Literal cũng được sử dụng để hiển thị chuỗi
văn bản trên trang Web.
        Nếu muốn hiển thị một chuỗi văn bản trên trang Web, chúng ta có thể đánh nội dung
trực tiếp vào trang Web mà không cần phải sử dụng điều khiển. Chỉ sử dụng các điều khiển
như Label, Literal để hiển thị khi cần thay đổi nội dung hiển thị ở phía server.
       Điểm khác biệt chính giữa Label và Literal là khi hiển thị nội dung lên trang web (lúc thi
hành), điều khiển Literal không tạo thêm một tag Html nào cả, còn Label sẽ tạo ra một tag span
(được sử dụng để lập trình ở phía client).
Ví dụ:
           Khi thiết kế.




           Khi thi hành




Lệnh xử lý:
       protected void Page_Load(object sender, EventArgs e)
       {
               Label1.Text="<b>Đây là chuỗi ký tự trong label</b>";
               Literal1.Text = "<i> Đây là chuỗi ký tự trong Literial</i>";
       }
Chọn chức năng từ thực đơn View | Source trên Browser:
           <span id="Label1" style="display:inline-block;width:417px;"><b>Đây là chuỗi ký tự trong
           label</b></span><br />


           <i> Đây là chuỗi ký tự trong Literial</i>
2. Điều khiển AdRotator
      Điều khiển AdRotator được dùng để tạo ra các banner quảng cáo cho trang web, nó tự
động thay đổi các hình ảnh (đã được thiết lập trước) mỗi khi có yêu cầu, PostBack về server.
a. Thuộc tính
          AdvertisementFile: Tên tập tin dữ liệu (dưới dạng xml) cho điều khiển. Dưới đây là cú
           pháp của tập tin Advertisement (*.xml)
   <Advertisements>
           <Ad>
                  <ImageUrl>Đường dẫn đến tập tin hình ảnh</ImageUrl>
                  <NavigateUrl>Đường dẫn đến liên kết</NavigateUrl>
                  <AlternateText>Chuỗi văn bản được hiển thị như Tooltip</AlternateText>
                  <Keyword>Từ khóa dùng để lọc hình ảnh</Keyword>

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

               <Impressions>Tần suất hiển thị của hình ảnh</Impressions>
       </Ad>
   </Advertisements>
Lưu ý: Phải nhập đúng các giá trị trong tag như mẫu trên. Các giá trị trong tag có phân biệt chữ
Hoa chữ thường. Trong đó
      ImageUrl: Đường dẫn đến một tập tin hình ảnh
      NavigateUrl: Đường dẫn đến trang web sẽ được liên kết đến khi người dùng nhấn vào
       hình ảnh đang hiển thị.
       AlternateText: Giá trị này sẽ được hiển thị nếu như đường dẫn đến tập tin hình ảnh
       (qua thuộc tính NavigateUrl) không tồn tại. Đối với một số trình duyệt, tham số này được
       hiển thị như ToolTip của hình quảng cáo.
      Keyword: Được dùng để phân loại các quảng cáo. Thông qua giá trị này, ta có thể lọc
       các quảng cáo theo một điều kiện nào đó.
      Impressions: Tham số này quyết định tầng suất hiển thị của hình ảnh. Giá trị này càng
       lớn, khả năng hiển thị càng nhiều.
      KeywordFilter: Được dùng để chọn lọc và hiển thị những hình quảng cáo có giá trị của
       tham số Keyword = giá trị của tham số này.
       Giá trị của tham số này mặc định không được thiết lập  Hiển thị tất cả những hình có
   trong tập tin XML. Trong trường hợp nếu không có hình nào có giá trị Keyword bằng giá trị
   của thuộc tính này, sẽ không có hình nào được hiển thị.
      Target: Qui định cửa sổ hiển thị trang liên kết
      _blank: Trang liên kết sẽ được mở ở một cửa sổ mới.
      _self: Trang liên kết sẽ được mở ở chính cửa sổ chứa điều khiển.
      _parent: Trang liên kết sẽ được mở ở cửa sổ cha.
b. Sự kiện
      AdCreated: Xảy ra khi điều khiển tạo ra các quảng cáo.
Ví dụ: Tạo Website Quangcao (Tạo Quảng cáo sử dụng điều khiển AdRotator)
       Bước 1. Thiết kế giao diện




       Bước 2. Tạo tập tin dữ liệu: Quangcao.xml
          o Sử dụng chức năng Add New Item… từ thực đơn ngữ cảnh
          o Chọn XML File trong hộp thoại Add New Item




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




         o Nhập vào cú pháp qui định cho tập tin Quangcao.xml (theo cú pháp của tập tin
           Advertisement)
                    <?xml version="1.0" encoding="utf-8" ?>
                    <Advertisements>
                      <Ad>
                         <ImageUrl>PicturesBaihatviet.gif</ImageUrl>

                    <NavigateUrl>http://www.Baihatviet.net</NavigateUrl>
                        <AlternateText>Web Nhạc bài hát
                    việt</AlternateText>
                         <Keyword>Music</Keyword>
                         <Impressions>10</Impressions>
                      </Ad>
                    <Advertisements>
         o Chuyển màn hình qua trang Data, nhập liệu trực tiếp trên màn hình này
                   Click phải màn hình đang code chọn View Data Grid




                    Nhập thêm các liên kết quảng cáo sau:




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




Bước 3. Thiết lập thuộc tính cho điều khiển adQuangcao
          o AdvertisementFile: Quangcao.xml
          o Target: _blank (Khi nhấn vào sẽ hiển thị liên kết ở cửa sổ mới.)
          o 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ụng




3. Điều khiển Calendar
      Một điều chắc chắn rằng điều khiển Calendar đã quá quen thuộc với các bạn lập trình
ứng dụng trên windows, nó có giao diện trực quan, vì vậy, người dùng có thể chọn ngày dễ
dàng.
a. Thuộc tính
      DayHeaderStyle: Qui định hình thức hiển thị tiêu đề của các ngày trong tuần
      DayStyle: Qui định hình thức hiển thị của các ngày trong điều khiển.
      NextPrevStyle: Qui định hình thức hiển thị của tháng trước/sau của tháng đang được
       chọn.
      SeleltedDayStyle: Qui định hình thức hiển thị của ngày đang được chọn.
      SeleltedDate: Giá trị ngày được chọn trên điều khiển
      TitleStyle: Qui định hình thức hiển thị dòng tiêu đề của tháng được chọn
      TodayDayStyle: Qui định hình thức hiển thị của ngày hiện hành (trên server).
      WeekendDayStyle: Qui định hình thức hiển thị của các ngày cuối tuần (thứ 7, chủ nhật)
      OtherMonthDayStyle: Qui định hình thức hiển thị của các ngày không nằm trong tháng
       hiện hành.
b. Sự kiện
      SelectionChanged: 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ành
      VisibleMonthChanged: Xự kiện này xảy ra khi bạn chọn tháng khác với tháng hiện hành
Ví dụ: Tạo trang Calendard
Bước 1: Tạo Calendard vào trang



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




Bước 2: Chọn Auto Format (Chọn mẫu định dạng)




                                                                               




                                          Khi thiết kế
Xử lý sự kiện:
  protected void Page_Load(object sender, EventArgs e)   {
      lbNgay.Text = "Hôm nay ngày " + DateTime.Today.ToString ("dd/MM/yyyy");
  }
  protected void Calendar1_SelectionChanged1(object sender, EventArgs e)   {
      lbThongbao.Text ="Bạn đang chọn " + Calendar1.SelectedDate.ToString("dd/MM/yyyy");
  }




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




                                          Khi thi hành
4. Điều khiển File Upload.
      Điều khiển FileUpload cho phép người sử dụng Upload file từ chính ứng dụng Web của
mình. File sau khi Upload có thể lưu trữ ở 1 nơi nào đó có thể là trên ổ cứng hay trong
Database. Điều khiển FileUpload hỗ trợ các thuộc tính sau:
         Thuộc tính                                  Ý nghĩa
        Enable         Cho phép bạn vô hiệu hoá điều khiển FileUpload.
        FileBytes      Cho phép lấy nội dung file đã được upload như một mảng Byte.
        FileContent    Cho phép lấy nội dung của file đã được upload theo dòng dữ liệu
        FileName       Lấy tên file được Upload
        HasFile        Trả về giá trị đúng khi File được Upload


        Điều khiển FileUpload hỗ trợ các phương thức
           o Focus: Enables you to shift the form focus to the FileUpload control.
           o 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ề Upload
file.
        Lớp HttpPostedFile gồm các thuộc tính sau:
           o ContentLength: Lấy về kích thước của File Upload tính theo byte
           o ContentType: Lấy kiểu MIME của File Upload
           o FileName: Cho phép lấy tên của file được upload.
           o InputStream: Enables you to retrieve the uploaded file as a stream.
        Lớp HttpPostedFile chỉ hỗ trợ phương thức
           o SaveAs: 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.Net

Ví 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ừa
Upload sẽ được lưu trong thư mục Upload.




                                     Màn hình ở chế độ thiết kế
Xử lý sự kiện:
      protected void Button1_Click(object sender, EventArgs e)    {
                string sTenfile ;
                //Tách lấy tên tập tin
                sTenfile = FileUpload1.FileName;
                //Thực hiện chép tập tin lên thư mục Upload
                 FileUpload1.SaveAs(MapPath("~/Upload/" + sTenfile));
                lbThongbao.Text = "Đã upload thành công" ;
  }
Khi thi hành:




               Nếu thành công




5. Điều khiển Panel và PlaceHolder
       Hai điều khiển Panel và PlaceHolder được sử dùng để chứa các điều khiển khác. Thuộc
tính thường dùng của 2 điều khiển này là Visible. Nếu giá trị của thuộc tính này = True, các
điều khiển chứa bên trong sẽ được hiển thị, ngược lại (Visible = False), không có điều khiển
nào chứa bên trong được hiển thị.
        Tuy nhiên, điều khiển Panel cho phép chúng ta kéo những điều khiển vào bên trong nó
lúc thiết kế, còn điều khiển PlaceHolder thì không.
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 ra
               trong panel, có thể là các giá trị:NotSet, LeftToRight, and RightToLeft.
              GroupingText: Cho phép bạn trình bày Panel như 1 Fieldset với một chú giải riêng
               biệt.
              HorizontalAlign: Cho phép bạn chỉ ra hướng ngang thể hiện nội dung của panel
               và 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.Net

               ScrollBars: Cho phép bạn hiển thị scrollbars khi bạn cố định chiều cao hoặc chiều
                rộ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:

      protected void Page_Load(object sender, EventArgs e)
        {
           for (int i = 1; i < 100; i++)
           {
           buletnghenghiep.Items.Add("Nghề "+i.ToString());
           }
        }
        protected void chkhtsothich_CheckedChanged(. . . .)
        {
           if (chksothich.Checked == true)
               panelsothich.Visible = true;
           else
               panelsothich.Visible = false;
        }
        protected void chkhtnghenghiep_CheckedChanged(. . . )
        {
           if (chknghenghiep.Checked == true)
               panelnghenghiep.Visible = true;
           else
               panelnghenghiep.Visible = false;
        }
Thi hành:




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




6. Đ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 trang
web có độ dài lớn thành các phần để hiển thị.
       Điều khiển MultiView chứa đựng 1 hoặc nhiều điều khiển View, 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ố
               Index
              Views: Cho phép bạn lấy về tập hợp các điều khiển View chứa đựng trong điều
               khiể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ọn
Ví dụ: Tạo 1 website MultiView: Sử dụng MultiView kết hợp với điều khiển Menu để tạo một
TabPage




Thiế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)
                  o Tạo Control Menu vào Form




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




                o Chọn Edit Menu Item




                   Lần lượt khái báo các nhãn (Text) là: Tab 1, Tab 2, Tab 3 và các giá trị
                   (Value) tương ứng là: 0 , 1, 2
                   Thuộc tính Orientation: Horizaltal (Menu hướng ngang)
                o Bổ sung nội dung vào các view tương ứng




Xử lý sự kiện
            <script runat="server">
            void Menu1_MenuItemClick(object sender, MenuEventArgs e){
                 int index = int.Parse(e.Item.Value);
                 MultiView1.ActiveViewIndex = index;
                 }
                 void Page_Load(object sender, EventArgs e){
                 if (!IsPostBack){

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

                   MultiView1.ActiveViewIndex = 0;
                   }
             }
             </script>
Thi hành:




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

III. Đố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 khi
web server gởi kết quả về cho Client. Mặc định, các trang web khi được tạo sẽ cho phép sử
dụng đối tượng ViewState thông qua thuộc tính EnableViewState (của trang web) = True.
Gán giá trị cho ViewState:
         ViewState("Tên trạng thái") = <giá trị>;
Nhận giá trị từ đối tượng ViewState:
         <biến> = ViewState("Tên trạng thái");
Ví dụ:




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 hidden
và các giá trị này đã được mã hóa. Đối tượng ViewState giúp chúng ta giảm bớt công sức
trong việc lưu trữ và truy xuất các thông tin mà không phải sử dụng nhiều điều khiển hidden.
         Chọn chức năng View | Source từ browser




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

IV. Thiết kế Website với MasterPage
      MasterPage là cách để thiết kế layout chung cho website. Ví dụ website của bạn có layout
gồm 5 phần banner, footer, left, right Và content(phần chứa nội dung hiển thị cho các tin). Ta
thấ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 web
trong website của bạn sẽ áp dụng layout này thông qua contentpage
Tạo MasterPage
       Tạo MasterPage giống với tạo các trang aspx bình thường nhưng trên hộp Add New
Item 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:




Biê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 ContetPalceHolder
Sử dụng trang Masterpage để thiết kế các trang
      Tạo mới trang web Default.aspx và trang Tintuc.aspx




Biê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 MasterPage
      Khi có bất kỳ sự điều chỉnh nào trên trang Masterpage thì các trang được tạo từ trang
Masterpage 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ơ 2
trang tương ứng đã tạo (Default.aspx và Tintuc.aspx)




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

Kết quả khi thi hành




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




Chương 3

         KẾT NỐI CƠ SỞ DỮ LIỆU TRONG ASP.NET
                      Sử dụng các thành phần kết nối CSDL như : SQLDataSource, Access Data
                       Source, XML Data Source, . . .
                      Cách truyền tham số vào các điều khiển
I. SQL DATA SOURCE
1. Giới thiệu
       Điều khiển SqlDataSource dung để kết nối CSDL nếu dữ liệu của ứng dụng được lưu
trữ 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 CSDL
a. Tạo kết nối
      Tạo trang aspx và kéo điều khiển SQLDataSource từ ngăn data trên thanh Tollbox



      Chọn tiếp vào Conigure Data Source




      Nế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 Connection




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




                                          Tạo kết nối CSDL mới




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

       Khai báo các thông số cho SQLServer và chọn CSDL cần kết nối




                                          Kiểm tra kết quả kết nối




                   Chọn Next
                   Chọn Next
                   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.




                                  Chỉ định các cột dữ liệu

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




                       Khai báo điều kiện mệnh đề Where (Nếu có)




                                Khai báo sắp xếp (Nếu cần)




                         Chọn Test Query để kiểm tra kết quả nguồn dữ liệu.  Chọn Finish
                          để hòan thành

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

      Phần mã của giao tiếp này có được như sau:
      <asp:SqlDataSource ID="SqlDataSource1" runat="server"
      ConnectionString="<%$ConnectionStrings:QLBansachConnectionString
      %>"
      SelectCommand="SELECT [MaTG], [TenTG], [DiachiTG], [DienthoaiTG]
      FROM [TACGIA] ORDER BY [TenTG]">
      </asp:SqlDataSource>
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 Toolbox




      Chọn Choose DataSource là: SqldataSource1 đã tạo
      Ghi 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 Paging
                    Để cho phép sắp xếp khi click vào tiếu đề cột đánh dấu chọn: Enable
                     Sorting




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

       Thi hành tarng DSTacgia.aspx:




      Click tiêu đề lưới để kiểm tra tính sắp xếp
      Click số thứ tự trang (Cuối lưới) để kiểm tra tính phân trang
3. Đ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ực
tiế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:
                    http://localhost:49222/KetnoiCSDL/SachNXB.aspx?MaNXB=3
       Thực hiện:
          o Tạo trang NhaXB.aspx với nguồn dữ liệu là tòan bộ danh mục nhà xúât bản được
            trình bày trên lưới GridView như sau




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

         o Điều chỉnh bổ sung và lưới 1 cột liên kết
             Chọn Edit Column từ GiridView Task




             Thực hiện bổ sung 1 cột dạng HyperLinkField




             Vớ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}
                    Trong đó giá trị tham số ghi dưới dạng chỉ số các tham số được khai báo
                    trong 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.Net

       Thi 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ệu




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

    Khai báo điều kiện (Where) với tham số là QueryString. Đặt tên QueryStringField là:
MaNXB  Add
      Thi hành :
             Trang NhaXB.aspx




                   Click 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ày




b. Đ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:
         o 1 Control Textbox chỉ định thuộc tính ID: MaNXB
         o 1 Button chỉ định thuộc tính PostbackURL: ~/Lietkesach.aspx (Chính trang thiết
           kế)
         o Tạo SqlDataSource với nguồn dữ liệu như sau:




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




         o Điều kiện cho nguồn dữ liệu




             Vớ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 Xem




c. Đ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.Net

       Ta có thể khai báo tham số trong điều khiển SqlDataSource mà giá trị được lấy từ điều
khiển trình chủ
      Vì dụ thiết kế trang Chudesach.aspx thực hiện liệt kê danh mục sách có chủ đề được
chọ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 Chude




          o Tạo SQL DataSource (SqlDataSource1) cho DropDownList Với nguồn dữ liệu cho
            DropDownList là Table Chude:




          o 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ố)




      Tạo GridView (GridView1) Với nguồn dữ liệu từ Table Sach



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




             Và tham số điều kiện (Where)




         o 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ị.




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




d. Điều khiển SQL DataSource và thủ tục nội tại
       Tươ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ều
khiển kết nối CSDL SqlDatasource để truy cập CSDL SQL Server bằng thủ tục nội tại (Stored
Procedure)
      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 QLBansach
      Create Proc Sachtheogia
      @Giatu int, @Giaden Int
      as
      Select Masach, Tensach, Dongia, Mota, Tenchude, TenNXB,Ngaycapnhat
      From sach s, Chude c, nhaxuatban n
      Where c.MaCD=s.MaCD and n.MaNXB=s.MaNXB and Dongia Between @Giatu and
      @Giaden
      Lưu ý : Trong thủ tục có khai báo 2 tham số tên @Giatu và @Giaden
      Khi cấu hình Data Source cho điều khiển SqlDataSource




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




      Ta chọn : Specify a Custom SQL satament or stored procedure




      Tiếp tục chọn Stored Procedure cần kết nối.




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




      Xá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:




       Hãy Click chọn Giá từ DropDownList1 và Giá đến DropDownList2thì các sách thõa điều
kiện giá sẽ hiện thị tương ứng vào GridView


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

II. KẾT NỐI CƠ SỞ DỮ LIỆU VỚI ACCESS, XML
1. Điều khiển Access Data Source
      Tươ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ối
   vớ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 AccessDataSource
   từ 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 trang




      Chọn Configure Data Source . . .: Để thực hiện kết nối




      Chọ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)




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

      Chọn Ok và chọn Next để tiếp tục
      Xá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 Next




      Chọn Test Query để xem kết quả, chọn Finish để hòan tất




      Tạ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.Net




      Thi 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, . . . ta
khai báo tương tự như sử dụng điều khiển SQLDataSource .
2. Điều khiển XML DataSource
      Ngò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ển
   XMDataSource ta cần có tập tin XML.
       Sử dụng điều khiển XMLDataSource từ ngăn Data trên thanh Toolbox.




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

       Ví dụ thiết kế trang DanhsachSV.aspx hiện thị từ tập tin XML (DanhsachSV.XML)
      Tạo tập tin DanhsachSV.XML
             <?xml version="1.0" encoding="utf-8"?>
             <DSSinhvien>
                 <Sinhvien MaSV="SV01" HotenSV="Trần Văn Nam"
                     Diachi="123 Trần Hưng Đạo, Q5" Email="nam@gmail.com" />
                 <Sinhvien MaSV="SV02" HotenSV="Nguyễn Thị Lý"
                     Diachi="45 Hai Bà Trưng, Q1" Email="lythi@yahoo.com" />
                 <Sinhvien MaSV="SV03" HotenSV="Nguyễn Thị Bình"
                     Diachi="31 Lý Thường Kiệt,TB" Email="kiet@gmail.com"/>
             </DSSinhvien>




      Triệ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.aspx




      Chọn Configure Data Source . . .: Để thực hiện kết nối




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

      Chọn Nút Browse để tìm và chọn tập tin DanhsachSV.




      Chọn Ok để hòan tất
      Tạ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ả




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




III. KẾT NỐI VÀ CẬP NHẬT CSDL
       SQLDataSource và Access DataSource ngoài chức năng thong thường cho phép tạo kết
nố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 trong
QLBansach.




      Trang web được thiết kế với các Control tương ứng dư liệu cần nhập mới vào Table
Sach
    Tạo Control SqlDataSource vào trang  Tạo kết nối với CSDL QLBansach cho
      SqlDataSource
      o Chọn “Specify columns from a table or view”




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




      o Name: Sach
      o Columns : chọn tất cả các cột cần nhập mới dữ liệu tương ứng
      o Chọn Advanced … Chọn “Generate INSERT, UPDATE, and DELETE statements”
         (Tự động tạo các câu truy vấn INSERT, UPDATE, DELETE)




      o Click Next  Finish
      o Phải chuột SqlDataSource1, chọn Property, chọn thuộc tính
             o   “InsertQuery” : Câu lệnh nhập liệu
             o DeleteQuery: Câu lệnh xóa dữ liệu
             o UpdateQuery: Câu lệnh cập nhật sự điều chỉnh dữ liệu.




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




      Liên kết 1 cột trong bảng với 1 control trong màn hình (ví dụ cột Tensach liên kết với
control txtTensach)
   o Parameters : MaBanTin (tên field cần nhập liệu)
   o Parameter source : Control
   o ControlID : txtMaBanTin (Tên Control chứa DL cần them)
   Tương tự cho các cột khác
   Trong trường hợp cột Hinhminhoa thì bấm vào “Show advanced properties”




   o PropertyName chọn FileName


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




      o Viết hàm xử lý sự kiện click cho nút Lưu
protected void btnLuu_Click(object sender, EventArgs e)
  {
     SqlDataSource1.Insert();
  }
      o Chạy và kiểm tra chương trình.




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




Chương 4

               CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU
                          Sử dụng các điều khiển GridView, Data List và Repeater để hiển thị dữ liệu.
I. Điều khiển GridView
       GridView là một điều khiển khá linh hoạt và hiệu quả trong việc hiển thị, định dạng và
thao tác với dữ liệu. Bên cạnh đó, chúng ta có thể thực hiện sắp xếp dữ liệu, thực hiện phân
trang với sự hỗ trợ khá tốt của VS .Net trong quá trình thiết kế.
1. Tạo GridView vào trang
       Kéo Control GridView vào trang



                                                                       Kết nối nguồn dữ liệu


 Chèn them cột mới

                                                                  Điều chỉnh các cột
Tạo các cột tùy biến

2. Định dạng tự động
      Thự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ằng
cách Chọn Auto Format từ khung DataGrid Task




3. Kết nối nguồn dữ liệu
       Thực hiện kết nối nguồn dữ liệu với cơ sở dữ liệu Access, SQLServer, . .
      Trong cửa sổ DataGrid Task tại mục Choose Data Source chọn : New Data Source




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




         o Với CSDL Access


                              Với CSDL Access




                                 Tìm chọn tập tin CSDL Access




             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.




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




                                          Khai báo tham số điều kiện




                                                                           Chỉ định sắp xếp




                   Chọn Test Query để kiểm tra kết quả nguồn dữ liệu.  Chọn Finish để hòan
      thành
         o Với CSDL SQLServer




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




                                   Với CSDL SQLServer 2000/2005




                                          Tạo kết nối CSDL mới




        Khai báo các thông số và chọn CSDL cần kết nối




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




                                             Kiểm tra kết quả kết nối




                   Chọn Ok
                   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ện




                                                                        Chỉ định sắp xếp




Biê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ành
Thi hành xem kết quả:




4. Thêm cột
      Trong cửa sổ DataGrid Task chọn : Add New Column




      Chọn Loại field cần tạo : BoundField
      Khai báo tiêu đề côt : Header Text
      Chỉ định tên field dữ liệu: DataField
      Ok hòan thành




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




5. Hiệu chỉnh, Tạo mới các cột
      Trong cửa sổ DataGrid Task chọn : Edit Column




      AvailableFields: Chọn lọai Field liên kết dữ liệu
                 o BoundField: Cột có liên kết với nguồn dữ liệu dạng Textbox.
                 o Checkbox Field: Cột có liên kết với nguồn dữ liệu dạng Checkbox.
                 o Hyperlink Field: Cột có liên kết dữ liệu dạng liên kết.
                 o Button Field: Cột dạng nút lệnh
                 o CommandField: Cột dạng nút lệnh đã được thiết kế sẵn. Điều khiển
                   GridView cung cấp cho chúng ta 3 loại cột dạng này:
                           Select: Nút lệnh chọn dòng dữ liệu
                           Edit, Cancel, Update: Các nút lệnh hỗ trợ chức năng cập nhật dữ
                            liệu trực tiếp trên lưới.
                           Delete: Nút lệnh xóa dòng dữ liệu
                           Chúng ta sẽ có dịp tìm hiểu kỹ hơn về các nút lệnh này trong phần
                     Cập nhật dữ liệu trực tiếp trên lưới.

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

                  o TemplateField: 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ạn
                     muốn hiển thị dạng Nam/Nữ. Chúng ta sẽ tìm hiểu sâu hơn về Template
                     Column ở phần sau.
   BoundColumn properties: Qui định thông tin chi tiết cho các cột
        o HeaderText, Footer Text: Thông tin tiêu đề trên/dưới của cột
        o Header Image: Hình hiển thị trên tiêu đề cột (thay thế thông tin tiêu đề cột - Header
          Text).
        o Sort Expression: Biểu thức sắp xếp của cột.
        o Visible: Qui định cột có được hiển thị hay không.
        o 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ị.
        o Data formatting expression: Biểu thức định dạng dữ liệu.
              Mẫu định dạng: {0:<chuỗi định dạng>}. 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 Template
    Column.
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 GridView




           o 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 đề)
           o 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 / FooterStyle




       Định dạng dòng dữ liệu lẽ/chẵn: RowStyleAlternatingRowStyle

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




      Sắp xếp: AllowSorting




             Allow sorting: Có cho phép sắp xếp dữ liệu hay không. (mặc định là không cho
       phép sắp xếp)
      Phân trang: AlowPaging




          o Đị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 thanh
                     tiêu đề, ở phía dưới hay cả hai.
                    Mode: Qui định hình thức hiển thị của bộ nút di chuyển. Hiển thị dạng số
                     trang hay là các chuỗi ký tự đại diện (Next page/Previous page button text).
                     Trong trường hợp hiển thị dạng số, Numeric buttons qui định số nút lệnh
                     được hiển thị tối đa.




                    Google hiển thị kết quả được phân trang theo dạng số




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




II. Điều khiển DataList
1. Sử dụng DataList để hiển thị dữ liệu
       Như điều khiển Gridview, điều khiển DataList được sử dụng để hiển thị dữ liệu. Tuy
nhiên, đối với DataList, chúng ta phải tự thiết kế hình thức hiển thị dữ liệu (giống như Template
Column của GridView).




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

                           Sử dụng DataList hiển thị thông tin sách
Một số thuộc tính cần chú ý của DataList
      RepeatDirection: Qui định hướng hiển thị dữ liệu
           o Horizontal: Hiển thị dữ liệu theo chiều ngang


           o Vertical (mặc định): Hiển thị dữ liệu theo chiều đứng




      RepeatColumns: Qui định số cột hiển thị của DataList




     Thiết kế hình thức hiển thị cho DataList cũng tương tự như thiết kế cho cột Template
Column của GridView
      Chọn Edit Template từ thực đơn ngữ cảnh để thực hiện thiết kế hình thức hiển thị cho
DataList.




                            Chọn chức năng thiết kế cho DataList
Ghi chú:
      Trong quá trình thực hành, để công việc thiết kế được dễ dàng, các bạn thực hiện thiết
kế ở bên 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ị trong
DataList.


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

Ví dụ: Hiển thị thông tin sách với DataList




                              Thiết kế thông tin sách với DataList




                                    Kết quả trên trang Web
III. Điều khiển Repeater
       Như 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ác
tag HTML.
       Điều khiển Repeater có các tag sau:
      <HeaderTemplate></HeaderTemplate> (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)
      <ItemTemplate></ItemTemplate> (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.
      <AlternatingItemTemplate></AlternatingItemTemplate> (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 tag
                                     <ItemTemplate> </ItemTemplate>
      <SeparatorTemplate></SeparatorTemplate> (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.Net

         Qui định hình thức hiển thị giữa các dòng dữ liệu
        <FooterTemplate></FooterTemplate> (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 Web
Bước 2. Kết nối và tạo nguồn dữ liệu cho điều khiển từ Table Chude với các cột: MaCD,
Tenchude.
Bước 3:. Chuyển qua xem trang Web dưới dạng HTML
<asp:Repeater ID="rptChudesach" runat="server" DataSourceID="SqlDataSource1">
</asp:Repeater>
Bước 3. Bổ sung các tag sau
<asp:Repeater ID="rptChudesach" runat="server" DataSourceID="SqlDataSource1">
        <HeaderTemplate>
            <table border="1" cellspacing="0">
            <tr>
            <td width="60" align="center">
            <strong>Mã CĐ</strong>
            </td>
            <td width="150" align="center">
            <strong>Tên chủ đề </strong>
            </td>
            </tr>
            </HeaderTemplate>
            <ItemTemplate>
            <tr>
            <td>
            <%# Eval("MaCd")       %>
            </td>
            <td>
            <%# Eval("Tenchude")%>
            </td>
            </tr>
            </ItemTemplate>
            <AlternatingItemTemplate>
            <tr bgcolor="GhostWhite">
            <td>
            <%# Eval("MaCD")%>
            </td>
            <td>
            <%# Eval("TenChude")%>
            </td>
            </tr>
            </AlternatingItemTemplate>
            <FooterTemplate>
            </table>
            </FooterTemplate>
           </asp:Repeater>
Bướ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.Net

V. Sử dụng DetailView và FormView
        Hai đ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ểm
Cả 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 qua
thiết lập dữ liệu.
1. DetailView
a. Hiển thị dữ liệu với DetailView
      DetailView được đưa ra hiển thị như một bảng(<Table>) trong HTML để hiển thị dữ liệu
một bản ghi.
Ví dụ: Trang XemthongtinKH.aspx




b. Sử dụng Fields với điều khiển DetailView
      DetailView hỗ trợ tất cả các Field như GridView
         o BoundField: cho phép bạn hiển thị giá trị của dữ liệu như Text
         o CheckBoxField: hiển thị dữ liệu dưới dạng một CheckBox
         o CommandField: 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, )
         o HyperLinkField: hiển thị môt liên kết
         o ImageField: hiển thị ảnh
         o TemplateField: cho phép hiển thị các đìều khiển tuỳ biến.




c. Xử lý phân trang với điều khiển DetailView

Biê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ới
các thuộc tính định dạng thuộc nhóm thuộc tính: Pagersettings




d. 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ột
CheckBoxField, điền vào dữ liệu với thuộc tính DataField 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 góc trên bên phải. Kết xuất của chương
trình




2. DetailView
a. Hiển thị dữ liệu với FormView
      FormView đượ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ệu
một bản ghi. Ví dụ: Trang XemthongtinNXB.aspx




b. Trình bày dữ liệu sử dụng Edit Template
      FormView hỗ trợ trình bày dữ liệu dạng tùy biến cho tất cả các Field DataList
          o Tạo FormView vào trang và lien kết dữ liệu
                  o Tại cửa sổ thiết kế chọn Edit Tempalte từ cửa sổ FormView Task




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

          o Thiết kế trình bày với các Control điều khiển tương tự như khi thiết kế DataList
            với các điều khiển tùy biến




c. Xử lý phân trang với điều khiển DetailView
       Để tạo phân trang chỉ định thuộc tính AllowPaging=”true” cho điều khiển DetailView. Với
các thuộc tính định dạng thuộc nhóm thuộc tính: Pagersettings




d. 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ào
dữ 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 trang
Kết xuất của chương trình




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

Chương 5

                       XỬ LÝ DỮ LIỆU VỚI ADO.NET
I. Tìm hiểu về ADO.NET
       Hầ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 ứng
dụ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ùng
       Bảo mật dữ liệu
       Trao đổi dữ liệu giữa các hệ thống khác nhau
       Nhữ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àm
việ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ên
Database 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ới
nhiều ứng dụng khác.
1. Kiến trúc ADO .Net




Kiến trúc ADO.NET có thể chia làm 2 phần chính:
-   Managed Provider Component: bao gồm các đối tượng như DataAdapter, DataReader,…
    giữ nhiệm vụ làm việc trực tiếp với dữ liệu như database, file,…
-   Content Component: bao gồm các đối tượng như DataSet, DataTable,… đại diện cho dữ
    liệu thực sự cần làm việc.




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

       o DataReader là đối tượng mới, giúp truy cập dữ liệu nhanh chóng nhưng forward-only
         và read-only giống như ADO RecordSet sử dụng Server cursor, OpenFowardOnly và
         LockReadOnly.
       o DataSet cũng là một đối tượng mới, không chỉ là dữ liệu, DataSet có thể coi là một
         bản sao gọn nhẹ của CSDL trong bộ nhớ với nhiều bảng và các mối quan hệ.
       o DataAdapter là đối tượng kết nối giữa DataSet và CSDL, nó bao gồm 2 đối tượng
         Connection và Command để cung cấp dữ liệu cho DataSet cũng như cập nhật dữ
         liệu từ DataSet xuống CSDL.
2. Minh họa tạo kết nối cơ sở dữ liệu
       using System;
       using System.Data;
       using System.Data.SqlClient;
       public partial class vd1 : System.Web.UI.Page
       {
         protected void Page_Load(object sender, EventArgs e)
         {
          //Khai báo và khởi tạo biến Connection
            SqlConnection cnn = new SqlConnection("Data Source=(local);
                                                     Initial Catalog=QLbansach;User ID=sa;Password=");
          //Mở kết nối
             cnn.Open();
          //Command điều khiển truy vấn sql
             SqlCommand cmd = cnn.CreateCommand();
             cmd.CommandText = "select HotenKH from Khachhang where MaKH=5";
          //lấy về chuỗi giá trị trong cơ sở dữ liệu
             string result = (string)cmd.ExecuteScalar();
          //đóng kết nối
             cnn.Close();
          //in giá trị ra màn hình
             Response.Write(result);
         }
       }
       Thi hành




Cơ bản các bước thực hiện với database
   •   Bước 1: Tạo kết nối
   •   Bước 2: Mở kết nối dữ liệu
   •   Bước 3: Tạo lệnh điều khiển truy vấn SQL
   •   Bước 4: Thực thi lệnh
   •   Bước 5: Đóng kết nối
   •   Bước 6: in kết quả

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

II. Các đối tượng trong ADO.Net
1. Đối tượng Connection
       Vai 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 :
         o System.Data.Oledb : Sử dụng với Access
         o System.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:
         o System.Data.Oledb.OledbConnection
         o System.Data.SqlClient.SqlConnection
         Ngòai ra Ado.net còn hỗ trợ các Data Provider khác như
         o System.data.OcracleClient : Dành cho Ocracle
         o MicroSoft.data.Odbc : Dành cho dạng kết nối thong qua Odbc Connectionủa Hệ
           điều hành
         o Microsoft.Data.Sqlxml: Dành cho XML trên Sqlserver
Connection String
            Trước khi thực hiện kết nối Connectionần khai báo các thong tin cho Connection
      thông qua thuộc tính Connection String. Cách khai báo thay đổi tùy thuộc vào Data
      Provider. Gồm có các thành phần sau:
         o Nếu kết nối với CSDL Access
             Provider: Khai báo Data Provider Connectionủa Hệ QT CSDL Access
             Data Source: Nguồn dữ liệu (Tên CSDL.mdb)
             User ID: Tên người dùng
             Password : Mật khẩu
      Ví dụ: Tạo kết nối với CSDL Access
      using System;
      using System.Data;
      using System.Data.OleDb;
      public partial class VD2 : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
           //Khai báo và khởi tạo biến Connection
            String StrCnn="Provider=Microsoft.Jet.OLEDB.4.0;
                                                Data Source=" + Server.MapPath("~/App_Data/QLBansach.mdb");
           OleDbConnection cnn = new OleDbConnection (StrCnn);
           //Mở kết nối
           cnn.Open();
           //Command điều khiển truy vấn sql
           OleDbCommand cmd = cnn.CreateCommand();
           cmd.CommandText = "select HotenKH from Khachhang where MaKH=2";
           //lấy về chuỗi giá trị trong cơ sở dữ liệu
           string result = (string)cmd.ExecuteScalar();
           //đóng kết nối
           cnn.Close();
           //in giá trị ra màn hình
           Response.Write(result);
        }
      }


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

          o Nếu kết nối với CSDL SQLServer
              Provider: Khai báo Data Provider Connectionủa Hệ QT CSDL SQLServer
              Data Source:Tên máy cài đặt SQLServer
              Initial Catalog: Tên CSDL
              User ID: Tên người dùng
              Password : Mật khẩu
Các thuộc tính Của Connection
          o DataBase: : Tương ứng với Initial Catalog(SQL) hay tên CSDL muốn làm việc
            (Access)
          o DataSource: Tương ứng với DataSource Tên máy SQL hay tên CSDL
          o Provider: Tương ứng với Provider
          o State: 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ối
                       Closed: Kết nối đã đóng
                       Connecting: Đang kết nối
                       Executing: Kết nối đang thực hiện một lệnh
                       Fetching: Kết nối đang truy xuất dữ liệu
                       Open: Kết nối đang mở
Các phương thức
              Change Databse: Thay đổi DataBase làm việc
              Close : Đó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 trong
ConnectionString
       Ví dụ: Kiểm tra kết nối với CSDL SQLServer
  protected void Button1_Click(object sender, EventArgs e)
  {
    //Khai báo và khởi tạo biến Connection
    SqlConnection cnn = new SqlConnection("Data Source=;Initial Catalog=QLbansach;User ID=sa;Password=");
    //Mở kết nối
    cnn.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
  }




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

2. Đối tượng Command
       Sau 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ực
hiệ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.OleDbCommand
      System.Data.SqlClient.SqlCommand
Tạo Command
      Chúng ta có thể tạo Command thông qua đối tượng Connection bàng cách:
      <Loai command> <Biến Command> As New <Loai command>;
      <Biến command>.Connection=<Biến Connection>;
      <Biến Command>.CommandText=<Lệnh SQL>;
    Hoặc
      <Loai Command> <Biến Command> As New <Loại >Command(<Lệnh SQL>);
      <Biến Command>.Connection=<Biến Connection>;
Các thuộc tính
      CommandText : Lệnh SQL hay tên Stored Procedure muốn thực hiện trên nguồn dữ liệu
      CommandType: Giá trị cho biết nội dugn Commandtext là gì:
             Text: (Mặc định) là câu lệnh SQL
             StoredProcedure: Tên thủ tục
             TableDirect: Tên Connectionủa table
      VD:
      SqlCommand cmd As SqlCommand = New SqlCommand();
      cmd.Connection = cnn;
      cmd.CommandType = CommandType.Text;
      cmd.CommandText = "Select* From Khachhang Where MaKH=2";
Parameters
      Lệnh SQL trong commandText có thể sử dụng dấu ? thay cho trị chưa xác định và khi
thực hiện sẽ dùng đối tượng Parameters để truyền gái trị vào dấu ? . Tùy theo Command
Parameter sẽ khai báo từ lớp OledbParameter hay SqlParameter. Cú pháp khai báo sau:
      OleDbParameter | SqlParameter <tên Parameter> As
                                                           New OleDbParameter | SqlParameter();
      OleDbParameter | SqlParameter <Ten Parameter> As
                                                      New OleDbparameter | SqlParameter(<Tên>);
      OleDbParameter | SqlParameter <Tên parameter> As
                                                  New OleDbParameter | SqlParamter(<tên>,<giá>);
   Các thuộc tính cần chú ý:
      Direction : Giá trị cho biết lọai tham số
                    Input: (mặc định) Loại tham số đầu vào
                    InputOutput: Loại tham số đầu vào và ra
                    Output: Loại tham số đầu ra


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

                   ReturnValue: Loại tham số nhận giá trị trả về Connectionủa một thủ tục
      OleDbType / 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 OleDbCommand
                   cmd.CommandText=”Select * From Khachhang Where MaKH=?”;
                   OleDbParameter Par As OleDbParameter= cmd.CreateParameter();
                   Par.Value=”KH01”;;
                   cmd.Parameters.Add(Par);
             VD: Khi sử dụng SqlDbCommand
                   cmd.CommandText=”Select * From Khachhang Where MaKH=@MaKH”;
                   SqlParameter Par As SqlParameter = cmd.CreateParameter();
                   Par.ParameterName=”@MaKH”;
                   Par.Value=”KH01”;
                   cmd.Parameters.Add(Par);
      Đưa tham số vào tập hợp Parameters
             VD: Khi sử dụng OleDbCommand
             cmd.CommandText=”Select * From BangDiem Where Masv=? And MaMH=?”;
             OleDbParameter Par1 As OleDbParameter=
                                  cmd.CreateParameters.Add(“Sinhvien”,OleDbType.Char,4);
             Par1.Value=”SV01”
             OleDbParameter Par2 As OleDbParameter=
                                   cmd.CreateParameters.Add(“Monhoc”,OleDbType.Char,4);
             Par2.Value=”MH01”
             VD: Khi sử dụng SqlDbCommand
             cmd.CommandText=”Select * From BangDiem Where Masv=@MaSV
                                                                     and MaMH = @MaMH ”;
             SqlDbParameter Par1 As SqlDbParameter=
                                       cmd.CreateParameters.Add(“@MaSV”,SqlType.Char,4);
             Par1.Value=”SV01”
             SqlDbParameter Par2 As SqlDbParameter=
                                     cmd.CreateParameters.Add(“@MaMH”,SqlType.Char,4);
             Par2.Value=”MH01”;
      Tạo tham số và đưa vào tập hợp Parameters
             VD: Procedure SpKetQuaThi Cần 2 tham số đầu vào: @MaSV , @MaMH và trả
      về Điểm thi của Môn học Connectionủa sinh viên đó. Vì vậy chúng ta Connectionần
      truyền 3 tham số: 1 trả về, 2 đưa vào. Tham số trả về phải được truyền cho Command
      trước tiên

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

              cmd.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=
                                           cmd.Parameters.Add(“@MaSV”,OleDbType.Char,4);
              Ts1.Value=”Sv01”;
              OleDbParameter ts2 as OleDbParameter=
                                          cmd.Parameters.Add(“@MAMH”,OleDbType.Char,4);
              Ts1.Value=”MH01”;
Thực hiện Command
      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 <Tên DataReader> As SqlDataReader;
  <Tên DataReader> = <tên Command>.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,…
        Phương thức ExcuteScalar: Trả về từ phát biết SQL dạng Select chỉ có một cột một
hàng.
3. Đối tượng Datareader
      Là đối tượng truy cập dữ liệu trực tiếp, sử dụng con trỏ phía Server và duy trì kết nối với
Server trong suốt quá trình đọc dữ liệu, DataReader thuộc tên miền
System.data.OleDbDatReader hoặc System.Data.SqlDataRaeder
        Các thuộc tính
              FieldCout: Số Connectionột trên dòng hiện hành của DataReader
              IsClosed : Cho biết dataReader đã đóng
              Item: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ức
              Close: Đóng DataReader
              GetFieldType: 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ào
              GetValue: Tar3 về trị của cột truyền vào
              Read : Di chuyển đến dòng kế tiếp và trả về true nếu còn dòng để di chuyển,
              ngược lại trả về False.
              Trong khi dataReader đang mở các thao tác dữ liệu trên nguồn dữ liệu đều không
              thể cho đến khi 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.Net

4. Đố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 DataAdapter
     Khai báo rõ DataAdapter sử dụng theo DataProvider nào: sqlDataAdapter hay
OledbDataAdapter hai lớp này thuộc tên miền:
       System.Data.OleDb.OleDbDataAdapter
       System.Data.SqlClient.SqlDataAdapter
Cú pháp tạo DataAdapter
       New <Loai>DataAdapter();
       New <Loai>DataAdapter(<Đối tượng SelectCommand>);
       <Đối tượng SelectCommand>: Có sẳn với nội dụng lệnh truy xuất.
       New <Loai>DataAdapter(<Lệnh>,<Đối tượng Connection>)
       DataAdapter chỉ thao tác với một nguồn dữ liệu qua một đối tượng connection đang kết
nối, khi Connection chưa mở thì DataAdapter sẽ tự động mở kết nối khi cần và đóng lại.
VD:
OleDbDataAdapter DA As New OleDbDataAdapter();
DA.SelectCommand.CommandText=”Select * From Sinhvien”;
AD.SelectCommand.Connection.ConnectionString=”Provider=MicroSoft.Jet.OleDb.4.0;
                                                            Data Source=c:QuanLySV.mdb”;
b. Các thuộc tín chính của DataAdapter
       DeleteCommand : Đối tượng Command chứa nội dung lệnh hủy các mẫu tin trên nguồn
dữ liệu.
       InsertCommand : Đối tượng Command chứa nội dung lệnh thêm các mẫu tin trên nguồn
dữ liệu.
       SelectCommand: Đối tượng Command chứa nội dung lệnh truy xuất các mẫu tin trên
       nguồn dữ liệu.
      UpdateCommand : Đối tượng Command chứa nội dung lệnh sửa các mẫu tin trên
nguồn dữ liệu.
c. Các chức năng của DataAdapter
   -   Lấy dữ liệu từ nguồn: Sử dụng DataAdapter để lấy dữ liệu về cho các đối tượng
          o DataTable:    Fill(<DataTable>)
          o DataSet:     Fill(<DataSet>)       Dữ liệu lấy về DataSet dưới dạng các
            dataTable 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.Net

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

Biê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 Dataset
       AcceptChanges()
   -   Để hủy các thay đổi trên Dataset
       RejectChanges()
   -   Để xóa bỏ mọi dữ liệu trên dataSet
       Clear()
   -   Để tạo một bản sau của Dataset
       Clone()
   -   Để xóa bỏ Dataset
       Gọ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(<DataColumn trên bảng cha>,<Data Column trên bảng con>)
   -   Xóa quan hệ giữa hai bảng trong Dataset.
       Relations.Remove(<quan hệ>)
6. Đối tượng Datatable
       Dữ liệu các bảng trong nguồn dữ liệu được lấy về và đưa vào các DataTable. DataTable
thuộc tên miền : System.Data.dataTable.
Cú pháp:
       New DataTable();
       New DataTable(<Tên bảng>);
       DataTable được hình thành từ các DataColumn, DataRow.




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

III. Một số minh họa
1. Kết nối cơ sở dữ liệu
protected void Button1_Click(object sender, EventArgs e)
    {
        //Khai báo và khởi tạo biến Connection
            SqlConnection cnn = new SqlConnection("Data Source=(local);
                             Initial Catalog=QLbansach;User ID=sa;Password=");
            //Mở kết nối
            cnn.Open();
        // Thực hiện các câu lệnh SELECT, INSERT, DELETE, UPDATE.
        TextBox1.Text = "State = " + cnn.State;

        //Đóng kết nối
        cnn.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 SELECT
protected void Button2_Click(object sender, EventArgs e)
    {
        try
        {
            //Khai báo và khởi tạo biến Connection
            SqlConnection cnn = new SqlConnection("Data Source=(local);
                             Initial Catalog=QLbansach;User ID=sa;Password=");

             //Khai báo và khởi tạo biến Command
             SqlCommand 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ối
             cnn.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 WebForm
             TextBox2.Text = count.ToString();

             //Đóng kết nối.
             cnn.Close();
        }
        catch (Exception)
        {
            //Xuất kết quả ra WebForm
            TextBox2.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, DELETE
protected void Button3_Click(object sender, EventArgs e)
    {
        try
        {
            //Khai báo và khởi tạo biến Connection
            SqlConnection 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 WebForm
             TextBox3.Text = "Thành công!";
             cnn.Close();
         }
         catch (Exception)
         {
             //Xuất kết quả ra WebForm
             TextBox3.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 Connection
             SqlConnection 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 Command
               cmd.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!";
          }
     }

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

5. 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 Connection
            SqlConnection cnn = new SqlConnection("Data Source=(local);
                             Initial Catalog=QLbansach;User ID=sa;Password=");

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cnn;
        cmd.CommandText = "SELECT * FROM Nhaxuatban";
        cmd.CommandType = CommandType.Text;

        cnn.Open();
        //Lấy danh sách nhà xuất bản bỏ vào biến DataReader
        IDataReader dr = cmd.ExecuteReader();

        String list = "";
        //Duyệt qua DataReader
        while (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 GetNhaxuatban
AS
BEGIN
      SELECT * FROM Nhaxuatban
END
GO
protected void Button6_Click(object sender, EventArgs e)
    {
      //Khai báo và khởi tạo biến Connection
            SqlConnection cnn = new SqlConnection("Data Source=(local);
                             Initial Catalog=QLbansach;User ID=sa;Password=");

        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();
    }
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.Net
CREATE PROCEDURE GetchudeByMachude
@Machude char(15)
AS
BEGIN
      SELECT * FROM CHUDE WHERE MaCD=@Machude
END
GO
protected void Button7_Click(object sender, EventArgs e)
    {
        //Khai báo và khởi tạo biến Connection
            SqlConnection cnn = new SqlConnection("Data Source=(local);
                             Initial Catalog=QLbansach;User ID=sa;Password=");

        SqlCommand cmd = new SqlCommand("GetchudeByMachude", cnn);

        cmd.Connection = cnn;

        cmd.CommandType = CommandType.StoredProcedure;
        //Khai báo và khởi tạo biến Command
        SqlParameter parMALINHVUC =
                            new SqlParameter("@Machude", SqlDbType.NChar, 10);
        parMAVHUDE.Value = TextBox1.Text;
        cmd.Parameters.Add(parMACHUDE);

        cnn.Open();

        IDataReader dr = cmd.ExecuteReader();

        String list = "";
        while (dr.Read())
        {
            list = list + dr["Tenchude"].ToString();

        }
        dr.Close();
        TextBox2.Text = list.ToString();
        cnn.Close();
    }
8. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + update dữ liệu
protected void Button8_Click(object sender, EventArgs e)
    {
        //Khai báo và khởi tạo biến Connection
            SqlConnection cnn = new SqlConnection("Data Source=(local);
                             Initial Catalog=QLbansach;User ID=sa;Password=");

        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";
            }

        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.Net

9. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + gọi store
protected void Button9_Click(object sender, EventArgs e)
    {
        //Khai báo và khởi tạo biến Connection
            SqlConnection cnn = new SqlConnection("Data Source=(local);
                              Initial Catalog=QLbansach;User ID=sa;Password=");
        //Khai báo và khởi tạo SqlDataAdapter
        SqlDataAdapter da = new SqlDataAdapter("GETNHAXUATBAN", cnn);
        //Khai báo và khởi tạo DataSet
        DataSet ds = new DataSet();
        //Lấy dữ liệu trả về đổ vào dataset ds
        da.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 Connection
            SqlConnection 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à Command
protected void Button10_Click(object sender, EventArgs e)
    {
        //Khai báo và khởi tạo biến Connection
            SqlConnection cnn = new SqlConnection("Data Source=(local);
                              Initial Catalog=QLbansach;User ID=sa;Password=");
        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();
    }
}



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

Chương 4

              CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU
                        Sử 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, …
I. Điều khiển DataGrid
       DataGrid là một điều khiển khá linh hoạt và hiệu quả trong việc hiển thị, định dạng và
thao tác với dữ liệu. Bên cạnh đó, chúng ta có thể thực hiện sắp xếp dữ liệu, thực hiện phân
trang với sự hỗ trợ khá tốt của VS .Net trong quá trình thiết kế.
      Bổ sung Control DataGrid vào Thanh ToolBox (Nếu chưa có): Click phải thanh toolbox
chọn Choose Items.




      Đánh dấu vào mục DataGrid (System.Web.UI.WebControls)  Ok
1. Tạo DataGrid vào trang
      Kéo Control DataGrid vào trang
                                                                   Định dạng tự động


                                                                        Kết nối nguồn dữ liệu




                                                                      Thiết lập thuộc tính




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

2. Định dạng tự động
      Thự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ằng
cách Chọn Auto Format từ khung DataGrid Task




3. Kết nối nguồn dữ liệu




      Chọn New Data Source từ mục Choose Data Source




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

      Chọ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  Continue




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

      Khai 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.




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




      Khai 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ất
4. 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 Property
Builder… từ khung DataGrid Task.
a. Trang General
      Trong 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ắp
       xếp)




                              Các mục chọn trong Tab General
b. 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.




                                        Trang Columns



Biê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.
                 o Bound Column: Cột có liên kết với nguồn dữ liệu.
                 o Button Column: Cột dạng nút lệnh đã được thiết kế sẵn. Điều khiển
                   DataGrid cung cấp cho chúng ta 3 loại cột dạng này:
                           Select: Nút lệnh chọn dòng dữ liệu
                           Edit, Cancel, Update: Các nút lệnh hỗ trợ chức năng cập nhật dữ
                            liệu trực tiếp trên lưới.
                           Delete: Nút lệnh xóa dòng dữ liệu
                          Chúng ta sẽ có dịp tìm hiểu kỹ hơn về các nút lệnh này trong phần
                    Cập nhật dữ liệu trực tiếp trên lưới.
                 o Hyperlink Column: Cột có liên kết dữ liệu dạng liên kết.
                 o 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ạn
                    không muốn hiển thị Nam/Nữ, thay vào đó, bạn muốn hiển thị điều khiển
                    checkbox thay thế, nếu checkbox được chọn - thể hiện phái Nam và
                    ngược lại. Trong tình huống này, TemplateColumn là sự chọn lựa tốt dành
                    cho bạn. Chúng ta sẽ tìm hiểu sâu hơn về Template Column ở phần sau.
      BoundColumn properties: Qui định thông tin chi tiết cho các cột
          o HeaderText, Footer Text: Thông tin tiêu đề trên/dưới của cột
          o Header Image: Hình hiển thị trên tiêu đề cột (thay thế thông tin tiêu đề cột -
            Header Text).
          o Sort Expression: Biểu thức sắp xếp của cột.
          o Visible: Qui định cột có được hiển thị hay không.
          o 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ị.
          o Data formatting expression: Biểu thức định dạng dữ liệu.
              Mẫu định dạng: {0:<chuỗi định dạng>}. 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}
          o Read Only: Chọn giá trị này để cột chỉ được phép đọc, không cho phép cập nhật
            dữ liệu.
          o Convert this column into a Template Column: Chuyển cột hiện hành thành cột
            dạ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.




Biê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ác
       hay không. Giá trị mặc định là True.
      Possition: Qui định vị trí hiển thị của bộ nút di chuyển. Ở phía trên thanh tiêu đề, ở phía
       dưới hay cả hai.
      Mode: Qui định hình thức hiển thị của bộ nút di chuyển. Hiển thị dạng số trang hay là các
       chuỗi ký tự đại diện (Next page/Previous page button text). Trong trường hợp hiển thị
       dạng số, Numeric buttons qui định số nút lệnh được hiển thị tối đa.




                   Google hiển thị kết quả được phân trang theo dạng số
d. Trang Format (Định dạng)
      Trang Format quản lý việc định dạng hiển thị trên điều khiển DataGrid. Các định dạng
chung như: Màu chữ, màu nền, Font chữ, kích cỡ, in đậm /in nghiêng/gạch dưới và canh lề.




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




                                          Trang Format
      DataGrid: Qui định các định dạng chung cho lưới
      Header: Định dạng cho dòng tiêu đề.
      Footer: Định dạng cho dòng tiêu đề dưới.
      Pager: Định dạng cho dòng chứa các nút lệnh phân trang.
      Items
          o Normal Items: Định dạng cho các dòng dữ liệu.
          o Alternating Items: Định dạng hiển thị cho các dòng lẻ.
          o Selected Items:Định dạng hiển thị cho dòng đang được chọn.
          o 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.




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




      Cell margin
           o Cell padding: Qui định khoảng cách giữa nội dung trong ô với đường viền của ô.




           o Cell spacing: Qui định khoảng cách giữa các ô




Thi hành




2. Xử lý sắp xếp
       Sắp xếp dữ liệu trên lưới là một công việc rất cần thiết đối với người sử dụng. Hãy thử
tưởng tượng xem trong trường hợp chúng ta có khá nhiều dữ liệu hiển thị trên màn hình (giả
sử là danh sách nhân viên chẳng hạn), thật khó để chọn ra các nhân viên có thâm niên làm


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

việc lâu nhất hay các nhân viên có số giờ tham gia đề án nhiều nhất…. Với chức năng sắp xếp
trên lưới sẽ giúp cho người dùng dễ dàng chọn ra các nhân viên thỏa mãn các yêu cầu trên.
      Để thực hiện được thao tác sắp xếp dữ liệu trên lưới, chúng ta cần phải thực hiện các
công việc sau:
         Giá trị thuộc tính Allow sorting = True
         Nhập giá trị cho thuộc tính Sort expression của các cột cần sắp xếp.
Xử   lý  sự    kiện  SortCommand(ByVal               source    As     Object,    ByVal    e   As
System.Web.UI.WebControls.
DataGridSortCommandEventArgs)
Trong sự kiện trên, giá trị e.SortExpression cho biết thông tin của cột được chọn sắp xếp.
Ví dụ:
         Private Sub Page_Load(…) Handles MyBase.Load
                If Not IsPostBack Then
                         dtgKhach_hang.DataSource = Doc_ds_khach_hang()
                         dtgKhach_hang.DataBind()
                End If
         End Sub
         Private Sub dtgKhach_hang_SortCommand(…,e …)…
                dtgKhach_hang.DataSource = Doc_ds_khach_hang(e.SortExpression)
                dtgKhach_hang.DataBind()
         End Sub
         Public Function Doc_ds_khach_hang(Optional ByVal
                pChuoi_sap_xep As String = "") As DataTable
                Dim sKet_noi As String
                sKet_noi = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _
                Server.MapPath("..DataQlBanSach.mdb")
                Dim cnKet_noi As New OleDbConnection(sKet_noi)
                Dim dsCSDL As New DataSet
                Dim sLenh_sql As String = "Select * From KHACH_HANG"
                sLenh_sql &= IIf(pChuoi_sap_xep = "", _
                "", " Order by " & pChuoi_sap_xep)
                'Mở và đóng kết nối ngay khi thực hiện xong
                cnKet_noi.Open()
                Dim daBo_doc_ghi As New OleDbDataAdapter(sLenh_sql, cnKet_noi)
                cnKet_noi.Close()
                daBo_doc_ghi.Fill(dsCSDL, "KHACH_HANG")
                Return dsCSDL.Tables("KHACH_HANG")
         End Function



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


Sắp xếp khách hàng tăng dần theo tên
3. Xử lý phân trang
       Phân trang dữ liệu không những giúp cho việc xem và tìm kiếm thông tin được dễ dàng
mà còn giảm được khối lượng dữ liệu cần được truyền tải từ Server về Client. Việc phân trang
trong ASP.Net được thực hiện khá dễ dàng, chỉ với một số thao tác đơn giản.
       Để thực hiện phân trang, chúng ta cần phải thực hiện các công việc sau:
      Qui định các thông số cần thiết cho việc phân trang (xem Quản lý phân trang ở phần
Các thao tác định dạng lưới).
    Xử lý sự kiện PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.
WebControls.DataGridPageChangedEventArgs)
       Trong sự kiện trên, giá trị e.NewPageIndex cho biết trang được chọn để hiển thị dữ liệu.
Định dạng phân trang
Mã lệnh xử lý:
       Private Sub Page_Load(…) Handles MyBase.Load
              If Not IsPostBack Then
                       Lien_ket_du_lieu()
              End If
       End Sub
Private Sub dtgKhach_hang_PageIndexChanged(…, e …) …
dtgKhach_hang.CurrentPageIndex = e.NewPageIndex
Lien_ket_du_lieu()
End Sub
Dữ liệu hiển thị được phân trang
4. Tùy biến các cột
Trong phần này, chúng tôi sẽ hướng dẫn các bạn tùy biến các cột trên lưới, cụ thể hơn, chúng
ta sẽ
hiển thị checkbox thay cho giá trị True/False của cột giới tính.
Để thực hiện việc tùy biến các cột, chúng ta cần phải thực hiện 2 giai đoạn sau:
 Giai đoạn 1: Thiết kế
Trong giai đoạn này, chúng ta tùy biến cột theo một yêu cầu cụ thể. Thay vì phải hiển thị ô dữ
liệu bình thường (như họ khách hàng, tên khách hàng, …), chúng ta có thể sử dụng điều khiển
Checkbox để thay thế cho cột có giá trị luận lý, sử dụng điều khiển Image, Image button hay
Hyperlink để hiển thị hình ảnh thay cho chuỗi đường dẫn dẫn đến hình ảnh đó, …
 Giai đoạn 2: Xử lý
Sau khi thực hiện 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ý để
hiển thị dữ liệu theo yêu cầu của mình.
I.4.1. Giai đoạn 1: Thiết kế
Bước 1. Thêm mới cột Phái, kiểu Template Column. Nhập giá trị Header text, Sort expression
cho

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

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


Biê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ách
Bên cạnh đó, nếu ta chỉ quan tâm đến lần xảy ra sự kiện này có phải là dòng dữ liệu hay
không, ta
có thể sử dụng thuộc tính e.ItemIndex.
 e.Item.ItemIndex  0: Đây 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ủa
dòng dữ liệu hiện hành.
Dòng lệnh (3,4): Nhiệm vụ chính ở 2 dòng lệnh này là chúng ta khai báo các điều khiển ứng
với
các điều khiển được đặt vào lúc thiết kế. Sử dụng phương thức e.Item.FindControl(Tên điều
khiển) để lấy điều khiển hiện có trong dòng đang xảy ra sự kiện.
chkPhai = e.Item.FindControl(chkPhai) 'hay
chkPhai =Ctype(e.Item.FindControl(chkPhai),CheckBox)
Bảng
KHACH_HANG
Dòng lệnh (5): Sau khi lấy được điều khiển ứng với dòng đang xảy ra sự kiện, tùy theo dữ liệu
mà
ta sẽ hiển thị lên điều khiển giá trị tương ứng. Để lấy được dữ liệu của dòng hiện hành, ta sử
dụng
thuộc tính e.Item.DataItem(Tên field/Tên thuộc tính)
chkPhai.Checked = e.Item.DataItem(Gioi_tinh)
Kết quả hiển thị
Đối với những xử lý phức tạp, sự kiện ItemDataBound sẽ là sự lựa chọn hàng đầu trong việc
tùy biến hiển thị dữ liệu. Tuy nhiên, đối với những xử lý đơn giản, chúng ta có thể thực hiện
liên kết dữ liệu trong quá trình thiết kế.
Chọn Edit Template cột Phái, chọn điều khiển chkPhai.

Chọn điều khiển chkPhai trong lúc thiết kế
Trên cửa sổ thuộc tính, chọn (DataBindings)
Chọn chức năng DataBidings
Trên cửa sổ thuộc tính, chọn (DataBindings). Hộp thoại DataBindings của điều khiển chkPhai
xuất


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

hiệ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ộp
thoại.
Chọn thuộc tính cần liên kết, chọn loại liên kết là Custom binding expression, nhập chuỗi liên
kết dữ
liệu trong điều khiển bên dưới theo cú pháp:
Container.DataItem(Tên field)
Ở ví dụ này, chúng ta thực hiện liên kết thuộc tính Checked của điều khiển chkPhai với field
Gioi_tinh có trong nguồn dữ liệu của lưới.
I.5. Cập nhật dữ liệu trực tiếp trên lưới
Cập nhật dữ liệu trực tiếp trên lưới trong ASP.Net được hỗ trợ khá tốt về giao diện. Công việc
còn
lại của chúng ta là thiết kế các nút lệnh như: Chọn, Sửa/Ghi - Không, Hủy, … và viết các lệnh
cập
nhật dữ liệu.
I.5.1. Giai đoạn thiết kế
Trong cửa sổ thuộc tính của lưới, chúng ta tạo bộ nút lệnh cần thiết hỗ trợ cho việc cập nhật dữ
liệu. Ở ví dụ này, chúng tôi tạo bộ nút (Select - chọn), (Edit, Update, Cancel - Sửa, Ghi, Không)
và
(Delete - Hủy)
Đối với các nút lệnh trên, các bạn cần chú ý đến giá trị của thuộc tính Command name. Ứng
với
mỗi nút lệnh có giá trị CommandName khác nhau, nhờ đó, ta viết lệnh xử lý với chức năng
tương
ứng được chọn.
 Select: Command name = Select
 Edit, Update/Cancel: Command name = Edit, Update/Cancel
 Delete: Command name = Delete
Tạo bộ nút lệnh Thêm - Sửa/Ghi/Không - Hủy
Tìm hiểu về thuộc tính Command Name
Cũng cần bàn thêm một chút ở đây về thuộc tính Command Name. Như các bạn cũng biết, các
nút
lệnh ở trên (Chọn, Thêm - Sửa / Ghi / Không - Hủy) là do VS.Net hỗ trợ, giá trị thuộc tính
CommandName của các nút lệnh trên là những giá trị mặc định được qui định sẵn.
Ứng với mỗi CommandName mặc định, sẽ có các sự kiện để ta thực hiện các xử lý tương ứng:
 Command name=Edit  Sự kiện EditCommand
 Command name=Update  Sự kiện UpdateCommand
 Command name=Cancel  Sự kiện CancelCommand
 Command name=Delete  Sự kiện DeleteCommand
Chắc hẳn các bạn sẽ thắc mắc tại sao không có sự kiện SelectCommand? Bốn sự kiện được
liệt kê

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

trên là 4 sự kiện dành riêng, tương ứng với giá trị của các Command name mặc định là Edit,
Update, Cancel, Delete. Đối với những CommandName có giá trị khác, chúng ta sẽ sử dụng sự
kiện
dành chung cho tất cả các nút lệnh có thuộc tính CommandName (Button, Linkbutton,
ImageButton) được đặt trên lưới - sự kiện ItemCommand.
Tại sao vậy? Vì khi ta đặt các nút lệnh vào lưới (sử dụng cột Template column), chúng (các nút
lệnh) không còn sự kiện Click nữa, thay vào đó, tất cả các nút lệnh khi được nhấn sẽ gây ra sự
kiện ItemCommand. Dựa vào giá trị e.CommandName (tham số trong sự kiện) để chúng ta
xác
định nút lệnh nào đã được nhấn.
Cũng cần lưu ý thêm ở đây là bất kỳ nút lệnh nào khi được nhấn đều gây ra sự kiện
ItemCommand.
Do đó, đối với các nút lệnh có giá trị thuộc tính CommandName là Edit, Update, Cancel, Delete
khi
được nhấn vẫn gây ra sự kiện ItemCommand trước khi gây ra các sự kiện dành riêng cho
chúng.
Giao diện lưới sau khi thêm bộ nút lệnh
I.5.2. Giai đoạn xử lý
 Xử lý chọn mẩu tin
Chọn mẫu tin trên lưới
Private Sub dtgKhach_hang_ItemCommand(…, e …) …
If e.CommandName = Select Then
dtgKhach_hang.SelectedIndex = e.Item.ItemIndex
Lien_ket_du_lieu()
End If
End Sub
 Xử lý sửa, ghi, không
Muốn cập nhật dữ liệu, ta cần xác định khách hàng được cập nhật thông qua Mã khách hàng.
Để lấy Mã khách hàng:
 Gán thuộc tính DataKeyField của điều khiển lưới = MKH
 lưới.DataKeys(chỉ số i)  Trả về Mkh tại dòng chỉ số i
Chọn mẫu tin để cập nhật dữ liệu
Private Sub Page_Load(…) …
If Not IsPostBack Then
dtgKhach_hang.DataKeyField = MKH
Lien_ket_du_lieu()
End If
End Sub
Private Sub dtgKhach_hang_EditCommand(…, e …) …


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

dtgKhach_hang.EditItemIndex = e.Item.ItemIndex
Lien_ket_du_lieu()
End Sub
Private Sub dtgKhach_hang_UpdateCommand(…, e …) …
'Khai báo và khởi tạo biến kết nối: cnKet_noi
'Lấy dữ liệu mà người dùng vừa cập nhật
Dim lHo_kh As TextBox = e.Item.Cells(0).Controls(0)
Dim lTen_kh As TextBox = e.Item.Cells(1).Controls(0)
Dim lPhai As CheckBox = e.Item.FindControl(chkPhai)
Dim lMkh As Integer = dtgKhach_hang.DataKeys(e.Item.ItemIndex)
'Tạo đối tượng Command để cập nhật dữ liệu
Dim cmdLenh As New OleDbCommand
cmdLenh.Connection = cnKet_noi
cmdLenh.CommandText = Update KHACH_HANG   _
Set Ho_khach_hang=?, Ten_khach_hang=?,   _
Gioi_tinh=? Where MKH=?
'Truyền tham số cho đối tượng Command
cmdLenh.CommandType = CommandType.Text
cmdLenh.Parameters.Add(Ho_kh, lHo_kh.Text)
cmdLenh.Parameters.Add(Ten_kh, lTen_kh.Text)
cmdLenh.Parameters.Add(Phai, lPhai.Checked)
cmdLenh.Parameters.Add(Mkh, lMkh)
'Thi hành Command
cnKet_noi.Open()
cmdLenh.ExecuteNonQuery()
cnKet_noi.Close()
'Tắt chế độ cập nhật dữ liệu
dtgKhach_hang.EditItemIndex = -1
'Hiển thị dữ liệu mới cập nhật lên lưới
Lien_ket_du_lieu()
End Sub
Private Sub dtgKhach_hang_CancelCommand(…, e …) …
dtgKhach_hang.EditItemIndex = -1
Lien_ket_du_lieu()
End Sub
Hiệu chỉnh độ rộng của các Textbox khi dòng ở trạng thái sửa
Bạn có thể bổ sung đoạn lệnh sau (trong sự kiện ItemDataBound) để hiệu chỉnh độ rộng các
Textbox của dòng ở trạng thái sửa.

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

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


Biê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 ngang
RepeatDirection = Horizontal
 Vertical (mặc định): Hiển thị dữ liệu theo chiều đứng
RepeatDirection = Vertical
 RepeatColumns: Qui định số cột hiển thị của DataList
L'Enquête Corse
Đặt mua
Unspeakable
Đặt mua
Bottle Rocket
Đặt mua
Ripper
Đặt mua
Enduring Love
Đặt mua
The Good Thief
Đặt mua
RepeatColumns = 3
Thiết kế hình thức hiển thị cho DataList cũng tương tự như thiết kế cho cột Template Column
của
DataGrid.
Chọn Edit Template | ItemTemplate từ thực đơn ngữ cảnh để thực hiện thiết kế hình thức hiển
thị
cho DataList.
Chọn chức năng thiết kế cho DataList
Trong quá trình thực hành, để công việc thiết kế được dễ dàng, các bạn thực hiện thiết kế ở
bên ngoài điều khiển DataList. Sử dụng Table (thực đơn Insert  Table) để định vị trí hiển
thị của các điều khiển.
Sau khi 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ị trong
DataList.

Ví dụ: Hiển thị thông tin sách với DataList
Thiết kế thông tin sách với DataList
Như cột Template Column của DataGrid, xử lý hiển thị dữ liệu cho DataList được viết trong sự
kiện
ItemDataBound. Xử lý nhấn của các Button đặt trong DataList được viết trong sự kiện
ItemCommand.
Private Sub Page_Load(…, e …) Handles MyBase.Load
If Not IsPostBack Then

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

Lien_ket_du_lieu()
End If
End Sub
Public Sub Lien_ket_du_lieu()
dtSach = Doc_danh_sach_Sach()
dtlSach.DataSource = dtSach
dtlSach.DataKeyField = Ms
dtlSach.DataBind()
End Sub
Private Sub dtlSach_ItemDataBound(…, e …) …
Dim lDong as Integer = e.Item.ItemIndex
If lDong  0 Then Exit Sub
'Hiển thị Tên sách
Dim lnkTs As LinkButton
lnkTs = e.Item.FindControl(lnkTen_sach)
lnkTs.Text = e.Item.DataItem(Ten_sach)
'Hiển thị thông tin mô tả tóm tắt nội dung
Label
HyperLink
LinkButton
Tài liệu hướng dẫn giảng dạy
Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 82/174
Dim lblMt As Label
lblMt = e.Item.FindControl(lblMo_ta)
lblMt.Text = Left(e.Item.DataItem(Mo_ta), 200)  ...
'Hiển thị hình ảnh minh họa
Dim hplHinh As HyperLink
hplHinh = e.Item.FindControl(hplHinh_mh)
hplHinh.ImageUrl = ../Data_Pic/  e.Item.DataItem(Hinh_minh_hoa)
'Hiển thị giá bán sách
Dim lblGia As Label
lblGia = e.Item.FindControl(lblGia_ban)
lblGia.Text = e.Item.DataItem(Don_gia)
End Sub
Kết quả hiển thị thông tin sách trên trang Web
Kết quả trên trang Web
Tài liệu hướng dẫn giảng dạy
Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 83/174

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

II.2. Cập nhật dữ liệu với DataList
Ngoài việc hiển thị dữ liệu, DataList cũng hỗ trợ các thao tác cập nhật dữ liệu. Để thực hiện
chức
năng cập nhật dữ liệu với DataList, chúng ta cần phải thiết kế thêm vùng EditIemTemplate cho
DataList. (xem hình)
II.2.1. Các bước xử lý
a. Thiết kế
Thiết kế cả 2 vùng ItemTemplate và EditItemTemplate. Thực hiện các thao tác liên kết dữ liệu
cho
các điều khiển trong vùng EditItemTemplate thông qua cửa sổ thuộc tính tương tự như trong
ItemTemplate.
Chú ý: Chúng ta 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_gia
Yêu cầu thiết kế
Tên điều khiển Thiết lập thuộc tính
Hieu_chinh: ImageButton CommandName: Edit
Ghi_nhan: ImageButton CommandName: Update
CommandArgument:
DataBinder.Eval(Container, DataItem.Ms)
 Lưu lại mã số của sách đang hiệu chỉnh.
Bo_qua: ImageButton CommandName: Cancel
Tài liệu hướng dẫn giảng dạy
Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 85/174
b. Xử lý lệnh để cập nhật dữ liệu
Xử lý các sự kiện EditCommand, CancelCommand, UpdateCommand để thực hiện/bỏ qua việc
thay
đổi dữ liệu.
Private Sub Page_Load(…, e …) Handles MyBase.Load
'Put user code to initialize the page here
If Not IsPostBack Then
Lien_ket_du_lieu()
End If
End Sub
Private Sub dtlHang_hoa_EditCommand(…, e …) …
dtlHang_hoa.EditItemIndex = e.Item.ItemIndex
Lien_ket_du_lieu()
End Sub
Private Sub dtlHang_hoa_CancelCommand(…, e …) …

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

dtlHang_hoa.EditItemIndex = -1
Lien_ket_du_lieu()
End Sub
Private Sub dtlHang_hoa_UpdateCommand(…, e …) …
'Xử lý cập nhật dữ liệu tại đây
Dim Don_gia_sua As TextBox
Don_gia_sua = e.Item.FindControl(Don_gia_sua)
'Don_gia_sua.Text  Trả về đơn giá mới được sửa
'……
dtlHang_hoa.EditItemIndex = -1
Lien_ket_du_lieu()
End Sub
Tài liệu hướng dẫn giảng dạy
Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 86/174
DataList ở chế độ đang hiệu chỉnh
III. Điều khiển Repeater
Như 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ác tag HTML.
Điều khiển Repeater có các tag sau:
 HeaderTemplate/HeaderTemplate (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)
 ItemTemplate/ItemTemplate (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.
 AlternatingItemTemplate/AlternatingItemTemplate (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 tag ItemTemplate
/ItemTemplate
 SeparatorTemplate/SeparatorTemplate (tùy chọn)
Qui định hình thức hiển thị giữa các dòng dữ liệu
 FooterTemplate/FooterTemplate (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 Web
Bước 2. Chuyển qua xem trang Web dưới dạng HTML
asp:Repeater id=rptKhach_hang runat=server
asp:Repeater


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

Bước 3. Bổ sung các tag sau
asp:Repeater id=rptKhach_hang runat=server
HeaderTemplate
table border=1 bordercolor=SteelBlue
tr
td width=130 align=center
strongHọ khách hàng/strong
/td
td width=100 align=center
strongTên khách hàng/strong
/td
td width=120 align=center
strongĐịa chỉ/strong
/td
td width=80 align=center
strongĐiện thoại/strong
/td
/tr
/HeaderTemplate
ItemTemplate
tr
td
%# Container.DataItem(Ho_khach_hang) %
/td
td
%# Container.DataItem(Ten_khach_hang) %
/td
td
%# Container.DataItem(Dia_chi)%
/td
td
%# Container.DataItem(Dien_thoai) %
/td
/tr
/ItemTemplate
AlternatingItemTemplate
tr bgcolor=GhostWhite
td

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

%# Container.DataItem(Ho_khach_hang) %
/td
td
%# Container.DataItem(Ten_khach_hang) %
/td
td
%# Container.DataItem(Dia_chi)%
/td
td
%# Container.DataItem(Dien_thoai) %
/td
/tr
/AlternatingItemTemplate
FooterTemplate
/table
/FooterTemplate
/asp:Repeater
Bướ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ển
Private Sub Page_Load(…) Handles MyBase.Load
'Tạo dữ liệu cho đối tượng DataTable: dtKhach_hang
rptKhach_hang.DataSource = dtKhach_hang
rptKhach_hang.DataBind()
End Sub
Bước 6. Thi hành ứng dụng
Tài liệu hướng dẫn giảng dạy
Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 90/174
IV. Các ví dụ mở rộng
IV.1. Xử lý đảo hướng sắp xếp trong DataGrid
Ví 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ồn
dữ
liệu.
Private Sub Page_Load(…, e …) Handles MyBase.Load
If Not IsPostBack Then Lien_ket_du_lieu()
End Sub
Public 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.Net

Dim dvKhach_hang As New DataView(dtKhach_hang)
dvKhach_hang.Sort = ViewState(SortExpression)
If ViewState(SortAscending) = false Then
dvKhach_hang.Sort =  desc
End If
dtgKhach_hang.DataSource = dvKhach_hang
dtgKhach_hang.DataBind()
End Sub
Public Function Doc_ds_khach_hang() As DataTable
Dim sKet_noi As String
sKet_noi = Provider=Microsoft.Jet.Oledb.4.0;Data Source=  _
Server.MapPath(..DataQlBanSach.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 xong
cnKet_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 Function
Private Sub dtgKhach_hang_SortCommand(…, e …) …
Dim sSap_xep As String = ViewState(SortExpression)
Tài liệu hướng dẫn giảng dạy
Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 91/174
Dim sHuong As String = ViewState(SortAscending)
ViewState(SortExpression) = e.SortExpression
If (e.SortExpression = sSap_xep) Then
ViewState(SortAscending) = IIf(sHuong = false, true, false)
End If
Lien_ket_du_lieu()
End Sub
IV.2. Tạo biểu tượng sắp xếp trong cột cho DataGrid
Sắp xếp tăng dần theo tên khách hàng
Private Sub dtgKhach_hang_ItemDataBound(…, e …) …
If e.Item.ItemType = ListItemType.Header Then
Dim sSap_xep As String = ViewState(SortExpression)

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

Dim 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 - 1
If sSap_xep = _
dtgKhach_hang.Columns(i).SortExpression Then
Dim cell As TableCell = e.Item.Cells(i)
Dim lblKy_hieu As New Label
lblKy_hieu.Text = sKy_hieu
lblKy_hieu.Font.Name = webdings
lblKy_hieu.Font.Size = FontUnit.XSmall
cell.Controls.Add(lblKy_hieu)
End If
Next
End If
End Sub
IV.3. Định dạng hình thức hiển thị cho dòng dữ liệu thỏa điều
kiện trên DataGrid
Trong 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 Sub
Dim sTen_kh As String
sTen_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ạng
If sTen_kh.StartsWith(H) Then
e.Item.BackColor = Color.LemonChiffon
e.Item.Cells(1).Font.Bold = True
End If
End Sub
Tô màu những khách hàng có tên bắt đầu bằng ký tự H
IV.4. Tạo hiệu ứng chọn khi rê chuột qua các dòng dữ liệu
Private Sub dtgKhach_hang_ItemDataBound(…, e …) …
If e.Item.ItemIndex  0 Then Exit Sub
e.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 Sub
Tạo hiệu ứng chọn dòng dữ liệu trên lưới
Kinh 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ển
thị 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ừng
chứ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.





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

TÀI LIỆU THAM KHẢO


1. MSDN Library - April 2003  MSDN Library - July 2005
2. MSDN Traning: Developing Microsoft ASP.NET Web Applications Using Visual Studio.NET
3. MSDN Traning: Programming with Microsoft ADO.NET
4. ASP.NET Web Developer’s Guide
5. ASP.NET By Example [Steven A. Smith]
6. Developing Web Applications with Visual Basic .NET and ASP.NET [John Alexander, Billy
Hollis]
7. Programming ASP.NET, 2nd Edition [Dan Hurwitz, Jesse Liberty]
8. Inside ASP.NET [Scott Worley]
9. ASP NET Bible [Mridula Parihar]
10. ASP.NET for Web Designers [Peter Ladka]
11. Professional ADO.NET Programming [Wrox]
12. Cascading Style Sheets - The Designer's Edge [Molly E. Holzschlag ]
13. JavaScript Bible - Gold Edition [Danny Goodman]
14. Real World Web Services [Yasser Shohoud]
15. Trang chủ ASP.Net: http://www.asp.net
16. Trường học trực tuyến của W3C: http://www.w3schools.com




1. Đối tượng transaction được tạo bởi phương thức nào :
a. NewTransaction
b. StartTransaction
c. BeginTransaction
d. CreateTransaction

2. Đ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 control
b. Hiển thị không phụ thuộc vào trình duyệt


Biên sọan: Dương Thành Phết                                                          Trang 136
Bài Giảng Môn Lập Trình Website ASP.Net
c. Có các sự kiện riêng biệt
d. Tốc độ hiển thị nhanh

3. 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.Redirect
b. Server.Transfer
c. Server.Execute
d. Cả 3 phương thức trên

4. Ứng dụng web không sử dụng các control nào :
a. Windows controls
b. Server controls
c. HTML controls
d. User controls
e. Custom controls

5. Phương thức nào sau đây chắc chắn không làm thay đổi dữ liệu :
a. ExecuteNonQuery
b. ExecuteReader
c. ExecuteScalar
d. ExecuteReadOnly

6. 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 NEW
b. ADD ROW
c. INSERT ROW
d. INSERT INTO

7. 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ạp
c. Thực hiện nhiều lệnh cơ sở dữ liệu như một lệnh
d. Cả 3 câu trên đều đúng

8. Mức cô lập (isolation level) cao nhât của một giao dịch là :
a. RepeatableRead
b. Serializable
c. Chaos
d. ReadUncommitted
e. ReadCommitted

9. Thành phần nào không phải là thuộc tính của đối tượng Dat Adapter :
a. SQLCommand
b. DeleteCommand
c. UpdateCommand
d. InsertCommand

10. 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 form
b. Chu trình sống
c. Giao diện người dùng
d. Khả năng lưu trữ dữ liệu

11. 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 subweb
b. 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 subweb
d. Tạo thư mục vật lý, tạo subweb, tạo thư mục ảo

12. 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_End
b. Application_Start, Section_Start, Section_End, Application_End
c. Section_Start, Application_Start, Application_End, Section_End
d. Section_Start, Section_End, Application_Start, Application_End

13. 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_Dispose
b. Page_Load, Page_Init, Page_Unload, Page_Dispose


Biên sọan: Dương Thành Phết                                                               Trang 137
Bài Giảng Môn Lập Trình Website ASP.Net
c. Page_Load, Page_Unload, Page_Init, Page_Dispose
d. Page_Load, Page_Init, Page_Dispose, Page_Unload

14. Cookie là :
a. Một chuỗi kí tự trong dòng địa chỉ web
b. Một file nằm trên server
c. Một file nằm trên Client
d. Một file XML

15. Ứng dụng email như Outlook Express là loại ứng dụng :
a. Internet
b. Web
c. Ngang hàng (peer-to-peer)
d. Cả 3 câu trên đều sai

16. Ứng dụng web :
a. Chỉ chạy trên một máy đơn
b. Có kiến trúc Client/Server
c. Là tất cả ứng dụng có sử dụng Internet
d. Cả 3 câu trên đều đúng

17. Địa chỉ URL của ứng dụng web được xác định bởi :
a. Thư mục ảo của ứng dụng
b. Thư mục vật lý của ứng dụng
c. Tên của Project
d. Cả 3 câu đều sai

18. Ta có thể lưu trữ dữ liệu chung cho tât cả người dùng ở :
a. Biến Application
b. Biến Section
c. View State
d. Cả 3 nơi nói trên

19. Dữ liệu trên các control của web form được lưu trữ ở :
a. View state
b. Biến Application
c. Biến Section
d. Các biến toàn cục

20. Từ khóa nào không phải là từ khóa thứa kế trong C# :
a. new
b. protected
c. inherit
d. override

21. 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 đúng

22. Control Kiểm chứng nào không có trong ASP.NET :
a. RequiredValidator
b. CompareValidator
c. RangeValidator
d. CustomValidator

23. Phương thức nào sau đây của Data Set dùng để cập nhật dữ liệu :
a. Fill
b. AcceptChanges
c. RejectChange
d. Update

24. Lệnh dùng để hoàn tất một giao dịch là :
a. Finish
b. Commit
c. Rollback
d. Update


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

25. 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 server
b. Thông tin được truyền từ server đến client bằng giao thức FTP
c. Ứng dụng web không cần phải được cài đặt trên phía client
d. Dịch vụ web là một loại ứng dụng Internet

26. Tên của một thư mục ảo có dạng :
a. c:myproject
b. http://www.mycompany.com/myproject
c. aspnet://myproject
d. c:myprojectaspnet




Biên sọan: Dương Thành Phết                                                Trang 139

More Related Content

PDF
Lập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vn
PDF
Lập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự Nhiên
DOCX
C# tieng viet.pdf
PDF
Giáo trình asp net 3.5 sử dụng VS 2008 - Nhất Nghệ
PDF
Lập trình sáng tạo creative computing textbook mastercode.vn
PDF
Bai giang asp.net full
PDF
Giáo trình tin học đại cương đỗ thị mơ[bookbooming.com]
PDF
Giao trinh-asp-net-w2008
Lập trình ứng dụng web asp.net với C# - tailieumienphi.edu.vn
Lập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự Nhiên
C# tieng viet.pdf
Giáo trình asp net 3.5 sử dụng VS 2008 - Nhất Nghệ
Lập trình sáng tạo creative computing textbook mastercode.vn
Bai giang asp.net full
Giáo trình tin học đại cương đỗ thị mơ[bookbooming.com]
Giao trinh-asp-net-w2008

What's hot (13)

PDF
Giáo trình đào tạo visual basic 6.0 fpt software solution[bookbooming.com]
PDF
Ngôn ngữ lập trình C#
PDF
quản trị wordpress toàn tập
PDF
Nhập môn công nghệ thông tin
PDF
Thiet+lap+quan+tri+thu+dien+tu MDEAMON
PDF
Tai lieu huong_dan_microsoft_word_2010
PDF
Code igniter v1
PDF
Giáo trình Lập trình C căn bản - Aptech
PDF
Giao trinh-phan-cung-dien-tu[bookbooming.com]
PDF
Hướng Dẫn Sử Dụng Word 2010
PDF
Sach hoc thuc hanh wordpress huong dan xay dung website tieng viet hay nhat
DOC
luan van thac si xay dung he thong giam sat mang tren nguon mo zabbiz
PDF
Word press Ebook
Giáo trình đào tạo visual basic 6.0 fpt software solution[bookbooming.com]
Ngôn ngữ lập trình C#
quản trị wordpress toàn tập
Nhập môn công nghệ thông tin
Thiet+lap+quan+tri+thu+dien+tu MDEAMON
Tai lieu huong_dan_microsoft_word_2010
Code igniter v1
Giáo trình Lập trình C căn bản - Aptech
Giao trinh-phan-cung-dien-tu[bookbooming.com]
Hướng Dẫn Sử Dụng Word 2010
Sach hoc thuc hanh wordpress huong dan xay dung website tieng viet hay nhat
luan van thac si xay dung he thong giam sat mang tren nguon mo zabbiz
Word press Ebook
Ad

Viewers also liked (20)

PDF
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
PDF
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
PDF
Tu hoc microsoft asp.net
PDF
Bài giảng asp.net
PDF
Lập trình c# cơ bản full
PDF
Các giải pháp lập trình C#
PDF
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
PDF
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
PDF
Bài 6: Điều khiển DetailsView, FormView, ListView, DataPager
PDF
giao trinh-lap-trinh-c
PDF
UAH - Smart integrated home care device - specially for chronically ill ,ph...
PPT
10 buoc tro thanh lap trinh vien chuyen nghiep
PPT
Lap trinh asp.net
PPTX
Squid proxy linux
DOC
Bài tập thực hành C#
DOCX
Tổng quan về Access List
PPTX
Slide nagios
PDF
Ngon ngu lap trinh c# tieng viet - bach khoaaptech.com
PDF
giai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmp
PDF
Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ NHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Tu hoc microsoft asp.net
Bài giảng asp.net
Lập trình c# cơ bản full
Các giải pháp lập trình C#
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 6: Điều khiển DetailsView, FormView, ListView, DataPager
giao trinh-lap-trinh-c
UAH - Smart integrated home care device - specially for chronically ill ,ph...
10 buoc tro thanh lap trinh vien chuyen nghiep
Lap trinh asp.net
Squid proxy linux
Bài tập thực hành C#
Tổng quan về Access List
Slide nagios
Ngon ngu lap trinh c# tieng viet - bach khoaaptech.com
giai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmp
Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ NHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...
Ad

Similar to Lap trinh website dotnet c# (20)

PDF
Giáo trình ASP.NET - Trung tâm Nhất Nghệ
PDF
Giao trình asp-net w2008
PDF
Giao trinh asp net_w2008
PDF
Bai giang asp.net full
PDF
Bai giang asp.net full
PDF
Giáo trình asp.net với c sharp
PDF
Giao trinh asp.ne_tvoi_csharp
PDF
Asp control
PDF
Asp.net 3.5 _1
DOC
Đồ Án Tốt Nghiệp Về Xây Dựng Chương Trình Hỗ Trợ Học Asp.Net.doc
PDF
Lập trình web asp.net MVC
PDF
01 chuong01tongquanveasp netmvc5
PDF
Bài 2: Hướng dẫn làm việc với các điều khiển - Giáo trình FPT - Có ví dụ kèm ...
PPT
Ung dung web chuong 5
PDF
ASP.NET basic
PDF
Asp net
PDF
Tu hoc asp
PPT
Asp
PDF
Bai th 03
PPT
Ung dun web chuong 2
Giáo trình ASP.NET - Trung tâm Nhất Nghệ
Giao trình asp-net w2008
Giao trinh asp net_w2008
Bai giang asp.net full
Bai giang asp.net full
Giáo trình asp.net với c sharp
Giao trinh asp.ne_tvoi_csharp
Asp control
Asp.net 3.5 _1
Đồ Án Tốt Nghiệp Về Xây Dựng Chương Trình Hỗ Trợ Học Asp.Net.doc
Lập trình web asp.net MVC
01 chuong01tongquanveasp netmvc5
Bài 2: Hướng dẫn làm việc với các điều khiển - Giáo trình FPT - Có ví dụ kèm ...
Ung dung web chuong 5
ASP.NET basic
Asp net
Tu hoc asp
Asp
Bai th 03
Ung dun web chuong 2

Lap trinh website dotnet c#

  • 1. Bài Giảng Môn Lập Trình Website ASP.Net MỤC LỤC Chương 01: TỔNG QUAN VỀ ASP.NET ........................................................... Trang 1 I. Giới thiệu về ASP.Net.................................................................................................1 1. Tìm hiểu về ASP.Net ......................................................................................1 2. Những ưu điểm của ASP.Net ..........................................................................1 3. Quá trình xử lý tập tin ASPX............................................................................2 4. Tìm hiểu về .Net Phatform và .Net Framework................................................3 II. Web Server ............................................................................................................... 6 1. Internet Information Services ...........................................................................6 2. Cài đặt Web Server ........................................................................................7 3. Cấu hình Internet Information Services ...........................................................9 III. Tạo ứng dụng Web đầu tiên ..................................................................................12 1. Khởi động MS Visual Studio .Net .................................................................12 2. Tạo mới ứng dụng Web.................................................................................13 3. Bổ sung các điều khiển..................................................................................14 4. Thi hành ứng dụng .......................................................................................15 5. Phân loại tập tin trong ASP.Net .....................................................................15 IV. Làm quen với các thành phần giao diện trên VS .Net ........................................16 1. Solution Explorer .........................................................................................16 2. Property Window ..........................................................................................17 3. Toolbox .........................................................................................................17 4. Document Outline Window ............................................................................18 Chương 02: WEB SERVER CONTROL .....................................................................19 I. Điều khiển cơ bản chuẩn – Standard......................................................................19 1. Label..............................................................................................................20 2. TextBox .........................................................................................................20 3. Image.............................................................................................................20 4. Button, ImageButton, LinkButton ...................................................................21 5. HyperLink.......................................................................................................22 6. ListBox Và DropDownList ..............................................................................22 7. CheckBox & RadioButton ..............................................................................25 8. CheckBoxList & RadioButtonList ...................................................................25 II. Điều khiển kiểm tra dữ liệu III. Một số điều khiển khác IV. Đối tượng ViewState V. Asp.Net Page Chương 03: CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU I. Điều khiển DataGrid...................................................................................... 62 I.1. Các thao tác định dạng lưới ...........................................................................62 I.2. Xử lý sắp xếp................................................................................................67 I.3. Xử lý phân trang ...........................................................................................69 I.4. Tùy biến các cột ...........................................................................................70 I.5. Cập nhật dữ liệu trực tiếp trên lưới.................................................................74 Biên sọan: Dương Thành Phết Trang 1
  • 2. Bài Giảng Môn Lập Trình Website ASP.Net II. Điều khiển DataList ...................................................................................... 79 II.1. Sử dụng DataList để hiển thị dữ liệu...............................................................79 II.2. Cập nhật dữ liệu với DataList .........................................................................83 III. Điều khiển Repeater ..................................................................................... 87 IV. Các ví dụ mở rộng ......................................................................................... 90 IV.1. Xử lý đảo hướng sắp xếp trong DataGrid ........................................................90 IV.2. Tạo biểu tượng sắp xếp trong cột cho DataGrid...............................................91 IV.3. Định dạng hình thức hiển thị cho dòng dữ liệu thỏa điều kiện trên DataGrid ......92 IV.4. Tạo hiệu ứng chọn khi rê chuột qua các dòng dữ liệu ......................................93 Bài 4.................................................................................................................... 94 XÂY DỰNG LỚP XỬ LÝ DỮ LIỆU.......................................................................... 94 I. Thiết kế tổng quan........................................................................................ 96 I.1. Cấu trúc chi tiết lớp XL_BANG ........................................................................98 I.2. Xây dựng lớp xử lý nghiệp vụ.......................................................................102 I.3. Sử dụng lớp xử lý nghiệp vụ ........................................................................104 Bài 5.................................................................................................................. 108 Tài liệu hướng dẫn giảng dạy Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 3/174 XÂY DỰNG ĐỐI TƯỢNG THỂ HIỆN.................................................................... 108 I. Tạo mới đối tượng thể hiện......................................................................... 109 II. Sử dụng đối tượng thể hiện ........................................................................ 111 III. Tạo phương thức cho đối tượng thể hiện.................................................... 112 IV. Tạo sự kiện cho đối tượng thể hiện ............................................................ 113 IV.1. Thiết kế .....................................................................................................114 IV.2. Xử lý..........................................................................................................114 Bài 6.................................................................................................................. 117 XÂY DỰNG VÀ QUẢN LÝ ỨNG DỤNG ................................................................. 117 I. Đối tượng Request, Response..................................................................... 118 I.1. Đối tượng Response....................................................................................118 I.2. Đối tượng Request ......................................................................................120 II. Đối tượng Session, Application................................................................... 122 II.1. Đối tượng Application..................................................................................123 II.2. Đối tượng Session.......................................................................................124 III. Đối tượng Server......................................................................................... 125 IV. Đối tượng Cookies ...................................................................................... 125 IV.1. Giới thiệu ...................................................................................................125 IV.2. Làm việc với Cookies ...................................................................................126 V. Tập tin quản lý và cấu hình ứng dụng......................................................... 127 V.1. Global.asax.................................................................................................127 V.2. Web.config.................................................................................................128 VI. Tổ chức & xây dựng ứng dụng.................................................................... 133 VI.1. Tổ chức lưu trữ ứng dụng............................................................................133 VI.2. Xây dựng ứng dụng ....................................................................................134 Bài 7.................................................................................................................. 136 WEB SERVICE ................................................................................................... 136 Biên sọan: Dương Thành Phết Trang 2
  • 3. Bài Giảng Môn Lập Trình Website ASP.Net I. Tìm hiểu về Web Services ........................................................................... 137 II. Xây dựng Web Services .............................................................................. 140 Tài liệu hướng dẫn giảng dạy Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 4/174 II.1. Tạo Web Services trong VS .Net...................................................................140 II.2. Kiểm tra Web Service ..................................................................................141 III. Sử dụng Web Service.................................................................................. 143 III.1. Sử dụng Web Service do người dùng xây dựng .............................................144 III.2. Sử dụng Web Services được cung cấp miễn phí trên mạng.............................144 IV. Xây dựng Web Services truy xuất dữ liệu................................................... 148 IV.1. Web Service: WS_KHACH_HANG..................................................................148 IV.2. Sử dụng WS_KHACH_HANG.........................................................................150 Bài 8.................................................................................................................. 152 PHỤ LỤC ........................................................................................................... 152 I. Cơ sở dữ liệu dùng trong ứng dụng ............................................................ 153 I.1. Thiết kế cơ sở dữ liệu..................................................................................153 I.2. Dữ liệu thử.................................................................................................156 II. Giới thiệu về các tag HTML ......................................................................... 157 II.1. Cơ bản về tag HTML....................................................................................157 II.2. Các tag nhập liệu........................................................................................163 III. Cascading Style Sheets - CSS...................................................................... 166 III.1. Giới thiệu CSS.............................................................................................166 III.2. Cú pháp CSS ..............................................................................................167 III.3. Sử dụng CSS trong trang HTML....................................................................169 Chương 01 TỔNG QUAN VỀ ASP.NET  Giới thiệu về Asp.Net  Web Server  Tạo ứng dụng web đầu tiên I. Giới thiệu về ASP.Net 1. Tìm hiểu về ASP.Net Từ khoảng cuối thập niên 90, ASP (Active Server Page) đã được nhiều lập trình viên lựa chọn để xây dựng và phát triển ứng dụng web động trên máy chủ sử dụng hệ điều hành Windows. ASP đã thể hiện được những ưu điểm của mình với mô hình lập trình thủ tục đơn giản, sử dụng hiệu quả các đối tượng COM: ADO (ActiveX Data Object) - xử lý dữ liệu, FSO (File System Object) - làm việc với hệ thống tập tin…, đồng thời, ASP cũng hỗ trợ nhiều ngôn ngữ: VBScript, JavaScript. Chính những ưu điểm đó, ASP đã được yêu thích trong một thời gian dài. Tuy nhiên, ASP vẫn còn tồn đọng một số khó khăn như Code ASP và HTML lẫn lộn, điều này làm cho quá trình viết code khó khăn, thể hiện và trình bày code không trong sáng, hạn chế khả năng sử dụng lại code. Bên cạnh đó, khi triển khai cài đặt, do không được biên dịch trước nên dễ bị mất source code, hạn chế về mặt tốc độ thực hiện. Quá trình xử lý Postback khó khăn, … Biên sọan: Dương Thành Phết Trang 3
  • 4. 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ọi ban đầu là ASP+, tên chính thức sau này là ASP.Net. Với ASP.Net, không những không cần đòi hỏi bạn phải biết các tag HTML, thiết kế web, mà nó còn hỗ trợ mạnh lập trình hướng đối tượng trong quá trình xây dựng và phát triển ứng dụng Web. ASP.Net là kỹ thuật lập trình và phát triển ứng dụng web ở phía Server (Server-side) dựa trên nền tảng của Microsoft .Net Framework. Hầu hết, những người mới đến với lập trình web đều bắt đầu tìm hiểu những kỹ thuật ở phía Client (Client-side) như: HTML, Java Script, CSS (Cascading Style Sheets). Khi Web browser yêu cầu một trang web (trang web sử dụng kỹ thuật client-side), Web server tìm trang web mà Client yêu cầu, sau đó gởi về cho Client. Client nhận kết quả trả về từ Server và hiển thị lên màn hình. ASP.Net sử dụng kỹ thuật lập trình ở phía server thì hoàn toàn khác, mã lệnh ở phía server (ví dụ: mã lệnh trong trang ASP, ASP.NET) sẽ được biên dịch và thi hành tại Web Server. Sau khi được Server đọc, biên dịch và thi hành, kết quả tự động được chuyển sang HTML/ JavaScript/ CSS và trả về cho Client. Tất cả các xử lý lệnh ASP, 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.Net  ASP.Net cho phép bạn lựa chọn một trong các ngôn ngữ lập trình mà bạn yêu thích: Visual Basic.Net, J#, C#,…  Trang ASP.Net được biên dịch trước thành những tập tin DLL mà Server có thể thi hành nhanh chóng và hiệu quả. Yếu tố này là một bước nhảy vọt đáng kể so với kỹ thuật thông dịch của ASP.  ASP.Net hỗ trợ mạnh mẽ bộ thư viện phong phú và đa dạng của .Net Framework, làm việc với XML, Web Service, truy cập cơ sở dữ liệu qua ADO.Net, …  ASPX và ASP có thể cùng hoạt động trong 1 ứng dụng.  ASP.Net sử dụng phong cách lập trình mới: Code behide. Tách code riêng, giao diện riêng  Dễ đọc, dễ quản lý và bảo trì.  Kiến trúc lập trình giống ứng dụng trên Windows.  Hỗ trợ quản lý trạng thái của các control  Tự động phát sinh mã HTML cho các Server control tương ứng với từng loại Browser  Triển khai cài đặt o Không cần lock, không cần đăng ký DLL o Cho phép nhiều hình thức cấu hình ứng dụng  Hỗ trợ quản lý ứng dụng ở mức toàn cục o Global.aspx có nhiều sự kiện hơn Biên sọan: Dương Thành Phết Trang 4
  • 5. Bài Giảng Môn Lập Trình Website ASP.Net o Quản lý session trên nhiều Server, không cần Cookies 3. Quá trình xử lý tập tin ASPX Khi Web server nhận được yêu cầu từ phía client, nó sẽ tìm kiếm tập tin được yêu cầu thông qua chuỗi URL được gởi về, sau đó, tiến hành xử lý theo sơ đồ sau: 4. Tìm hiểu về .Net Phatform và .Net Framework .Net Phatform Bao gồm .Net Framework và những công cụ được dùng để xây dựng, phát triển ứng dụng và dịch vụ. ASP.Net. .Net Framework Kiến trúc .Net Framework Biên sọan: Dương Thành Phết Trang 5
  • 6. Bài Giảng Môn Lập Trình Website ASP.Net  Hệ điều hành Cung cấp các chức năng xây dựng ứng dụng với vai trò quản lý việc xây dựng và thi hành ứng dụng, .NET Framework cung cấp các lớp đối tượng (Class) để bạn có thể gọi thi hành các chức năng mà đối tượng đó cung cấp. Tuy nhiên, lời kêu gọi của bạn có được "hưởng ứng" hay không còn tùy thuộc vào khả năng của hệ điều hành đang chạy ứng dụng của bạn. Các chức năng đơn giản như hiển thị một hộp thông báo (Messagebox) sẽ được .NET Framework sử dụng các hàm API của Windows. Chức năng phức tạp hơn như sử dụng các COMponent sẽ yêu cầu Windows phải cài đặt Microsoft Transaction Server (MTS) hay các chức năng trên Web cần Windows phải cài đặt Internet Information Server (IIS). Như vậy, bạn cần biết rằng lựa chọn 1 hệ điều hành để cài đặt và sử dụng .NET Framework cũng không kém phần quan trọng. Cài đặt .NET Framework trên các hệ điều hành Windows 2000, 2000 Server, XP, 2003 Server, Vista sẽ đơn giản và tiện dụng hơn trong khi lập trình.  Common Language Runtime Là thành phần "kết nối" giữa các phần khác trong .NET Framework với hệ điều hành. Common Language Runtime (CLR) giữ vai trò quản lý việc thi hành các ứng dụng viết bằng .NET trên Windows. CLR sẽ thông dịch các lời gọi từ chương trình cho Windows thi hành, đảm bảo ứng dụng không chiếm dụng và sử dụng tràn lan tài nguyên của hệ thống. Nó cũng không cho phép các lệnh "nguy hiểm" được thi hành. Các chức năng này được thực thi bởi các thành phần bên trong CLR như Class loader, Just In Time compiler, Garbage collector, Exception handler, COM marshaller, Security engine,… Trong các phiên bản hệ điều hành Windows mới như XP.NET và Windows 2003, Win Vista CLR được gắn kèm với hệ điều hành. Điều này đảm bảo ứng dụng viết ra trên máy tính của chúng ta sẽ chạy trên máy tính khác mà không cần cài đặt, các bước thực hiện chỉ đơn giản là một lệnh xcopy của DOS!  Bộ thư viện các lớp đối tượng Nếu phải giải nghĩa từ "Framework" trong thuật ngữ .NET Framework thì đây là lúc thích hợp nhất. Framework chính là một tập hợp hay thư viện các lớp đối tượng hỗ trợ người lập trình khi xây dựng ứng dụng. Có thể một số người trong chúng ta đã nghe qua về MFC và JFC. Microsoft Foundation Class là bộ thư viện mà lập trình viên Visual C++ sử dụng trong khi Java Foundation Class là bộ thư viện dành cho các lập trình viên Java. Giờ đây, có thể coi .NET Framework là bộ thư viện dành cho các lập trình viên .NET. Với hơn 5000 lớp đối tượng để gọi thực hiện đủ các loại dịch vụ từ hệ điều hành, chúng ta có thể bắt đầu xây dựng ứng dụng bằng Notepad.exe!!!… Nhiều người lầm tưởng rằng các Biên sọan: Dương Thành Phết Trang 6
  • 7. Bài Giảng Môn Lập Trình Website ASP.Net môi trường phát triển phần mềm như Visual Studio 98 hay Visual Studio.NET là tất cả những gì cần để viết chương trình. Thực ra, chúng là những phần mềm dùng làm "vỏ bọc" bên 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 quan trọng của .NET Framework. Nếu không có cái cốt lõi .NET Framework, Visual Studio.NET cũng chỉ là cái vỏ bọc! Nhưng nếu không có Visual Studio.NET, công việc của lập trình viên .NET cũng lắm bước gian nan! o Base class library – thư viện các lớp cơ sở Đây là thư viện các lớp cơ bản nhất, được dùng trong khi lập trình hay bản thân những người xây dựng .NET Framework cũng phải dùng nó để xây dựng các lớp cao hơn. Ví dụ các lớp trong thư viện này là String, Integer, Exception,… o ADO.NET và XML Bộ thư viện này gồm các lớp dùng để xử lý dữ liệu. ADO.NET thay thế ADO để trong việc thao tác với các dữ liệu thông thường. Các lớp đối tượng XML được cung cấp để bạn xử lý các dữ liệu theo định dạng mới: XML. Các ví dụ cho bộ thư viện này là SqlDataAdapter, SqlCommand, DataSet, XMLReader, XMLWriter,… o ASP.NET Bộ thư viện các lớp đối tượng dùng trong việc xây dựng các ứng dụng Web. ASP.NET không phải là phiên bản mới của ASP 3.0. Ứng dụng web xây dựng bằng ASP.NET tận dụng được 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: code behind. Đây là cách mà lập trình viên xây dựng các ứng dụng Windows based thường sử dụng – giao diện và lệnh được tách riêng. Tuy nhiên, nếu bạn đã từng quen với việc lập trình ứng dụng web, đây đúng là một sự "đổi đời" vì bạn đã được giải phóng khỏi mớ lệnh HTML lộn xộn tới hoa cả mắt. Sự xuất hiện của ASP.NET làm cân xứng giữa quá trình xây dựng ứng dụng trên Windows và Web. ASP.NET cung cấp một bộ các Server Control để lập trình viên bắt sự kiện và xử lý dữ liệu của ứng dụng như đang làm việc với ứng dụng Windows. Nó cũng cho phép chúng ta chuyển một ứng dụng trước đây viết chỉ để chạy trên Windows thành một ứng dụng Web khá dễ dàng. Ví dụ cho các lớp trong thư viện này là WebControl, HTMLControl, … o Web services Web services có thể hiểu khá sát nghĩa là các dịch vụ được cung cấp qua Web (hay Internet). Dịch vụ được coi là Web service không nhằm vào người dùng mà nhằm vào người xây dựng phần mềm. Web service có thể dùng để cung cấp các dữ liệu hay một chức năng tính toán. Ví dụ, công ty du lịch của bạn đang sử dụng một hệ thống phần mềm để ghi nhận thông tin về khách du lịch đăng ký đi các tour. Để thực hiện việc đặt phòng khách sạn tại địa điểm du lịch, công ty cần biết thông tin về phòng trống tại các khách sạn. Khách sạn có thể cung cấp một Web service để cho biết thông tin về các phòng trống tại một thời điểm. Dựa vào đó, phần mềm của bạn sẽ biết rằng liệu có đủ chỗ để đặt phòng cho khách du lịch không? Nếu đủ, phần mềm lại có thể dùng một. Web service khác cung cấp chức năng đặt phòng để thuê khách sạn. Điểm lợi của Web service ở đây là bạn không cần một người làm việc liên lạc với khách sạn Biên sọan: Dương Thành Phết Trang 7
  • 8. 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ên lạc lại với khách sạn để đặt phòng. Đừng quên là khách sạn lúc này cũng cần có người để làm việc với nhân viên của bạn và chưa chắc họ có thể liên lạc thành công. Web service được cung cấp dựa vào ASP.NET và sự hỗ trợ từ phía hệ điều hành của Internet Information Server. o Window form Bộ thư viện về Window form gồm các lớp đối tượng dành cho việc xây dựng các ứng dụng Windows based. Việc xây dựng ứng dụng loại này vẫn được hỗ trợ tốt từ trước tới nay bởi các công cụ và ngôn ngữ lập trình của Microsoft. Giờ đây, ứng dụng chỉ chạy trên Windows sẽ có thể làm việc với ứng dụng Web dựa vào Web service. Ví dụ về các lớp trong thư viện này là: Form, UserControl,…  Phân nhóm các lớp đối tượng theo loại Một khái niệm không được thể hiện trong hình vẽ trên nhưng cần đề cập đến là Namespace. Đây là tên gọi một nhóm các lớp đối tượng phục vụ cho một mục đích nào đó. Chẳng hạn, các lớp đối tượng xử lý dữ liệu sẽ đặt trong một namespace tên là Data. Các lớp đối tượng dành cho việc vẽ hay hiển thị chữ đặt trong namespace tên là Drawing. Một namespace có thể là con của một namespace lớn hơn. Namespace lớn nhất trong .NET Framework là System. 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ùng với nhau không sử dụng được. .NET Framework cho phép chúng ta tạo ra các lớp đối tượng và các namespace của riêng mình. Với hơn 5000 tên có sẵn, việc đặt trùng tên lớp của mình với một lớp đối tượng đã có là điều khó tránh khỏi. Namespace cho phép việc này xảy ra bằng cách sử dụng 1 tên đầy đủ để nói đến 1 lớp đối tượng. Ví dụ, nếu muốn dùng lớp WebControls, chúng ta có thể dùng tên tắt của nó là WebControls hay tên đầy đủ là: System.Web.UI.WebControls. Biên sọan: Dương Thành Phết Trang 8
  • 9. 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ình cho mình vì tất cả các ngôn ngữ đều mạnh ngang nhau. Cũng bằng cách sử dụng các lớp đối tượng để xây dựng ứng dụng, .NET Framework buộc người lập trình phải sử dụng kỹ thuật lập trình hướng đối tượng (sẽ được nói tới trong các chương sau). II. Web Server Trong phần này giới thiệu về IIS (phần mềm Web Server của Microsot dành cho Windows), đồ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ựng các ứng dụng Web tận dụng các điểm mạnh của Server-side Script, COM component,…theo mô hình Client/Server. IIS có rất nhiều phiên bản, đầu tiên được phát hành rời trong bản Service pack của WinNT.  Các phiên bản Windows 2000 đã có tích hợp IIS 5.0.  Windows XP tích hợp IIS 5.5  Windows XP .NET Server tích hợp IIS 6 hỗ trợ các tính năng dành cho .NET của ASP.NET và Web Service.  Windows Vista tích hợp IIS 7.0 2. Cài đặt Web Server a. Cài đặt Web Server trên Windows 2000/Windows XP Professional Windows 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ài IIS 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).  Bướ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ặc http://127.0.0.1 Biên sọan: Dương Thành Phết Trang 9
  • 10. Bài Giảng Môn Lập Trình Website ASP.Net  Ghi chú: Để kiểm tra cài đặt: Khởi động trình duyệt truy cập địa chỉ : http://Localhost Kết quả thành công. b. Cài đặt Web Server trên Windows Vista  Bước 1: Chọn Start  Settings  Control Panel  Bước 2: Chọn Classic View  Chọn Programs and features  Bước 3: Chọn Turn Windows features on or off  Bước 4: Đánh dấu vào mục Internet Information Services (IIS)  Chọn Ok để cài đặt Biên sọan: Dương Thành Phết Trang 10
  • 11. Bài Giảng Môn Lập Trình Website ASP.Net Biên sọan: Dương Thành Phết Trang 11
  • 12. Bài Giảng Môn Lập Trình Website ASP.Net Kiềm tra kết quả cài đặt: Khởi động trình duyệt nhập địa chỉ http://localhost c. Cài đặt Web Server trên Windows Server 2003 Cài đặt Web Server trên Windows Server 2003 cũng tương tự như cài đặt Web Server trên Windows 2000.  Bước 1. Chọn Control Panel | Add/Remove programs.  Bước 2. Add/Remove Windows Components.  Bước 3. Đánh dấu vào Application Server.  Bước 4: Chọn Next để cài đặt 3. Cấu hình Internet Information Services Để cấu hình IIS, vào Control Panel  Administrative Tools  Internet Services Manager. Trên các hệ điều hành Windows 2000/XP, Vista Microsoft sử dụng công cụ Microsoft Management Console (MMC) để làm công cụ quản lý. a. Cấu hình IIS quy định trang chủ mặc định  Trên Win 2000, XP o Start  Settings  Control Panel  Administratrive tools  Mở mục Internet Infomtic Services Biên sọan: Dương Thành Phết Trang 12
  • 13. Bài Giảng Môn Lập Trình Website ASP.Net o Click phải mục Default Website  Properties Chọn trang Documents để quy định trang chủ mặc định VD: Default.Aspx Default.asp Index.asp Home.html Index.htm  Cấu hình IIS trên Win Vista o Start  Settings  Control Panel  Administratrive tools  Mở mục IIS Manager o Click phải mục Default Document Biên sọan: Dương Thành Phết Trang 13
  • 14. Bài Giảng Môn Lập Trình Website ASP.Net b. 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ột thư mục con trong wwwroot cho mỗi ứng dụng nhưng tố hơn bạn nên tạo ánh xạ (Virtual Directory) liên kết đến thư mục đó.Để tạo một virtual directory:  Trên Windows 2000, Xp Click phải: Default WebsiteNew/ Virtual Directory Next  Next  Nextt Khai 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  Finish  Trên Win Vista Click phải: Default WebsiteAdd Application (hoặc Virtual Directory) Khai 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
  • 15. Bài Giảng Môn Lập Trình Website ASP.Net Chạ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/Maytinh IV. Tạo ứng dụng đầu tiên 1. Khởi động MS Visual Studio .Net Chúng ta sẽ bắt đầu bằng việc làm quen với môi trường phát triển ứng dụng (IDE) của Visual Studio.NET 2005. Start  Programs  Microsoft Visual Studio 2005  Microsoft Visual Studio 2005 Biên sọan: Dương Thành Phết Trang 15
  • 16. Bài Giảng Môn Lập Trình Website ASP.Net 2. Tạo ứng dụng web Bước 1. Chọn từ thực đơn File  New  Website Chọn các dạng ứng dụng tạo (ASP.Net Website) Vị trí lưu trữ (D:Wellcom) Ngôn ngữ lập trình (C#)  Chon Ok Kết quả:  Cửa sổ Solution Explorer  Trang Default.aspx (Design) Biên sọan: Dương Thành Phết Trang 16
  • 17. Bài Giảng Môn Lập Trình Website ASP.Net  Trang Default.aspx (Source)  Trang Default.aspx.cs 3. 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. Biên sọan: Dương Thành Phết Trang 17
  • 18. 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ụng o Kiểm lỗi trước khi chạy: Từ Menu Build  Chọn Build Web Site o Chấp nhận bật chế độ debug cho Website o Chạy chương trình Bấm Ctrl + F5 : để chạy chương trình (không debug) và F5 để chạy debug. Biên sọan: Dương Thành Phết Trang 18
  • 19. Bài Giảng Môn Lập Trình Website ASP.Net 5. Phân loại tập tin trong ASP.Net ASP.Net ASP Diễn giải .asax .asa Tập tin global.asax trong ASP .Net thay thế cho tập tin global.asa của ASP, là tập tin quản lý các sự kiện của ứng dụng (application), session, và các sự kiện khi có các yêu cầu tới trang web. .ascx Các điều khiển do người dùng tự tạo được lưu trữ với phần mở rộng là ascx. .asmx Tập tin Web Service của ứng dụng ASP.Net .aspx .asp Phần mở rộng của trang ASP.Net .config Tập tin cấu hình ứng dụng theo định dạng XML. Web.config chứa hầu hết các cấu hình của ứng dụng .cs Tập tin mã nguồn viết theo ngôn ngữ C# .js .js Tập tin mã nguồn của Jscript .vb Tập tin mã nguồn viết theo ngôn ngữ VB.Net V. Làm quen với các thành phần giao diện trên VS .Net 1. Solution Explorer  Hiển thị cửa số Solution Explorer: Thực đơn View | Solution Explorer  Thao tác với cửa sổ Solution Explorer : Đây là cửa số quản lý các "tài nguyên" có trong ứng dụng. Thông qua cửa sổ này, chúng ta có thể: o Thực hiện các chức năng: sao chép, cắt, dán trên tập tin, thư mục như Windows Explorer. o Tổ chức thư mục quản lý ứng dụng: Sử dụng chức năng Add | New Folder từ thực đơn ngữ cảnh. o Thêm thành phần mới cho ứng dụng: Sử dụng chức năng Add | Add New Item…từ thực đơn ngữ cảnh. Xuất hiện hộp thoại Add New Item.  Web Form: Thêm trang Web  Class: Thêm lớp đối tượng  Module Web Form: Thêm thư viện  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ấp chuộ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
  • 20. Bài Giảng Môn Lập Trình Website ASP.Net  Xác định Project khởi động (trong trường hợp Solution có nhiều Project): Chọn Set as StartUp Project từ thực đơn ngữ cảnh. 2. Property Window Hiển thị cửa số Properties Window: Thực đơn View | Properties Window. Thông qua cửa sổ thuộc tính, chúng ta có thể thiết lập thuộc tính cho trang web và các đối tượng có trong trang web. 3. Toolbox Hiển thị Toolbox: Thực đơn View  Toolbox Biên sọan: Dương Thành Phết Trang 20
  • 21. Bài Giảng Môn Lập Trình Website ASP.Net 4. Document Outline Window Hiển thị cửa sổ Document Outline: Thực đơn View / Other Windows / Document Outline. Cửa sổ này hiển thị các thành phần của trang web theo tổ chức cây  rất dễ quản lý và thao tác với các đối tượng có trong trang Web. Biên sọan: Dương Thành Phết Trang 21
  • 22. Bài Giảng Môn Lập Trình Website ASP.Net Chương 02: WEB SERVER CONTROL  Điều khiển chuẩn – Standard  Điều khiển kiểm tra dữ liệu Validation  Một số điều khiển khác  Đối tượng ViewState I. Điều khiển chuẩn – Standard Những lý do nên sử dụng ASP.Net Standard Web Control:  Đơn giản, tương tự như các điều khiển trên Windows Form.  Đồng nhất: Các điều khiển Web server có các thuộc tính giống nhau  dễ tìm hiểu và sử dụng.  Hiệu quả: Các điều khiển Web Server tự động phát sinh ra các tag HTML theo từng loại Browser. Bảng liệt kê các thuộc tính chung của các Web control Thuộc tính Kiểu Ý nghĩa (ID) Chuỗi Qui định tên của điều khiển. Tên của điều khiển là duy nhất. AccessKey String Qui định ký tự để di chuyển nhanh đến điều khiển - ký tự xử lý phím nóng. Attributes AttributeCollection Tập hợp các thuộc tính của điều khiển HTML BackColor Color Qui định màu nền của điều khiển. BorderColor Color Qui định màu đường viền của điều khiển. BorderStyle BorderStyle Qui định kiểu đường viền của điều khiển. BorderWidth Unit Qui định độ rộng của đường viền. CssClass String Qui định hình thức hiển thị của điều khiển qua tên CSS. Enabled Boolean Qui định điều khiển có được hiển thị hay không. Giá trị mặc định của thuộc tính này là True – được phép hiển thị. Font FontInfo Qui định Font hiển thị cho điều khiển ForeColor Color Qui định màu chữ hiển thị trên điều khiển Biên sọan: Dương Thành Phết Trang 22
  • 23. Bài Giảng Môn Lập Trình Website ASP.Net Height Unit Qui định chiều cao của điều khiển ToolTip String Dòng chữ sẽ hiển thị khi rê chuột vào điều khiển. Width Unit Qui định độ rộng của điều khiển. 1. Label Label thường được sử dụng để hiển thị và trình bày nội dung trên trang web. Nội dung được hiển thị trong label được xác định thông qua thuộc tính Text. Thuộc tính Text có thể nhận và hiển thị nội dung với các tag HTML. Ví dụ: lblA.Text = "Đây là chuỗi văn bản thường"; lblB.Text = "<B>Còn đây là chuỗi văn bản được in đậm</B>"; 2. TextBox TextBox là điều khiển được dùng để nhập và hiển thị dữ liệu. TextBox thường được sử dụng nhiều với các ứng dụng trên windows form. Các thuộc tính:  Text: Nội dung chứa trong Textbox  TextMode: Qui định chức năng của Textbox, có các giá trị sau: o SingleLine: Hiển thị và nhập liệu 1 dòng văn bản o MultiLine: Hiển thị và nhập liệu nhiều dòng văn bản o Password: Hiển thị dấu * thay cho các ký tự có trong Textbox.  Rows: Trong trường hợp thuộc tính TextMode = MultiLine, thuộc tính Rows sẽ qui định số dòng văn bản được hiển thị.  Maxlength: Qui định số ký tự tối đa được nhập vào cho TextBox  Wrap: Thuộc tính này qui định việc hiển thị của văn bản có được phép tự động xuống dòng khi kích thước ngang của của điều khiển không đủ để hiển thị dòng nội dung văn bản. Giá trị mặc định của thuộc tính này là True - tự động xuống dòng. Ví dụ: 3. Image Đ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ị.  AlternateText: Chuỗi văn bản sẽ hiển thị khi tập tin được thiết lập trong thuộc tính ImageURL không tồn tại.  ImageAlign: Vị trí hiển thị giữa hình và nội dung văn bản. o NotSet Biên sọan: Dương Thành Phết Trang 23
  • 24. Bài Giảng Môn Lập Trình Website ASP.Net o Left o Middle o TextTop o Right 4. Button, ImageButton, LinkButton  Các điều khiển Button, ImageButton, LinkButton mặc định đều là các nút Submit Button, mỗi khi được nhấn vào sẽ PostBack về Server.  Khi chúng ta thiết lập giá tri thuộc tính CommandName cho các điều khiển này, chúng ta gọi tên chung cho các điều khiển này là Command Button. Các thuộc tính chung của Button, ImageButton, LinkButton Thuộc tính Ý nghĩa Text Chuỗi văn bản hiển thị trên điều khiển. CommandName Tên lệnh. Được sử dụng trong sự kiện Command.  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, Button Biên sọan: Dương Thành Phết Trang 24
  • 25. Bài Giảng Môn Lập Trình Website ASP.Net Xử lý sự kiện: protected void btTinhtien_Click(object sender, EventArgs e) { int soluong=int.Parse(txtSoluong.Text ); int dongia=int.Parse(txtDongia.Text ); int Thanhtien=soluong * dongia; txtThanhtien.Text = Thanhtien.ToString(); } Khi thi hành ứng dụng 5. HyperLink Điều khiển này được sử dụng để tạo ra các liên kết siêu văn bản. Các thuộc tính:  ImageURL: Qui định hình hiển thị trên điều khiển.  Text: Chuỗi văn bản sẽ được hiển thị trên điều khiển. Trong trường hợp cả 2 thuộc tính ImageURL và Text được thiết lập, thuộc tính ImageURL được ưu tiên, thuộc tính Text sẽ được hiển thị như Tooltip.  NavigateUrl: Đường dẫn cần liên kết đến.  Target: Xác định cửa sổ sẽ hiển thị cho mối liên kết o _blank: Hiển thị trang liên kết ở một cửa sổ mới. o _self: Hiển thị trang liên kết tại chính cửa sổ chứa liên kết đó. o _parent: Hiển thị trang liên kết ở frame cha. Ví dụ: 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 Hyperlink Biên sọan: Dương Thành Phết Trang 25
  • 26. Bài Giảng Môn Lập Trình Website ASP.Net 6. Listbox và DropdownList ListBox và DropdownList là điều khiển hiển thị danh sách lựa chọn mà người dùng có thể chọn một hoặc nhiều (chỉ dành cho ListBox). Các mục lựa chọn có thể được thêm vào danh sách thông qua lệnh hoặc ở cửa sổ thuộc tính (Property Windows). Các thuộc tính:  AutoPostBack: Thuộc tính này qui định điều khiển có được phép tự động PostBack về Server khi chỉ số của mục chọn bị thay đổi. Giá trị mặc định của thuộc tính này là False - không tự động Postback.  Items : Đây là tập hợp chứa các mục chọn của điều khiển. Ta có thể thêm vào mục chọn vào thời điểm thiết kế thông qua cửa sổ ListItem Collection Editor, hoặc thông qua lệnh.  Rows: Qui định chiều cao của ListBox theo số dòng hiển thị.  SelectionMode: Thuộc tính này xác định cách thức chọn các mục trong ListBox. SelectionMode chỉ được phép thay đổi trong quá trình thiết kế, vào lúc thực thi chương trình, thuộc tính này chỉ đọc. o Single: Chỉ được chọn một mục có trong danh sách (mặc định). o Multiple: Cho phép chọn nhiều lựa chọn. Tìm hiểu về tập hợp Items  Add: Thêm mục mới vào cuối danh sách, sử dụng phương thức Items.Add Items.Add(<String>);  Insert: Thêm mục mới vào danh sách tại một vị trí nào đó, sử dụng phương thức Items.Insert Items.Insert(<index>,<String>);  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(<Chuoi>); 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(<index>); o Clear: Phương thức Clear của tập hợp Items được dùng để xóa tất cả những Item có trong danh sách. Cú pháp Items.Clear(); Xử lý mục chọn Các thuộc tính sau sẽ giúp bạn xác định chỉ số, giá trị của mục đang được chọn. Trong trường hợp điều khiển cho phép chọn nhiều, ta duyệt qua các Item trong tập hợp Items, o Sử 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.  SelectedIndex: Cho biết chỉ số của mục được chọn. Trong trường hợp chọn nhiều mục, SelectedIndex sẽ trả về chỉ số mục chọn đầu tiên.  SelectedItem: Cho biết mục được chọn. Trong trường hợp chọn nhiều mục, SelectedItem sẽ trả về mục chọn đầu tiên. Biên sọan: Dương Thành Phết Trang 26
  • 27. Bài Giảng Môn Lập Trình Website ASP.Net  SelectedValue: Cho biết giá trị của mục được chọn. Trong trường hợp chọn nhiều mục, SelectedValue sẽ trả về giá trị mục chọn đầu tiên. Ví dụ: Tạo Website Dulich gồm 1 listbox, 2 label , 1 Button trong đó điều khiển Listbox là điều khiển danh sách lstKhu_dl: SelectionMode=Multiple ; Rows=4 Khi 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 <= lstDiadanh.Items.Count - 1; i ++) { if (lstDiadanh.Items[i].Selected) lbDiadanh.Text += "<li>" + lstDiadanh.Items[i].Value; } /* Hoặc foreach (ListItem item in lstDiadanh.Items ) { if (item.Selected) lbDiadanh.Text += "<li>" + item.Value ; } */ } Khi thi hành: Biên sọan: Dương Thành Phết Trang 27
  • 28. Bài Giảng Môn Lập Trình Website ASP.Net 7. Checkbox, RadioButton Các thuộc tính  Checked: Cho biết trạng thái của mục chọn - có được chọn hay không  TextAlign: Qui định vị trí hiển thị của điều khiển so với chuỗi văn bản.  AutoPostBack: Thuộc tính này qui định điều khiển có được phép tự động PostBack về Server khi các mục chọn của điều khiển bị thay đổi. Giá trị mặc định của thuộc tính này là False - không tự động Postback.  GroupName (RadioButton): Tên nhóm. Thuộc tính này được sử dụng để nhóm các điều khiển RadioButton lại thành 1 nhóm. Ví dụ: Nhóm các RadioButton Giới tính, Thu nhập, Nhóm Checkbox Ngoại ngữ Danh sách các điều khiển 8. CheckBoxList, RadioButtonList Hai điều khiển này được dùng để tạo ra một nhóm các CheckBox/Radio Button. Do đây là điều khiển danh sách nên nó cũng có thuộc tính Items chứa tập hợp các mục chọn như ListBox/DropDownList. Các thao tác trên tập hợp Items, xử lý mục chọn cũng tương tự như ListBox/DropDownList. Tạo mới: Kéo thả RadioButtonList (Hoặc CheckbocList) vào Form  Chọn Edit Items Biên sọan: Dương Thành Phết Trang 28
  • 29. Bài Giảng Môn Lập Trình Website ASP.Net b. Các thuộc tính  RepeatColumns: Qui định số cột hiển thị.  RepeatDirection: Qui định hình thức hiển thị o Vertical: Theo chiều dọc o Horizontal: Theo chiều ngang  AutoPostBack: Thuộc tính này qui định điều khiển có được phép tự động PostBack về Server khi các mục chọn của điều khiển bị thay đổi. Giá trị mặc định của thuộc tính này là False - không tự động Postback. c. Ví dụ Xử lý sự kiện: Private Sub rblThu_nhap_SelectedIndexChanged(…)… lblThu_nhap.Text = "Bạn chọn thu nhập: " + rblThu_nhap.SelectedItem.Text; End Sub Khi thi hành: Ví dụ: Bổ sung thêm vào Website Dulich 1 trang Thongtincanhan gồm: 1 Textbox, 2 RadioButton giới tính, 2 Checkbox ngọai ngữ, 3 radioButton thu nhập listbox, 2 label , 1 RadioButtonList Trình độ, 1 Button Đăng ký. Biên sọan: Dương Thành Phết Trang 29
  • 30. Bài Giảng Môn Lập Trình Website ASP.Net Xử 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ữ"; else gt = "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"; else thunhap = " trên 3 triệu "; trinhdo = rdblistTrinhdo.SelectedItem.Value; lbThongtin.Text = "THÔNG TIN VỀ BẠN <li> Tên: " + ten + "<li> Giới tính:" + gt + " <li> Ngoại ngữ :" + ngoaingu + "<li> Mức thu nhập:" + thunhap + "<li> Trình độ:" + trinhdo ; } Khi thi hành: Biên sọan: Dương Thành Phết Trang 30
  • 31. Bài Giảng Môn Lập Trình Website ASP.Net II. Điều khiển kiểm tra dữ liệu Trong phần này chúng ta sẽ tìm hiểu về các điều khiển được dùng để kiểm tra dữ liệu. 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 xem nhập lại mật khẩu có giống với mật khẩu đã nhập ở trên hay không. rfvNhap_lai.Display = Static Biên sọan: Dương Thành Phết Trang 31
  • 32. Bài Giảng Môn Lập Trình Website ASP.Net rfvNhap_lai.Display = Dynamic 1. Điều khiển Required Field Validator Điều khiển này được dùng để kiểm tra giá trị trong điều khiển phải được nhập. Sử dụng điều khiển này để kiểm tra ràng buộc dữ liệu khác rỗng (bắt buộc nhập). Thuộc tính  InitialValue: Giá trị khởi động. Giá trị bạn nhập vào phải khác với giá trị của thuộc tính này. Giá trị mặc định của thuộc tính này là chuỗi rỗng. 2. Điều khiển Compare Validator Điều khiển này được dùng để so sánh giá trị của một điều khiển với giá trị của một điều khiển khác hoặc một giá trị được xác định trước. Thông qua thuộc tính Operator, chúng ta có thể thực hiện các phép so sánh như: =, <>, >, >=, <, <= hoặc dùng để kiểm tra kiểu dữ liệu (DataTypeCheck). Sử dụng điều khiển này để kiểm tra ràng buộc miền giá trị, kiểu dữ liệu, liên thuộc tính. Lưu ý: Trong trường hợp không nhập dữ liệu, điều khiển sẽ không thực hiện kiểm tra vi phạm. Các thuộc tính  ControlToCompare: Tên điều khiển cần so sánh giá trị. Nếu bạn chọn giá trị của thuộc tính Operator = DataTypeCheck thì không cần phải xác định giá trị cho thuộc tính này.  Operator: Qui định phép so sánh, kiểm tra kiểu dữ liệu o Equal: = (Đây là giá trị mặc định) o GreaterThan: > Biên sọan: Dương Thành Phết Trang 32
  • 33. Bài Giảng Môn Lập Trình Website ASP.Net o GreaterThanEqual: >= o LessThan: < o LessThanEqual: <= o NotEqual: <> o DataTypeCheck: Kiểm tra kiểu dữ liệu  Type: Qui định kiểu dữ liệu để kiểm tra hoặc so sánh. o String o Integer o Double o Date o Currency  ValueToCompare: Giá trị cần so sánh. Trong trường hợp bạn xác định giá trị của cả 2 thuộc tính ControlToCompare và ValueToCompare thì giá trị của điều khiển được qui định bởi thuộc tính ControlToCompare được ưu tiên dùng để kiểm tra. 3. Điều khiển Range Validator Điều khiển này được dùng để kiểm tra giá trị trong điều khiển phải nằm trong đoạn [min- max]  Sử dụng điều khiển này để kiểm tra ràng buộc miền giá trị của dữ liệu. Lưu ý: Trong trường hợp không nhập dữ liệu, điều khiển sẽ không thực hiện kiểm tra vi phạm. Các thuộc tính  MinimumValue: Giá trị nhỏ nhất.  MaximumValue: Giá trị lớn nhất.  Type: Xác định kiểu để kiểm tra dữ liệu. Có thể thực hiện kiểm tra trên các kiểu dữ liệu sau: o String o Integer o Double o Date o Currency 4. Điều khiển Regular Expression Validator Điều khiển này được dùng để kiểm tra giá trị của điều khiển phải theo mẫu được qui định trước: địa chỉ email, số điện thoại, mã vùng, số chứng minh thư, … Lưu ý: Trong trường hợp không nhập dữ liệu, điều khiển sẽ không thực hiện kiểm tra vi phạm. Thuộc tính:  ValidationExpression: Qui định mẫu kiểm tra dữ liệu. Biên sọan: Dương Thành Phết Trang 33
  • 34. Bài Giảng Môn Lập Trình Website ASP.Net Bảng mô tả các ký hiệu thường sử dụng trong Validation Expression 5. Điều khiển Custom Validator Điều khiển này cho phép bạn tự viết hàm xử lý kiểm tra lỗi. Sự kiện  ServerValidate: Đặt các xử lý kiểm tra dữ liệu trong sự kiện này. Việc kiểm tra này được thực hiện ở Server. 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ính ErrorMessage của Validation Control sẽ được hiển thị. Nếu giá trị của thuộc tính ErrorMessage không được xác định, thông báo lỗi đó sẽ không được xuất hiện trong bảng lỗi. Các thuộc tính  HeaderText: Dòng tiêu đề của thông báo lỗi Biên sọan: Dương Thành Phết Trang 34
  • 35. Bài Giảng Môn Lập Trình Website ASP.Net  ShowMessageBox: Qui định bảng thông báo lỗi có được phép hiển thị như cửa sổ MessageBox hay không. Giá trị mặc định của thuộc tính này là False - không hiển thị.  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. Biên sọan: Dương Thành Phết Trang 35
  • 36. Bài Giảng Môn Lập Trình Website ASP.Net Thuộ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(…)… lblThong_bao.Text = "Đăng ký thành công"; End Sub Các thông báo lỗi xuất hiện trên màn hình nhập liệu khi dữ liệu nhập không hợp lệ. Biên sọan: Dương Thành Phết Trang 36
  • 37. Bài Giảng Môn Lập Trình Website ASP.Net Các thông báo lỗi xuất hiện qua hộp thoại khi dữ liệu nhập không hợp lệ: Nếu tất cả đều hợp lệ Biên sọan: Dương Thành Phết Trang 37
  • 38. Bài Giảng Môn Lập Trình Website ASP.Net III. Một số điều khiển khác 1. Điều khiển Literal Tương tự như điều khiển Label, điều khiển Literal cũng được sử dụng để hiển thị chuỗi văn bản trên trang Web. Nếu muốn hiển thị một chuỗi văn bản trên trang Web, chúng ta có thể đánh nội dung trực tiếp vào trang Web mà không cần phải sử dụng điều khiển. Chỉ sử dụng các điều khiển như Label, Literal để hiển thị khi cần thay đổi nội dung hiển thị ở phía server. Điểm khác biệt chính giữa Label và Literal là khi hiển thị nội dung lên trang web (lúc thi hành), điều khiển Literal không tạo thêm một tag Html nào cả, còn Label sẽ tạo ra một tag span (được sử dụng để lập trình ở phía client). Ví dụ: Khi thiết kế. Khi thi hành Lệnh xử lý: protected void Page_Load(object sender, EventArgs e) { Label1.Text="<b>Đây là chuỗi ký tự trong label</b>"; Literal1.Text = "<i> Đây là chuỗi ký tự trong Literial</i>"; } Chọn chức năng từ thực đơn View | Source trên Browser: <span id="Label1" style="display:inline-block;width:417px;"><b>Đây là chuỗi ký tự trong label</b></span><br /> <i> Đây là chuỗi ký tự trong Literial</i> 2. Điều khiển AdRotator Điều khiển AdRotator được dùng để tạo ra các banner quảng cáo cho trang web, nó tự động thay đổi các hình ảnh (đã được thiết lập trước) mỗi khi có yêu cầu, PostBack về server. a. Thuộc tính  AdvertisementFile: Tên tập tin dữ liệu (dưới dạng xml) cho điều khiển. Dưới đây là cú pháp của tập tin Advertisement (*.xml) <Advertisements> <Ad> <ImageUrl>Đường dẫn đến tập tin hình ảnh</ImageUrl> <NavigateUrl>Đường dẫn đến liên kết</NavigateUrl> <AlternateText>Chuỗi văn bản được hiển thị như Tooltip</AlternateText> <Keyword>Từ khóa dùng để lọc hình ảnh</Keyword> Biên sọan: Dương Thành Phết Trang 38
  • 39. Bài Giảng Môn Lập Trình Website ASP.Net <Impressions>Tần suất hiển thị của hình ảnh</Impressions> </Ad> </Advertisements> Lưu ý: Phải nhập đúng các giá trị trong tag như mẫu trên. Các giá trị trong tag có phân biệt chữ Hoa chữ thường. Trong đó  ImageUrl: Đường dẫn đến một tập tin hình ảnh  NavigateUrl: Đường dẫn đến trang web sẽ được liên kết đến khi người dùng nhấn vào hình ảnh đang hiển thị.  AlternateText: Giá trị này sẽ được hiển thị nếu như đường dẫn đến tập tin hình ảnh (qua thuộc tính NavigateUrl) không tồn tại. Đối với một số trình duyệt, tham số này được hiển thị như ToolTip của hình quảng cáo.  Keyword: Được dùng để phân loại các quảng cáo. Thông qua giá trị này, ta có thể lọc các quảng cáo theo một điều kiện nào đó.  Impressions: Tham số này quyết định tầng suất hiển thị của hình ảnh. Giá trị này càng lớn, khả năng hiển thị càng nhiều.  KeywordFilter: Được dùng để chọn lọc và hiển thị những hình quảng cáo có giá trị của tham số Keyword = giá trị của tham số này. Giá trị của tham số này mặc định không được thiết lập  Hiển thị tất cả những hình có trong tập tin XML. Trong trường hợp nếu không có hình nào có giá trị Keyword bằng giá trị của thuộc tính này, sẽ không có hình nào được hiển thị.  Target: Qui định cửa sổ hiển thị trang liên kết  _blank: Trang liên kết sẽ được mở ở một cửa sổ mới.  _self: Trang liên kết sẽ được mở ở chính cửa sổ chứa điều khiển.  _parent: Trang liên kết sẽ được mở ở cửa sổ cha. b. Sự kiện  AdCreated: Xảy ra khi điều khiển tạo ra các quảng cáo. Ví dụ: Tạo Website Quangcao (Tạo Quảng cáo sử dụng điều khiển AdRotator) Bước 1. Thiết kế giao diện Bước 2. Tạo tập tin dữ liệu: Quangcao.xml o Sử dụng chức năng Add New Item… từ thực đơn ngữ cảnh o Chọn XML File trong hộp thoại Add New Item Biên sọan: Dương Thành Phết Trang 39
  • 40. Bài Giảng Môn Lập Trình Website ASP.Net o Nhập vào cú pháp qui định cho tập tin Quangcao.xml (theo cú pháp của tập tin Advertisement) <?xml version="1.0" encoding="utf-8" ?> <Advertisements> <Ad> <ImageUrl>PicturesBaihatviet.gif</ImageUrl> <NavigateUrl>http://www.Baihatviet.net</NavigateUrl> <AlternateText>Web Nhạc bài hát việt</AlternateText> <Keyword>Music</Keyword> <Impressions>10</Impressions> </Ad> <Advertisements> o Chuyển màn hình qua trang Data, nhập liệu trực tiếp trên màn hình này  Click phải màn hình đang code chọn View Data Grid Nhập thêm các liên kết quảng cáo sau: Biên sọan: Dương Thành Phết Trang 40
  • 41. Bài Giảng Môn Lập Trình Website ASP.Net Bước 3. Thiết lập thuộc tính cho điều khiển adQuangcao o AdvertisementFile: Quangcao.xml o Target: _blank (Khi nhấn vào sẽ hiển thị liên kết ở cửa sổ mới.) o 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ụng 3. Điều khiển Calendar Một điều chắc chắn rằng điều khiển Calendar đã quá quen thuộc với các bạn lập trình ứng dụng trên windows, nó có giao diện trực quan, vì vậy, người dùng có thể chọn ngày dễ dàng. a. Thuộc tính  DayHeaderStyle: Qui định hình thức hiển thị tiêu đề của các ngày trong tuần  DayStyle: Qui định hình thức hiển thị của các ngày trong điều khiển.  NextPrevStyle: Qui định hình thức hiển thị của tháng trước/sau của tháng đang được chọn.  SeleltedDayStyle: Qui định hình thức hiển thị của ngày đang được chọn.  SeleltedDate: Giá trị ngày được chọn trên điều khiển  TitleStyle: Qui định hình thức hiển thị dòng tiêu đề của tháng được chọn  TodayDayStyle: Qui định hình thức hiển thị của ngày hiện hành (trên server).  WeekendDayStyle: Qui định hình thức hiển thị của các ngày cuối tuần (thứ 7, chủ nhật)  OtherMonthDayStyle: Qui định hình thức hiển thị của các ngày không nằm trong tháng hiện hành. b. Sự kiện  SelectionChanged: 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ành  VisibleMonthChanged: Xự kiện này xảy ra khi bạn chọn tháng khác với tháng hiện hành Ví dụ: Tạo trang Calendard Bước 1: Tạo Calendard vào trang Biên sọan: Dương Thành Phết Trang 41
  • 42. Bài Giảng Môn Lập Trình Website ASP.Net Bước 2: Chọn Auto Format (Chọn mẫu định dạng)  Khi thiết kế Xử lý sự kiện: protected void Page_Load(object sender, EventArgs e) { lbNgay.Text = "Hôm nay ngày " + DateTime.Today.ToString ("dd/MM/yyyy"); } protected void Calendar1_SelectionChanged1(object sender, EventArgs e) { lbThongbao.Text ="Bạn đang chọn " + Calendar1.SelectedDate.ToString("dd/MM/yyyy"); } Biên sọan: Dương Thành Phết Trang 42
  • 43. Bài Giảng Môn Lập Trình Website ASP.Net Khi thi hành 4. Điều khiển File Upload. Điều khiển FileUpload cho phép người sử dụng Upload file từ chính ứng dụng Web của mình. File sau khi Upload có thể lưu trữ ở 1 nơi nào đó có thể là trên ổ cứng hay trong Database. Điều khiển FileUpload hỗ trợ các thuộc tính sau: Thuộc tính Ý nghĩa Enable Cho phép bạn vô hiệu hoá điều khiển FileUpload. FileBytes Cho phép lấy nội dung file đã được upload như một mảng Byte. FileContent Cho phép lấy nội dung của file đã được upload theo dòng dữ liệu FileName Lấy tên file được Upload HasFile Trả về giá trị đúng khi File được Upload Điều khiển FileUpload hỗ trợ các phương thức o Focus: Enables you to shift the form focus to the FileUpload control. o 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ề Upload file. Lớp HttpPostedFile gồm các thuộc tính sau: o ContentLength: Lấy về kích thước của File Upload tính theo byte o ContentType: Lấy kiểu MIME của File Upload o FileName: Cho phép lấy tên của file được upload. o InputStream: Enables you to retrieve the uploaded file as a stream. Lớp HttpPostedFile chỉ hỗ trợ phương thức o SaveAs: 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
  • 44. Bài Giảng Môn Lập Trình Website ASP.Net Ví 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ừa Upload sẽ được lưu trong thư mục Upload. Màn hình ở chế độ thiết kế Xử lý sự kiện: protected void Button1_Click(object sender, EventArgs e) { string sTenfile ; //Tách lấy tên tập tin sTenfile = FileUpload1.FileName; //Thực hiện chép tập tin lên thư mục Upload FileUpload1.SaveAs(MapPath("~/Upload/" + sTenfile)); lbThongbao.Text = "Đã upload thành công" ; } Khi thi hành: Nếu thành công 5. Điều khiển Panel và PlaceHolder Hai điều khiển Panel và PlaceHolder được sử dùng để chứa các điều khiển khác. Thuộc tính thường dùng của 2 điều khiển này là Visible. Nếu giá trị của thuộc tính này = True, các điều khiển chứa bên trong sẽ được hiển thị, ngược lại (Visible = False), không có điều khiển nào chứa bên trong được hiển thị. Tuy nhiên, điều khiển Panel cho phép chúng ta kéo những điều khiển vào bên trong nó lúc thiết kế, còn điều khiển PlaceHolder thì không. 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 ra trong panel, có thể là các giá trị:NotSet, LeftToRight, and RightToLeft.  GroupingText: Cho phép bạn trình bày Panel như 1 Fieldset với một chú giải riêng biệt.  HorizontalAlign: Cho phép bạn chỉ ra hướng ngang thể hiện nội dung của panel và 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
  • 45. Bài Giảng Môn Lập Trình Website ASP.Net  ScrollBars: Cho phép bạn hiển thị scrollbars khi bạn cố định chiều cao hoặc chiều rộ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: protected void Page_Load(object sender, EventArgs e) { for (int i = 1; i < 100; i++) { buletnghenghiep.Items.Add("Nghề "+i.ToString()); } } protected void chkhtsothich_CheckedChanged(. . . .) { if (chksothich.Checked == true) panelsothich.Visible = true; else panelsothich.Visible = false; } protected void chkhtnghenghiep_CheckedChanged(. . . ) { if (chknghenghiep.Checked == true) panelnghenghiep.Visible = true; else panelnghenghiep.Visible = false; } Thi hành: Biên sọan: Dương Thành Phết Trang 45
  • 46. Bài Giảng Môn Lập Trình Website ASP.Net 6. Đ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 trang web có độ dài lớn thành các phần để hiển thị. Điều khiển MultiView chứa đựng 1 hoặc nhiều điều khiển View, 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ố Index  Views: Cho phép bạn lấy về tập hợp các điều khiển View chứa đựng trong điều khiể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ọn Ví dụ: Tạo 1 website MultiView: Sử dụng MultiView kết hợp với điều khiển Menu để tạo một TabPage Thiế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) o Tạo Control Menu vào Form Biên sọan: Dương Thành Phết Trang 46
  • 47. Bài Giảng Môn Lập Trình Website ASP.Net o Chọn Edit Menu Item Lần lượt khái báo các nhãn (Text) là: Tab 1, Tab 2, Tab 3 và các giá trị (Value) tương ứng là: 0 , 1, 2 Thuộc tính Orientation: Horizaltal (Menu hướng ngang) o Bổ sung nội dung vào các view tương ứng Xử lý sự kiện <script runat="server"> void Menu1_MenuItemClick(object sender, MenuEventArgs e){ int index = int.Parse(e.Item.Value); MultiView1.ActiveViewIndex = index; } void Page_Load(object sender, EventArgs e){ if (!IsPostBack){ Biên sọan: Dương Thành Phết Trang 47
  • 48. Bài Giảng Môn Lập Trình Website ASP.Net MultiView1.ActiveViewIndex = 0; } } </script> Thi hành: Biên sọan: Dương Thành Phết Trang 48
  • 49. Bài Giảng Môn Lập Trình Website ASP.Net III. Đố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 khi web server gởi kết quả về cho Client. Mặc định, các trang web khi được tạo sẽ cho phép sử dụng đối tượng ViewState thông qua thuộc tính EnableViewState (của trang web) = True. Gán giá trị cho ViewState: ViewState("Tên trạng thái") = <giá trị>; Nhận giá trị từ đối tượng ViewState: <biến> = ViewState("Tên trạng thái"); Ví dụ: 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 hidden và các giá trị này đã được mã hóa. Đối tượng ViewState giúp chúng ta giảm bớt công sức trong việc lưu trữ và truy xuất các thông tin mà không phải sử dụng nhiều điều khiển hidden. Chọn chức năng View | Source từ browser Biên sọan: Dương Thành Phết Trang 49
  • 50. Bài Giảng Môn Lập Trình Website ASP.Net IV. Thiết kế Website với MasterPage MasterPage là cách để thiết kế layout chung cho website. Ví dụ website của bạn có layout gồm 5 phần banner, footer, left, right Và content(phần chứa nội dung hiển thị cho các tin). Ta thấ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 web trong website của bạn sẽ áp dụng layout này thông qua contentpage Tạo MasterPage Tạo MasterPage giống với tạo các trang aspx bình thường nhưng trên hộp Add New Item 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: Biên sọan: Dương Thành Phết Trang 50
  • 51. 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 ContetPalceHolder Sử dụng trang Masterpage để thiết kế các trang Tạo mới trang web Default.aspx và trang Tintuc.aspx Biên sọan: Dương Thành Phết Trang 51
  • 52. Bài Giảng Môn Lập Trình Website ASP.Net Điều chỉnh MasterPage Khi có bất kỳ sự điều chỉnh nào trên trang Masterpage thì các trang được tạo từ trang Masterpage 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ơ 2 trang tương ứng đã tạo (Default.aspx và Tintuc.aspx) Biên sọan: Dương Thành Phết Trang 52
  • 53. Bài Giảng Môn Lập Trình Website ASP.Net Kết quả khi thi hành Biên sọan: Dương Thành Phết Trang 53
  • 54. Bài Giảng Môn Lập Trình Website ASP.Net Chương 3 KẾT NỐI CƠ SỞ DỮ LIỆU TRONG ASP.NET  Sử dụng các thành phần kết nối CSDL như : SQLDataSource, Access Data Source, XML Data Source, . . .  Cách truyền tham số vào các điều khiển I. SQL DATA SOURCE 1. Giới thiệu Điều khiển SqlDataSource dung để kết nối CSDL nếu dữ liệu của ứng dụng được lưu trữ 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 CSDL a. Tạo kết nối Tạo trang aspx và kéo điều khiển SQLDataSource từ ngăn data trên thanh Tollbox Chọn tiếp vào Conigure Data Source Nế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 Connection Biên sọan: Dương Thành Phết Trang 54
  • 55. Bài Giảng Môn Lập Trình Website ASP.Net Tạo kết nối CSDL mới Biên sọan: Dương Thành Phết Trang 55
  • 56. Bài Giảng Môn Lập Trình Website ASP.Net Khai báo các thông số cho SQLServer và chọn CSDL cần kết nối Kiểm tra kết quả kết nối  Chọn Next  Chọn Next  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. Chỉ định các cột dữ liệu Biên sọan: Dương Thành Phết Trang 56
  • 57. Bài Giảng Môn Lập Trình Website ASP.Net Khai báo điều kiện mệnh đề Where (Nếu có) Khai báo sắp xếp (Nếu cần)  Chọn Test Query để kiểm tra kết quả nguồn dữ liệu.  Chọn Finish để hòan thành Biên sọan: Dương Thành Phết Trang 57
  • 58. Bài Giảng Môn Lập Trình Website ASP.Net Phần mã của giao tiếp này có được như sau: <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:QLBansachConnectionString %>" SelectCommand="SELECT [MaTG], [TenTG], [DiachiTG], [DienthoaiTG] FROM [TACGIA] ORDER BY [TenTG]"> </asp:SqlDataSource> 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 Toolbox Chọn Choose DataSource là: SqldataSource1 đã tạo Ghi 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 Paging  Để cho phép sắp xếp khi click vào tiếu đề cột đánh dấu chọn: Enable Sorting Biên sọan: Dương Thành Phết Trang 58
  • 59. Bài Giảng Môn Lập Trình Website ASP.Net Thi hành tarng DSTacgia.aspx:  Click tiêu đề lưới để kiểm tra tính sắp xếp  Click số thứ tự trang (Cuối lưới) để kiểm tra tính phân trang 3. Đ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ực tiế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: http://localhost:49222/KetnoiCSDL/SachNXB.aspx?MaNXB=3 Thực hiện: o Tạo trang NhaXB.aspx với nguồn dữ liệu là tòan bộ danh mục nhà xúât bản được trình bày trên lưới GridView như sau Biên sọan: Dương Thành Phết Trang 59
  • 60. Bài Giảng Môn Lập Trình Website ASP.Net o Điều chỉnh bổ sung và lưới 1 cột liên kết Chọn Edit Column từ GiridView Task Thực hiện bổ sung 1 cột dạng HyperLinkField Vớ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} Trong đó giá trị tham số ghi dưới dạng chỉ số các tham số được khai báo trong 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
  • 61. Bài Giảng Môn Lập Trình Website ASP.Net Thi 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ệu Biên sọan: Dương Thành Phết Trang 61
  • 62. Bài Giảng Môn Lập Trình Website ASP.Net Khai báo điều kiện (Where) với tham số là QueryString. Đặt tên QueryStringField là: MaNXB  Add Thi hành : Trang NhaXB.aspx Click 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ày b. Đ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: o 1 Control Textbox chỉ định thuộc tính ID: MaNXB o 1 Button chỉ định thuộc tính PostbackURL: ~/Lietkesach.aspx (Chính trang thiết kế) o Tạo SqlDataSource với nguồn dữ liệu như sau: Biên sọan: Dương Thành Phết Trang 62
  • 63. Bài Giảng Môn Lập Trình Website ASP.Net o Điều kiện cho nguồn dữ liệu Vớ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 Xem c. Đ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
  • 64. Bài Giảng Môn Lập Trình Website ASP.Net Ta có thể khai báo tham số trong điều khiển SqlDataSource mà giá trị được lấy từ điều khiển trình chủ Vì dụ thiết kế trang Chudesach.aspx thực hiện liệt kê danh mục sách có chủ đề được chọ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 Chude o Tạo SQL DataSource (SqlDataSource1) cho DropDownList Với nguồn dữ liệu cho DropDownList là Table Chude: o 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ố)  Tạo GridView (GridView1) Với nguồn dữ liệu từ Table Sach Biên sọan: Dương Thành Phết Trang 64
  • 65. Bài Giảng Môn Lập Trình Website ASP.Net Và tham số điều kiện (Where) o 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ị. Biên sọan: Dương Thành Phết Trang 65
  • 66. Bài Giảng Môn Lập Trình Website ASP.Net d. Điều khiển SQL DataSource và thủ tục nội tại Tươ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ều khiển kết nối CSDL SqlDatasource để truy cập CSDL SQL Server bằng thủ tục nội tại (Stored Procedure) 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 QLBansach Create Proc Sachtheogia @Giatu int, @Giaden Int as Select Masach, Tensach, Dongia, Mota, Tenchude, TenNXB,Ngaycapnhat From sach s, Chude c, nhaxuatban n Where c.MaCD=s.MaCD and n.MaNXB=s.MaNXB and Dongia Between @Giatu and @Giaden Lưu ý : Trong thủ tục có khai báo 2 tham số tên @Giatu và @Giaden Khi cấu hình Data Source cho điều khiển SqlDataSource Biên sọan: Dương Thành Phết Trang 66
  • 67. Bài Giảng Môn Lập Trình Website ASP.Net Ta chọn : Specify a Custom SQL satament or stored procedure Tiếp tục chọn Stored Procedure cần kết nối. Biên sọan: Dương Thành Phết Trang 67
  • 68. Bài Giảng Môn Lập Trình Website ASP.Net Xá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: Hãy Click chọn Giá từ DropDownList1 và Giá đến DropDownList2thì các sách thõa điều kiện giá sẽ hiện thị tương ứng vào GridView Biên sọan: Dương Thành Phết Trang 68
  • 69. Bài Giảng Môn Lập Trình Website ASP.Net II. KẾT NỐI CƠ SỞ DỮ LIỆU VỚI ACCESS, XML 1. Điều khiển Access Data Source Tươ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ối vớ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 AccessDataSource từ 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 trang  Chọn Configure Data Source . . .: Để thực hiện kết nối  Chọ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) Biên sọan: Dương Thành Phết Trang 69
  • 70. Bài Giảng Môn Lập Trình Website ASP.Net  Chọn Ok và chọn Next để tiếp tục  Xá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 Next  Chọn Test Query để xem kết quả, chọn Finish để hòan tất  Tạ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
  • 71. Bài Giảng Môn Lập Trình Website ASP.Net  Thi 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, . . . ta khai báo tương tự như sử dụng điều khiển SQLDataSource . 2. Điều khiển XML DataSource Ngò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ển XMDataSource ta cần có tập tin XML. Sử dụng điều khiển XMLDataSource từ ngăn Data trên thanh Toolbox. Biên sọan: Dương Thành Phết Trang 71
  • 72. Bài Giảng Môn Lập Trình Website ASP.Net Ví dụ thiết kế trang DanhsachSV.aspx hiện thị từ tập tin XML (DanhsachSV.XML)  Tạo tập tin DanhsachSV.XML <?xml version="1.0" encoding="utf-8"?> <DSSinhvien> <Sinhvien MaSV="SV01" HotenSV="Trần Văn Nam" Diachi="123 Trần Hưng Đạo, Q5" Email="nam@gmail.com" /> <Sinhvien MaSV="SV02" HotenSV="Nguyễn Thị Lý" Diachi="45 Hai Bà Trưng, Q1" Email="lythi@yahoo.com" /> <Sinhvien MaSV="SV03" HotenSV="Nguyễn Thị Bình" Diachi="31 Lý Thường Kiệt,TB" Email="kiet@gmail.com"/> </DSSinhvien>  Triệ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.aspx  Chọn Configure Data Source . . .: Để thực hiện kết nối Biên sọan: Dương Thành Phết Trang 72
  • 73. Bài Giảng Môn Lập Trình Website ASP.Net  Chọn Nút Browse để tìm và chọn tập tin DanhsachSV.  Chọn Ok để hòan tất  Tạ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ả Biên sọan: Dương Thành Phết Trang 73
  • 74. Bài Giảng Môn Lập Trình Website ASP.Net III. KẾT NỐI VÀ CẬP NHẬT CSDL SQLDataSource và Access DataSource ngoài chức năng thong thường cho phép tạo kết nố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 trong QLBansach. Trang web được thiết kế với các Control tương ứng dư liệu cần nhập mới vào Table Sach  Tạo Control SqlDataSource vào trang  Tạo kết nối với CSDL QLBansach cho SqlDataSource o Chọn “Specify columns from a table or view” Biên sọan: Dương Thành Phết Trang 74
  • 75. Bài Giảng Môn Lập Trình Website ASP.Net o Name: Sach o Columns : chọn tất cả các cột cần nhập mới dữ liệu tương ứng o Chọn Advanced … Chọn “Generate INSERT, UPDATE, and DELETE statements” (Tự động tạo các câu truy vấn INSERT, UPDATE, DELETE) o Click Next  Finish o Phải chuột SqlDataSource1, chọn Property, chọn thuộc tính o “InsertQuery” : Câu lệnh nhập liệu o DeleteQuery: Câu lệnh xóa dữ liệu o UpdateQuery: Câu lệnh cập nhật sự điều chỉnh dữ liệu. Biên sọan: Dương Thành Phết Trang 75
  • 76. Bài Giảng Môn Lập Trình Website ASP.Net Liên kết 1 cột trong bảng với 1 control trong màn hình (ví dụ cột Tensach liên kết với control txtTensach) o Parameters : MaBanTin (tên field cần nhập liệu) o Parameter source : Control o ControlID : txtMaBanTin (Tên Control chứa DL cần them) Tương tự cho các cột khác Trong trường hợp cột Hinhminhoa thì bấm vào “Show advanced properties” o PropertyName chọn FileName Biên sọan: Dương Thành Phết Trang 76
  • 77. Bài Giảng Môn Lập Trình Website ASP.Net o Viết hàm xử lý sự kiện click cho nút Lưu protected void btnLuu_Click(object sender, EventArgs e) { SqlDataSource1.Insert(); } o Chạy và kiểm tra chương trình. Biên sọan: Dương Thành Phết Trang 77
  • 78. Bài Giảng Môn Lập Trình Website ASP.Net Chương 4 CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU  Sử dụng các điều khiển GridView, Data List và Repeater để hiển thị dữ liệu. I. Điều khiển GridView GridView là một điều khiển khá linh hoạt và hiệu quả trong việc hiển thị, định dạng và thao tác với dữ liệu. Bên cạnh đó, chúng ta có thể thực hiện sắp xếp dữ liệu, thực hiện phân trang với sự hỗ trợ khá tốt của VS .Net trong quá trình thiết kế. 1. Tạo GridView vào trang Kéo Control GridView vào trang Kết nối nguồn dữ liệu Chèn them cột mới Điều chỉnh các cột Tạo các cột tùy biến 2. Định dạng tự động Thự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ằng cách Chọn Auto Format từ khung DataGrid Task 3. Kết nối nguồn dữ liệu Thực hiện kết nối nguồn dữ liệu với cơ sở dữ liệu Access, SQLServer, . .  Trong cửa sổ DataGrid Task tại mục Choose Data Source chọn : New Data Source Biên sọan: Dương Thành Phết Trang 78
  • 79. Bài Giảng Môn Lập Trình Website ASP.Net o Với CSDL Access Với CSDL Access Tìm chọn tập tin CSDL Access 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. Biên sọan: Dương Thành Phết Trang 79
  • 80. Bài Giảng Môn Lập Trình Website ASP.Net Khai báo tham số điều kiện Chỉ định sắp xếp Chọn Test Query để kiểm tra kết quả nguồn dữ liệu.  Chọn Finish để hòan thành o Với CSDL SQLServer Biên sọan: Dương Thành Phết Trang 80
  • 81. Bài Giảng Môn Lập Trình Website ASP.Net Với CSDL SQLServer 2000/2005 Tạo kết nối CSDL mới Khai báo các thông số và chọn CSDL cần kết nối Biên sọan: Dương Thành Phết Trang 81
  • 82. Bài Giảng Môn Lập Trình Website ASP.Net Kiểm tra kết quả kết nối  Chọn Ok  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ện Chỉ định sắp xếp Biên sọan: Dương Thành Phết Trang 82
  • 83. 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ành Thi hành xem kết quả: 4. Thêm cột  Trong cửa sổ DataGrid Task chọn : Add New Column  Chọn Loại field cần tạo : BoundField  Khai báo tiêu đề côt : Header Text  Chỉ định tên field dữ liệu: DataField  Ok hòan thành Biên sọan: Dương Thành Phết Trang 83
  • 84. Bài Giảng Môn Lập Trình Website ASP.Net 5. Hiệu chỉnh, Tạo mới các cột  Trong cửa sổ DataGrid Task chọn : Edit Column  AvailableFields: Chọn lọai Field liên kết dữ liệu o BoundField: Cột có liên kết với nguồn dữ liệu dạng Textbox. o Checkbox Field: Cột có liên kết với nguồn dữ liệu dạng Checkbox. o Hyperlink Field: Cột có liên kết dữ liệu dạng liên kết. o Button Field: Cột dạng nút lệnh o CommandField: Cột dạng nút lệnh đã được thiết kế sẵn. Điều khiển GridView cung cấp cho chúng ta 3 loại cột dạng này:  Select: Nút lệnh chọn dòng dữ liệu  Edit, Cancel, Update: Các nút lệnh hỗ trợ chức năng cập nhật dữ liệu trực tiếp trên lưới.  Delete: Nút lệnh xóa dòng dữ liệu Chúng ta sẽ có dịp tìm hiểu kỹ hơn về các nút lệnh này trong phần Cập nhật dữ liệu trực tiếp trên lưới. Biên sọan: Dương Thành Phết Trang 84
  • 85. Bài Giảng Môn Lập Trình Website ASP.Net o TemplateField: 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ạn muốn hiển thị dạng Nam/Nữ. Chúng ta sẽ tìm hiểu sâu hơn về Template Column ở phần sau.  BoundColumn properties: Qui định thông tin chi tiết cho các cột o HeaderText, Footer Text: Thông tin tiêu đề trên/dưới của cột o Header Image: Hình hiển thị trên tiêu đề cột (thay thế thông tin tiêu đề cột - Header Text). o Sort Expression: Biểu thức sắp xếp của cột. o Visible: Qui định cột có được hiển thị hay không. o 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ị. o Data formatting expression: Biểu thức định dạng dữ liệu. Mẫu định dạng: {0:<chuỗi định dạng>}. 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 Template Column. 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 GridView o 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 đề) o 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 / FooterStyle  Định dạng dòng dữ liệu lẽ/chẵn: RowStyleAlternatingRowStyle Biên sọan: Dương Thành Phết Trang 85
  • 86. Bài Giảng Môn Lập Trình Website ASP.Net  Sắp xếp: AllowSorting Allow sorting: Có cho phép sắp xếp dữ liệu hay không. (mặc định là không cho phép sắp xếp)  Phân trang: AlowPaging o Đị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 thanh tiêu đề, ở phía dưới hay cả hai.  Mode: Qui định hình thức hiển thị của bộ nút di chuyển. Hiển thị dạng số trang hay là các chuỗi ký tự đại diện (Next page/Previous page button text). Trong trường hợp hiển thị dạng số, Numeric buttons qui định số nút lệnh được hiển thị tối đa. Google hiển thị kết quả được phân trang theo dạng số Biên sọan: Dương Thành Phết Trang 86
  • 87. Bài Giảng Môn Lập Trình Website ASP.Net II. Điều khiển DataList 1. Sử dụng DataList để hiển thị dữ liệu Như điều khiển Gridview, điều khiển DataList được sử dụng để hiển thị dữ liệu. Tuy nhiên, đối với DataList, chúng ta phải tự thiết kế hình thức hiển thị dữ liệu (giống như Template Column của GridView). Biên sọan: Dương Thành Phết Trang 87
  • 88. Bài Giảng Môn Lập Trình Website ASP.Net Sử dụng DataList hiển thị thông tin sách Một số thuộc tính cần chú ý của DataList  RepeatDirection: Qui định hướng hiển thị dữ liệu o Horizontal: Hiển thị dữ liệu theo chiều ngang o Vertical (mặc định): Hiển thị dữ liệu theo chiều đứng  RepeatColumns: Qui định số cột hiển thị của DataList Thiết kế hình thức hiển thị cho DataList cũng tương tự như thiết kế cho cột Template Column của GridView Chọn Edit Template từ thực đơn ngữ cảnh để thực hiện thiết kế hình thức hiển thị cho DataList. Chọn chức năng thiết kế cho DataList Ghi chú: Trong quá trình thực hành, để công việc thiết kế được dễ dàng, các bạn thực hiện thiết kế ở bên 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ị trong DataList. Biên sọan: Dương Thành Phết Trang 88
  • 89. Bài Giảng Môn Lập Trình Website ASP.Net Ví dụ: Hiển thị thông tin sách với DataList Thiết kế thông tin sách với DataList Kết quả trên trang Web III. Điều khiển Repeater Như 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ác tag HTML. Điều khiển Repeater có các tag sau:  <HeaderTemplate></HeaderTemplate> (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)  <ItemTemplate></ItemTemplate> (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.  <AlternatingItemTemplate></AlternatingItemTemplate> (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 tag <ItemTemplate> </ItemTemplate>  <SeparatorTemplate></SeparatorTemplate> (tùy chọn) Biên sọan: Dương Thành Phết Trang 89
  • 90. Bài Giảng Môn Lập Trình Website ASP.Net Qui định hình thức hiển thị giữa các dòng dữ liệu  <FooterTemplate></FooterTemplate> (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 Web Bước 2. Kết nối và tạo nguồn dữ liệu cho điều khiển từ Table Chude với các cột: MaCD, Tenchude. Bước 3:. Chuyển qua xem trang Web dưới dạng HTML <asp:Repeater ID="rptChudesach" runat="server" DataSourceID="SqlDataSource1"> </asp:Repeater> Bước 3. Bổ sung các tag sau <asp:Repeater ID="rptChudesach" runat="server" DataSourceID="SqlDataSource1"> <HeaderTemplate> <table border="1" cellspacing="0"> <tr> <td width="60" align="center"> <strong>Mã CĐ</strong> </td> <td width="150" align="center"> <strong>Tên chủ đề </strong> </td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td> <%# Eval("MaCd") %> </td> <td> <%# Eval("Tenchude")%> </td> </tr> </ItemTemplate> <AlternatingItemTemplate> <tr bgcolor="GhostWhite"> <td> <%# Eval("MaCD")%> </td> <td> <%# Eval("TenChude")%> </td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> Bướ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
  • 91. Bài Giảng Môn Lập Trình Website ASP.Net V. Sử dụng DetailView và FormView Hai đ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ểm Cả 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 qua thiết lập dữ liệu. 1. DetailView a. Hiển thị dữ liệu với DetailView DetailView được đưa ra hiển thị như một bảng(<Table>) trong HTML để hiển thị dữ liệu một bản ghi. Ví dụ: Trang XemthongtinKH.aspx b. Sử dụng Fields với điều khiển DetailView DetailView hỗ trợ tất cả các Field như GridView o BoundField: cho phép bạn hiển thị giá trị của dữ liệu như Text o CheckBoxField: hiển thị dữ liệu dưới dạng một CheckBox o CommandField: 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, ) o HyperLinkField: hiển thị môt liên kết o ImageField: hiển thị ảnh o TemplateField: cho phép hiển thị các đìều khiển tuỳ biến. c. Xử lý phân trang với điều khiển DetailView Biên sọan: Dương Thành Phết Trang 91
  • 92. 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ới các thuộc tính định dạng thuộc nhóm thuộc tính: Pagersettings d. 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ột CheckBoxField, điền vào dữ liệu với thuộc tính DataField 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 góc trên bên phải. Kết xuất của chương trình 2. DetailView a. Hiển thị dữ liệu với FormView FormView đượ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ệu một bản ghi. Ví dụ: Trang XemthongtinNXB.aspx b. Trình bày dữ liệu sử dụng Edit Template FormView hỗ trợ trình bày dữ liệu dạng tùy biến cho tất cả các Field DataList o Tạo FormView vào trang và lien kết dữ liệu o Tại cửa sổ thiết kế chọn Edit Tempalte từ cửa sổ FormView Task Biên sọan: Dương Thành Phết Trang 92
  • 93. Bài Giảng Môn Lập Trình Website ASP.Net o Thiết kế trình bày với các Control điều khiển tương tự như khi thiết kế DataList với các điều khiển tùy biến c. Xử lý phân trang với điều khiển DetailView Để tạo phân trang chỉ định thuộc tính AllowPaging=”true” cho điều khiển DetailView. Với các thuộc tính định dạng thuộc nhóm thuộc tính: Pagersettings d. 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ào dữ 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 trang Kết xuất của chương trình Biên sọan: Dương Thành Phết Trang 93
  • 94. Bài Giảng Môn Lập Trình Website ASP.Net Chương 5 XỬ LÝ DỮ LIỆU VỚI ADO.NET I. Tìm hiểu về ADO.NET Hầ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 ứng dụ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ùng  Bảo mật dữ liệu  Trao đổi dữ liệu giữa các hệ thống khác nhau Nhữ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àm việ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ên Database 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ới nhiều ứng dụng khác. 1. Kiến trúc ADO .Net Kiến trúc ADO.NET có thể chia làm 2 phần chính: - Managed Provider Component: bao gồm các đối tượng như DataAdapter, DataReader,… giữ nhiệm vụ làm việc trực tiếp với dữ liệu như database, file,… - Content Component: bao gồm các đối tượng như DataSet, DataTable,… đại diện cho dữ liệu thực sự cần làm việc. Biên sọan: Dương Thành Phết Trang 94
  • 95. Bài Giảng Môn Lập Trình Website ASP.Net o DataReader là đối tượng mới, giúp truy cập dữ liệu nhanh chóng nhưng forward-only và read-only giống như ADO RecordSet sử dụng Server cursor, OpenFowardOnly và LockReadOnly. o DataSet cũng là một đối tượng mới, không chỉ là dữ liệu, DataSet có thể coi là một bản sao gọn nhẹ của CSDL trong bộ nhớ với nhiều bảng và các mối quan hệ. o DataAdapter là đối tượng kết nối giữa DataSet và CSDL, nó bao gồm 2 đối tượng Connection và Command để cung cấp dữ liệu cho DataSet cũng như cập nhật dữ liệu từ DataSet xuống CSDL. 2. Minh họa tạo kết nối cơ sở dữ liệu using System; using System.Data; using System.Data.SqlClient; public partial class vd1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); //Mở kết nối cnn.Open(); //Command điều khiển truy vấn sql SqlCommand cmd = cnn.CreateCommand(); cmd.CommandText = "select HotenKH from Khachhang where MaKH=5"; //lấy về chuỗi giá trị trong cơ sở dữ liệu string result = (string)cmd.ExecuteScalar(); //đóng kết nối cnn.Close(); //in giá trị ra màn hình Response.Write(result); } } Thi hành Cơ bản các bước thực hiện với database • Bước 1: Tạo kết nối • Bước 2: Mở kết nối dữ liệu • Bước 3: Tạo lệnh điều khiển truy vấn SQL • Bước 4: Thực thi lệnh • Bước 5: Đóng kết nối • Bước 6: in kết quả Biên sọan: Dương Thành Phết Trang 95
  • 96. Bài Giảng Môn Lập Trình Website ASP.Net II. Các đối tượng trong ADO.Net 1. Đối tượng Connection Vai 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 : o System.Data.Oledb : Sử dụng với Access o System.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: o System.Data.Oledb.OledbConnection o System.Data.SqlClient.SqlConnection Ngòai ra Ado.net còn hỗ trợ các Data Provider khác như o System.data.OcracleClient : Dành cho Ocracle o MicroSoft.data.Odbc : Dành cho dạng kết nối thong qua Odbc Connectionủa Hệ điều hành o Microsoft.Data.Sqlxml: Dành cho XML trên Sqlserver Connection String Trước khi thực hiện kết nối Connectionần khai báo các thong tin cho Connection thông qua thuộc tính Connection String. Cách khai báo thay đổi tùy thuộc vào Data Provider. Gồm có các thành phần sau: o Nếu kết nối với CSDL Access Provider: Khai báo Data Provider Connectionủa Hệ QT CSDL Access Data Source: Nguồn dữ liệu (Tên CSDL.mdb) User ID: Tên người dùng Password : Mật khẩu Ví dụ: Tạo kết nối với CSDL Access using System; using System.Data; using System.Data.OleDb; public partial class VD2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection String StrCnn="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("~/App_Data/QLBansach.mdb"); OleDbConnection cnn = new OleDbConnection (StrCnn); //Mở kết nối cnn.Open(); //Command điều khiển truy vấn sql OleDbCommand cmd = cnn.CreateCommand(); cmd.CommandText = "select HotenKH from Khachhang where MaKH=2"; //lấy về chuỗi giá trị trong cơ sở dữ liệu string result = (string)cmd.ExecuteScalar(); //đóng kết nối cnn.Close(); //in giá trị ra màn hình Response.Write(result); } } Biên sọan: Dương Thành Phết Trang 96
  • 97. Bài Giảng Môn Lập Trình Website ASP.Net o Nếu kết nối với CSDL SQLServer Provider: Khai báo Data Provider Connectionủa Hệ QT CSDL SQLServer Data Source:Tên máy cài đặt SQLServer Initial Catalog: Tên CSDL User ID: Tên người dùng Password : Mật khẩu Các thuộc tính Của Connection o DataBase: : Tương ứng với Initial Catalog(SQL) hay tên CSDL muốn làm việc (Access) o DataSource: Tương ứng với DataSource Tên máy SQL hay tên CSDL o Provider: Tương ứng với Provider o State: 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ối  Closed: Kết nối đã đóng  Connecting: Đang kết nối  Executing: Kết nối đang thực hiện một lệnh  Fetching: Kết nối đang truy xuất dữ liệu  Open: Kết nối đang mở Các phương thức Change Databse: Thay đổi DataBase làm việc Close : Đó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 trong ConnectionString Ví dụ: Kiểm tra kết nối với CSDL SQLServer protected void Button1_Click(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=;Initial Catalog=QLbansach;User ID=sa;Password="); //Mở kết nối cnn.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 } Biên sọan: Dương Thành Phết Trang 97
  • 98. Bài Giảng Môn Lập Trình Website ASP.Net 2. Đối tượng Command Sau 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ực hiệ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.OleDbCommand System.Data.SqlClient.SqlCommand Tạo Command Chúng ta có thể tạo Command thông qua đối tượng Connection bàng cách: <Loai command> <Biến Command> As New <Loai command>; <Biến command>.Connection=<Biến Connection>; <Biến Command>.CommandText=<Lệnh SQL>; Hoặc <Loai Command> <Biến Command> As New <Loại >Command(<Lệnh SQL>); <Biến Command>.Connection=<Biến Connection>; Các thuộc tính CommandText : Lệnh SQL hay tên Stored Procedure muốn thực hiện trên nguồn dữ liệu CommandType: Giá trị cho biết nội dugn Commandtext là gì: Text: (Mặc định) là câu lệnh SQL StoredProcedure: Tên thủ tục TableDirect: Tên Connectionủa table VD: SqlCommand cmd As SqlCommand = New SqlCommand(); cmd.Connection = cnn; cmd.CommandType = CommandType.Text; cmd.CommandText = "Select* From Khachhang Where MaKH=2"; Parameters Lệnh SQL trong commandText có thể sử dụng dấu ? thay cho trị chưa xác định và khi thực hiện sẽ dùng đối tượng Parameters để truyền gái trị vào dấu ? . Tùy theo Command Parameter sẽ khai báo từ lớp OledbParameter hay SqlParameter. Cú pháp khai báo sau: OleDbParameter | SqlParameter <tên Parameter> As New OleDbParameter | SqlParameter(); OleDbParameter | SqlParameter <Ten Parameter> As New OleDbparameter | SqlParameter(<Tên>); OleDbParameter | SqlParameter <Tên parameter> As New OleDbParameter | SqlParamter(<tên>,<giá>); Các thuộc tính cần chú ý: Direction : Giá trị cho biết lọai tham số Input: (mặc định) Loại tham số đầu vào InputOutput: Loại tham số đầu vào và ra Output: Loại tham số đầu ra Biên sọan: Dương Thành Phết Trang 98
  • 99. Bài Giảng Môn Lập Trình Website ASP.Net ReturnValue: Loại tham số nhận giá trị trả về Connectionủa một thủ tục OleDbType / 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 OleDbCommand cmd.CommandText=”Select * From Khachhang Where MaKH=?”; OleDbParameter Par As OleDbParameter= cmd.CreateParameter(); Par.Value=”KH01”;; cmd.Parameters.Add(Par); VD: Khi sử dụng SqlDbCommand cmd.CommandText=”Select * From Khachhang Where MaKH=@MaKH”; SqlParameter Par As SqlParameter = cmd.CreateParameter(); Par.ParameterName=”@MaKH”; Par.Value=”KH01”; cmd.Parameters.Add(Par); Đưa tham số vào tập hợp Parameters VD: Khi sử dụng OleDbCommand cmd.CommandText=”Select * From BangDiem Where Masv=? And MaMH=?”; OleDbParameter Par1 As OleDbParameter= cmd.CreateParameters.Add(“Sinhvien”,OleDbType.Char,4); Par1.Value=”SV01” OleDbParameter Par2 As OleDbParameter= cmd.CreateParameters.Add(“Monhoc”,OleDbType.Char,4); Par2.Value=”MH01” VD: Khi sử dụng SqlDbCommand cmd.CommandText=”Select * From BangDiem Where Masv=@MaSV and MaMH = @MaMH ”; SqlDbParameter Par1 As SqlDbParameter= cmd.CreateParameters.Add(“@MaSV”,SqlType.Char,4); Par1.Value=”SV01” SqlDbParameter Par2 As SqlDbParameter= cmd.CreateParameters.Add(“@MaMH”,SqlType.Char,4); Par2.Value=”MH01”; Tạo tham số và đưa vào tập hợp Parameters VD: Procedure SpKetQuaThi Cần 2 tham số đầu vào: @MaSV , @MaMH và trả về Điểm thi của Môn học Connectionủa sinh viên đó. Vì vậy chúng ta Connectionần truyền 3 tham số: 1 trả về, 2 đưa vào. Tham số trả về phải được truyền cho Command trước tiên Biên sọan: Dương Thành Phết Trang 99
  • 100. Bài Giảng Môn Lập Trình Website ASP.Net cmd.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= cmd.Parameters.Add(“@MaSV”,OleDbType.Char,4); Ts1.Value=”Sv01”; OleDbParameter ts2 as OleDbParameter= cmd.Parameters.Add(“@MAMH”,OleDbType.Char,4); Ts1.Value=”MH01”; Thực hiện Command 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 <Tên DataReader> As SqlDataReader; <Tên DataReader> = <tên Command>.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,… Phương thức ExcuteScalar: Trả về từ phát biết SQL dạng Select chỉ có một cột một hàng. 3. Đối tượng Datareader Là đối tượng truy cập dữ liệu trực tiếp, sử dụng con trỏ phía Server và duy trì kết nối với Server trong suốt quá trình đọc dữ liệu, DataReader thuộc tên miền System.data.OleDbDatReader hoặc System.Data.SqlDataRaeder Các thuộc tính FieldCout: Số Connectionột trên dòng hiện hành của DataReader IsClosed : Cho biết dataReader đã đóng Item: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ức Close: Đóng DataReader GetFieldType: 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ào GetValue: Tar3 về trị của cột truyền vào Read : Di chuyển đến dòng kế tiếp và trả về true nếu còn dòng để di chuyển, ngược lại trả về False. Trong khi dataReader đang mở các thao tác dữ liệu trên nguồn dữ liệu đều không thể cho đến khi dataRaeder đóng lại bằng lệnh Close. Biên sọan: Dương Thành Phết Trang 100
  • 101. Bài Giảng Môn Lập Trình Website ASP.Net 4. Đố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 DataAdapter Khai báo rõ DataAdapter sử dụng theo DataProvider nào: sqlDataAdapter hay OledbDataAdapter hai lớp này thuộc tên miền: System.Data.OleDb.OleDbDataAdapter System.Data.SqlClient.SqlDataAdapter Cú pháp tạo DataAdapter New <Loai>DataAdapter(); New <Loai>DataAdapter(<Đối tượng SelectCommand>); <Đối tượng SelectCommand>: Có sẳn với nội dụng lệnh truy xuất. New <Loai>DataAdapter(<Lệnh>,<Đối tượng Connection>) DataAdapter chỉ thao tác với một nguồn dữ liệu qua một đối tượng connection đang kết nối, khi Connection chưa mở thì DataAdapter sẽ tự động mở kết nối khi cần và đóng lại. VD: OleDbDataAdapter DA As New OleDbDataAdapter(); DA.SelectCommand.CommandText=”Select * From Sinhvien”; AD.SelectCommand.Connection.ConnectionString=”Provider=MicroSoft.Jet.OleDb.4.0; Data Source=c:QuanLySV.mdb”; b. Các thuộc tín chính của DataAdapter DeleteCommand : Đối tượng Command chứa nội dung lệnh hủy các mẫu tin trên nguồn dữ liệu. InsertCommand : Đối tượng Command chứa nội dung lệnh thêm các mẫu tin trên nguồn dữ liệu. SelectCommand: Đối tượng Command chứa nội dung lệnh truy xuất các mẫu tin trên nguồn dữ liệu. UpdateCommand : Đối tượng Command chứa nội dung lệnh sửa các mẫu tin trên nguồn dữ liệu. c. Các chức năng của DataAdapter - Lấy dữ liệu từ nguồn: Sử dụng DataAdapter để lấy dữ liệu về cho các đối tượng o DataTable: Fill(<DataTable>) o DataSet: Fill(<DataSet>)  Dữ liệu lấy về DataSet dưới dạng các dataTable với tên mặc định là: Table,Table1, Table2. . .: Biên sọan: Dương Thành Phết Trang 101
  • 102. Bài Giảng Môn Lập Trình Website ASP.Net o Đổ dữ liệu vào Datset cho bảng DataTable nếu chưa có sẽ tạo mới: Fill(<DataSet>,<Tên dataTable>) - Phương thức trả về mẫu tin lấy về được Dim DS as New Dataset() Dim so As Integer so= DA.Fill(DS,”Sinhvien”) - Để cập nhật dữ liệu về nguồn Update(<mảng dòng>): Cập nhật các dòng (Các đối tượng DataRow) vào nguồn dữ liệu. Update(<Dataset>): Cập nhật các thay đổi trên tất cả các bảng của Dataset vào nguồn dữ liệu. Update(<DataTable>): Cập nhật tất cả các thay đổi trên DataTable vào nguồn dữ liệu. Update(<Dataset>,<Tên bảng>) Cập nhật các they đổi trên bảng trong Dataset vào nguồn dữ liệu.. 5. Đối tượng DataSet Dataset là một mô hình CSDL quan hệ thu nhỏ đáp ứng nhu cầu của ứng dụng. Dataset chứa các bảng (DataTable) các quanhệ (DataRelation) và các ràng buộc (constraint) Dataset thuộc tên miền: System.Data.Dataset. a. Khai báo New System.Data.Dataset() Hoặc New System.Data.Dataset(<tên Dataset>) b. Các phương thức - Thêm một bảng vào Dataset Tables.Add() Một bảng mới tự động được tạo ra với tên mặc định Table1, Table2 . . . Tables.Addd(<Tên bảng>) Một bảng mới tạo ra theo đúng <tên bảng> Ghi chú: Tên bảng có phân biệt chữ in, thường - Xóa bảng ra khỏi Dataset Tables.Remove(<Tên bảng>) Xóa bảng ra khỏi tập hợp Table. - Kiểm tra bảng có thuộc về Dataset Tables.Contains(<Tên bảng>) - Lấy chỉ số của bảng Tables.IndexOf(<tên bảng>) - Lấy số bảng trong Dataset Tables.Count - Lấy ra một bảng trong Dataset Tables(<Chỉ số>) Biên sọan: Dương Thành Phết Trang 102
  • 103. Bài Giảng Môn Lập Trình Website ASP.Net - Để cập nhật các thay đổi trên Dataset AcceptChanges() - Để hủy các thay đổi trên Dataset RejectChanges() - Để xóa bỏ mọi dữ liệu trên dataSet Clear() - Để tạo một bản sau của Dataset Clone() - Để xóa bỏ Dataset Gọ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(<DataColumn trên bảng cha>,<Data Column trên bảng con>) - Xóa quan hệ giữa hai bảng trong Dataset. Relations.Remove(<quan hệ>) 6. Đối tượng Datatable Dữ liệu các bảng trong nguồn dữ liệu được lấy về và đưa vào các DataTable. DataTable thuộc tên miền : System.Data.dataTable. Cú pháp: New DataTable(); New DataTable(<Tên bảng>); DataTable được hình thành từ các DataColumn, DataRow. Biên sọan: Dương Thành Phết Trang 103
  • 104. Bài Giảng Môn Lập Trình Website ASP.Net III. Một số minh họa 1. Kết nối cơ sở dữ liệu protected void Button1_Click(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); //Mở kết nối cnn.Open(); // Thực hiện các câu lệnh SELECT, INSERT, DELETE, UPDATE. TextBox1.Text = "State = " + cnn.State; //Đóng kết nối cnn.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 SELECT protected void Button2_Click(object sender, EventArgs e) { try { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); //Khai báo và khởi tạo biến Command SqlCommand 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ối cnn.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 WebForm TextBox2.Text = count.ToString(); //Đóng kết nối. cnn.Close(); } catch (Exception) { //Xuất kết quả ra WebForm TextBox2.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, DELETE protected void Button3_Click(object sender, EventArgs e) { try { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Biên sọan: Dương Thành Phết Trang 104
  • 105. 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 WebForm TextBox3.Text = "Thành công!"; cnn.Close(); } catch (Exception) { //Xuất kết quả ra WebForm TextBox3.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 Connection SqlConnection 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 Command cmd.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!"; } } Biên sọan: Dương Thành Phết Trang 105
  • 106. Bài Giảng Môn Lập Trình Website ASP.Net 5. 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 Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = "SELECT * FROM Nhaxuatban"; cmd.CommandType = CommandType.Text; cnn.Open(); //Lấy danh sách nhà xuất bản bỏ vào biến DataReader IDataReader dr = cmd.ExecuteReader(); String list = ""; //Duyệt qua DataReader while (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 GetNhaxuatban AS BEGIN SELECT * FROM Nhaxuatban END GO protected void Button6_Click(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); 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(); } 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
  • 107. Bài Giảng Môn Lập Trình Website ASP.Net CREATE PROCEDURE GetchudeByMachude @Machude char(15) AS BEGIN SELECT * FROM CHUDE WHERE MaCD=@Machude END GO protected void Button7_Click(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand("GetchudeByMachude", cnn); cmd.Connection = cnn; cmd.CommandType = CommandType.StoredProcedure; //Khai báo và khởi tạo biến Command SqlParameter parMALINHVUC = new SqlParameter("@Machude", SqlDbType.NChar, 10); parMAVHUDE.Value = TextBox1.Text; cmd.Parameters.Add(parMACHUDE); cnn.Open(); IDataReader dr = cmd.ExecuteReader(); String list = ""; while (dr.Read()) { list = list + dr["Tenchude"].ToString(); } dr.Close(); TextBox2.Text = list.ToString(); cnn.Close(); } 8. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + update dữ liệu protected void Button8_Click(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); 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"; } 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
  • 108. Bài Giảng Môn Lập Trình Website ASP.Net 9. Kết nối cơ sở dữ liệu + sử dụng DataAdapter + gọi store protected void Button9_Click(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); //Khai báo và khởi tạo SqlDataAdapter SqlDataAdapter da = new SqlDataAdapter("GETNHAXUATBAN", cnn); //Khai báo và khởi tạo DataSet DataSet ds = new DataSet(); //Lấy dữ liệu trả về đổ vào dataset ds da.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 Connection SqlConnection 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à Command protected void Button10_Click(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); 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(); } } Biên sọan: Dương Thành Phết Trang 108
  • 109. Bài Giảng Môn Lập Trình Website ASP.Net Chương 4 CÁC ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU  Sử 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, … I. Điều khiển DataGrid DataGrid là một điều khiển khá linh hoạt và hiệu quả trong việc hiển thị, định dạng và thao tác với dữ liệu. Bên cạnh đó, chúng ta có thể thực hiện sắp xếp dữ liệu, thực hiện phân trang với sự hỗ trợ khá tốt của VS .Net trong quá trình thiết kế. Bổ sung Control DataGrid vào Thanh ToolBox (Nếu chưa có): Click phải thanh toolbox chọn Choose Items. Đánh dấu vào mục DataGrid (System.Web.UI.WebControls)  Ok 1. Tạo DataGrid vào trang Kéo Control DataGrid vào trang Định dạng tự động Kết nối nguồn dữ liệu Thiết lập thuộc tính Biên sọan: Dương Thành Phết Trang 109
  • 110. Bài Giảng Môn Lập Trình Website ASP.Net 2. Định dạng tự động Thự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ằng cách Chọn Auto Format từ khung DataGrid Task 3. Kết nối nguồn dữ liệu Chọn New Data Source từ mục Choose Data Source Biên sọan: Dương Thành Phết Trang 110
  • 111. Bài Giảng Môn Lập Trình Website ASP.Net Chọ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  Continue Biên sọan: Dương Thành Phết Trang 111
  • 112. Bài Giảng Môn Lập Trình Website ASP.Net Khai 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. Biên sọan: Dương Thành Phết Trang 112
  • 113. Bài Giảng Môn Lập Trình Website ASP.Net Khai 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ất 4. 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 Property Builder… từ khung DataGrid Task. a. Trang General Trong trang này, có các mục chọn sau: Biên sọan: Dương Thành Phết Trang 113
  • 114. 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ắp xếp) Các mục chọn trong Tab General b. 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. Trang Columns Biên sọan: Dương Thành Phết Trang 114
  • 115. 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. o Bound Column: Cột có liên kết với nguồn dữ liệu. o Button Column: Cột dạng nút lệnh đã được thiết kế sẵn. Điều khiển DataGrid cung cấp cho chúng ta 3 loại cột dạng này:  Select: Nút lệnh chọn dòng dữ liệu  Edit, Cancel, Update: Các nút lệnh hỗ trợ chức năng cập nhật dữ liệu trực tiếp trên lưới.  Delete: Nút lệnh xóa dòng dữ liệu Chúng ta sẽ có dịp tìm hiểu kỹ hơn về các nút lệnh này trong phần Cập nhật dữ liệu trực tiếp trên lưới. o Hyperlink Column: Cột có liên kết dữ liệu dạng liên kết. o 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ạn không muốn hiển thị Nam/Nữ, thay vào đó, bạn muốn hiển thị điều khiển checkbox thay thế, nếu checkbox được chọn - thể hiện phái Nam và ngược lại. Trong tình huống này, TemplateColumn là sự chọn lựa tốt dành cho bạn. Chúng ta sẽ tìm hiểu sâu hơn về Template Column ở phần sau.  BoundColumn properties: Qui định thông tin chi tiết cho các cột o HeaderText, Footer Text: Thông tin tiêu đề trên/dưới của cột o Header Image: Hình hiển thị trên tiêu đề cột (thay thế thông tin tiêu đề cột - Header Text). o Sort Expression: Biểu thức sắp xếp của cột. o Visible: Qui định cột có được hiển thị hay không. o 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ị. o Data formatting expression: Biểu thức định dạng dữ liệu. Mẫu định dạng: {0:<chuỗi định dạng>}. 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} o Read Only: Chọn giá trị này để cột chỉ được phép đọc, không cho phép cập nhật dữ liệu. o Convert this column into a Template Column: Chuyển cột hiện hành thành cột dạ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. Biên sọan: Dương Thành Phết Trang 115
  • 116. 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ác hay không. Giá trị mặc định là True.  Possition: Qui định vị trí hiển thị của bộ nút di chuyển. Ở phía trên thanh tiêu đề, ở phía dưới hay cả hai.  Mode: Qui định hình thức hiển thị của bộ nút di chuyển. Hiển thị dạng số trang hay là các chuỗi ký tự đại diện (Next page/Previous page button text). Trong trường hợp hiển thị dạng số, Numeric buttons qui định số nút lệnh được hiển thị tối đa. Google hiển thị kết quả được phân trang theo dạng số d. Trang Format (Định dạng) Trang Format quản lý việc định dạng hiển thị trên điều khiển DataGrid. Các định dạng chung như: Màu chữ, màu nền, Font chữ, kích cỡ, in đậm /in nghiêng/gạch dưới và canh lề. Biên sọan: Dương Thành Phết Trang 116
  • 117. Bài Giảng Môn Lập Trình Website ASP.Net Trang Format  DataGrid: Qui định các định dạng chung cho lưới  Header: Định dạng cho dòng tiêu đề.  Footer: Định dạng cho dòng tiêu đề dưới.  Pager: Định dạng cho dòng chứa các nút lệnh phân trang.  Items o Normal Items: Định dạng cho các dòng dữ liệu. o Alternating Items: Định dạng hiển thị cho các dòng lẻ. o Selected Items:Định dạng hiển thị cho dòng đang được chọn. o 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. Biên sọan: Dương Thành Phết Trang 117
  • 118. Bài Giảng Môn Lập Trình Website ASP.Net  Cell margin o Cell padding: Qui định khoảng cách giữa nội dung trong ô với đường viền của ô. o Cell spacing: Qui định khoảng cách giữa các ô Thi hành 2. Xử lý sắp xếp Sắp xếp dữ liệu trên lưới là một công việc rất cần thiết đối với người sử dụng. Hãy thử tưởng tượng xem trong trường hợp chúng ta có khá nhiều dữ liệu hiển thị trên màn hình (giả sử là danh sách nhân viên chẳng hạn), thật khó để chọn ra các nhân viên có thâm niên làm Biên sọan: Dương Thành Phết Trang 118
  • 119. Bài Giảng Môn Lập Trình Website ASP.Net việc lâu nhất hay các nhân viên có số giờ tham gia đề án nhiều nhất…. Với chức năng sắp xếp trên lưới sẽ giúp cho người dùng dễ dàng chọn ra các nhân viên thỏa mãn các yêu cầu trên. Để thực hiện được thao tác sắp xếp dữ liệu trên lưới, chúng ta cần phải thực hiện các công việc sau: Giá trị thuộc tính Allow sorting = True Nhập giá trị cho thuộc tính Sort expression của các cột cần sắp xếp. Xử lý sự kiện SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls. DataGridSortCommandEventArgs) Trong sự kiện trên, giá trị e.SortExpression cho biết thông tin của cột được chọn sắp xếp. Ví dụ: Private Sub Page_Load(…) Handles MyBase.Load If Not IsPostBack Then dtgKhach_hang.DataSource = Doc_ds_khach_hang() dtgKhach_hang.DataBind() End If End Sub Private Sub dtgKhach_hang_SortCommand(…,e …)… dtgKhach_hang.DataSource = Doc_ds_khach_hang(e.SortExpression) dtgKhach_hang.DataBind() End Sub Public Function Doc_ds_khach_hang(Optional ByVal pChuoi_sap_xep As String = "") As DataTable Dim sKet_noi As String sKet_noi = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _ Server.MapPath("..DataQlBanSach.mdb") Dim cnKet_noi As New OleDbConnection(sKet_noi) Dim dsCSDL As New DataSet Dim sLenh_sql As String = "Select * From KHACH_HANG" sLenh_sql &= IIf(pChuoi_sap_xep = "", _ "", " Order by " & pChuoi_sap_xep) 'Mở và đóng kết nối ngay khi thực hiện xong cnKet_noi.Open() Dim daBo_doc_ghi As New OleDbDataAdapter(sLenh_sql, cnKet_noi) cnKet_noi.Close() daBo_doc_ghi.Fill(dsCSDL, "KHACH_HANG") Return dsCSDL.Tables("KHACH_HANG") End Function Biên sọan: Dương Thành Phết Trang 119
  • 120. Bài Giảng Môn Lập Trình Website ASP.Net Sắp xếp khách hàng tăng dần theo tên 3. Xử lý phân trang Phân trang dữ liệu không những giúp cho việc xem và tìm kiếm thông tin được dễ dàng mà còn giảm được khối lượng dữ liệu cần được truyền tải từ Server về Client. Việc phân trang trong ASP.Net được thực hiện khá dễ dàng, chỉ với một số thao tác đơn giản. Để thực hiện phân trang, chúng ta cần phải thực hiện các công việc sau: Qui định các thông số cần thiết cho việc phân trang (xem Quản lý phân trang ở phần Các thao tác định dạng lưới). Xử lý sự kiện PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI. WebControls.DataGridPageChangedEventArgs) Trong sự kiện trên, giá trị e.NewPageIndex cho biết trang được chọn để hiển thị dữ liệu. Định dạng phân trang Mã lệnh xử lý: Private Sub Page_Load(…) Handles MyBase.Load If Not IsPostBack Then Lien_ket_du_lieu() End If End Sub Private Sub dtgKhach_hang_PageIndexChanged(…, e …) … dtgKhach_hang.CurrentPageIndex = e.NewPageIndex Lien_ket_du_lieu() End Sub Dữ liệu hiển thị được phân trang 4. Tùy biến các cột Trong phần này, chúng tôi sẽ hướng dẫn các bạn tùy biến các cột trên lưới, cụ thể hơn, chúng ta sẽ hiển thị checkbox thay cho giá trị True/False của cột giới tính. Để thực hiện việc tùy biến các cột, chúng ta cần phải thực hiện 2 giai đoạn sau: Giai đoạn 1: Thiết kế Trong giai đoạn này, chúng ta tùy biến cột theo một yêu cầu cụ thể. Thay vì phải hiển thị ô dữ liệu bình thường (như họ khách hàng, tên khách hàng, …), chúng ta có thể sử dụng điều khiển Checkbox để thay thế cho cột có giá trị luận lý, sử dụng điều khiển Image, Image button hay Hyperlink để hiển thị hình ảnh thay cho chuỗi đường dẫn dẫn đến hình ảnh đó, … Giai đoạn 2: Xử lý Sau khi thực hiện 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ý để hiển thị dữ liệu theo yêu cầu của mình. I.4.1. Giai đoạn 1: Thiết kế Bước 1. Thêm mới cột Phái, kiểu Template Column. Nhập giá trị Header text, Sort expression cho Biên sọan: Dương Thành Phết Trang 120
  • 121. Bài Giảng Môn Lập Trình Website ASP.Net cột này (nếu cần) Bổ sung cột Phái kiểu Template Column Bước 2. Từ thực đơn ngữ cảnh, chọn Edit Template Column[X] –YYY (X: Số thứ tự của cột; Y: Chuỗi tiêu đề của cột) Chúng ta chọn cột cần hiệu chỉnh. Chọn chức năng hiệu chỉnh cột Phái Bước 3. Thêm điều khiển checkbox chkPhai, vào mục ItemTemplate Tùy biến cột Phái Bước 4. Chọn End Template Editing từ thực đơn ngữ cảnh sau khi thiết kế xong. Điều khiển lưới sau khi đã được tùy biến cột Phái I.4.2. Giai đoạn 2: Xử lý Khác với Bound column, cột kiểu Template column không tự động hiển thị dữ liệu. Mà làm sao hiển thị dữ liệu được khi chính bản thân các điều khiển (mới được tạo khi thiết kế) không có qui định field cần được hiển thị từ nguồn dữ liệu. Do đó, để hiển thị dữ liệu (theo ý đồ của chúng ta), ta phải viết lệnh các xử lý trong sự kiện ItemDataBound Mã lệnh xử lý: (1)Private Sub dtgKhach_hang_ItemDataBound(…,e …) … (2) If e.Item.ItemIndex 0 Then Exit Sub (3) Dim chkPhai As CheckBox (4) chkPhai = e.Item.FindControl(chkPhai) (5) chkPhai.Checked = e.Item.DataItem(Gioi_tinh) (6)End Sub Trước khi đi vào tìm hiểu các lệnh xử lý trong đoạn lệnh trên, chúng ta cũng nên tìm hiểu ý nghĩa sự kiện ItemDataBound của DataGrid. Sự kiện ItemDataBound xảy ra ngay khi phương thức DataBind được gọi (lẽ đương nhiên là ta phải gán nguồn dữ liệu cho lưới trước đó). Ứng với mỗi dòng dữ liệu sẽ xảy ra một sự kiện ItemDataBound tương ứng. Phân tích xử lý trong đoạn lệnh trên: Dòng lệnh (2): Dòng lệnh này kiểm tra xem lần xảy ra sự kiện này có phải dành cho dòng dữ liệu hay không. Tại sao cần phải kiểm tra điều kiện này? Bởi vì không chỉ ứng với mỗi dòng dữ liệu, mà còn có các dòng Header, Footer và Pager, … cũng xảy ra trong sự kiện này. chkPhai Để biết được lần xảy ra sự kiện dành cho dòng nào, chúng ta kiềm tra giá trị của thuộc tính e.Item.ItemType. Thuộc tính này có các giá trị sau: Các giá trị của thuộc tính ItemType Biên sọan: Dương Thành Phết Trang 121
  • 122. 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ách Bên cạnh đó, nếu ta chỉ quan tâm đến lần xảy ra sự kiện này có phải là dòng dữ liệu hay không, ta có thể sử dụng thuộc tính e.ItemIndex. e.Item.ItemIndex 0: Đây 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ủa dòng dữ liệu hiện hành. Dòng lệnh (3,4): Nhiệm vụ chính ở 2 dòng lệnh này là chúng ta khai báo các điều khiển ứng với các điều khiển được đặt vào lúc thiết kế. Sử dụng phương thức e.Item.FindControl(Tên điều khiển) để lấy điều khiển hiện có trong dòng đang xảy ra sự kiện. chkPhai = e.Item.FindControl(chkPhai) 'hay chkPhai =Ctype(e.Item.FindControl(chkPhai),CheckBox) Bảng KHACH_HANG Dòng lệnh (5): Sau khi lấy được điều khiển ứng với dòng đang xảy ra sự kiện, tùy theo dữ liệu mà ta sẽ hiển thị lên điều khiển giá trị tương ứng. Để lấy được dữ liệu của dòng hiện hành, ta sử dụng thuộc tính e.Item.DataItem(Tên field/Tên thuộc tính) chkPhai.Checked = e.Item.DataItem(Gioi_tinh) Kết quả hiển thị Đối với những xử lý phức tạp, sự kiện ItemDataBound sẽ là sự lựa chọn hàng đầu trong việc tùy biến hiển thị dữ liệu. Tuy nhiên, đối với những xử lý đơn giản, chúng ta có thể thực hiện liên kết dữ liệu trong quá trình thiết kế. Chọn Edit Template cột Phái, chọn điều khiển chkPhai. Chọn điều khiển chkPhai trong lúc thiết kế Trên cửa sổ thuộc tính, chọn (DataBindings) Chọn chức năng DataBidings Trên cửa sổ thuộc tính, chọn (DataBindings). Hộp thoại DataBindings của điều khiển chkPhai xuất Biên sọan: Dương Thành Phết Trang 122
  • 123. Bài Giảng Môn Lập Trình Website ASP.Net hiệ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ộp thoại. Chọn thuộc tính cần liên kết, chọn loại liên kết là Custom binding expression, nhập chuỗi liên kết dữ liệu trong điều khiển bên dưới theo cú pháp: Container.DataItem(Tên field) Ở ví dụ này, chúng ta thực hiện liên kết thuộc tính Checked của điều khiển chkPhai với field Gioi_tinh có trong nguồn dữ liệu của lưới. I.5. Cập nhật dữ liệu trực tiếp trên lưới Cập nhật dữ liệu trực tiếp trên lưới trong ASP.Net được hỗ trợ khá tốt về giao diện. Công việc còn lại của chúng ta là thiết kế các nút lệnh như: Chọn, Sửa/Ghi - Không, Hủy, … và viết các lệnh cập nhật dữ liệu. I.5.1. Giai đoạn thiết kế Trong cửa sổ thuộc tính của lưới, chúng ta tạo bộ nút lệnh cần thiết hỗ trợ cho việc cập nhật dữ liệu. Ở ví dụ này, chúng tôi tạo bộ nút (Select - chọn), (Edit, Update, Cancel - Sửa, Ghi, Không) và (Delete - Hủy) Đối với các nút lệnh trên, các bạn cần chú ý đến giá trị của thuộc tính Command name. Ứng với mỗi nút lệnh có giá trị CommandName khác nhau, nhờ đó, ta viết lệnh xử lý với chức năng tương ứng được chọn. Select: Command name = Select Edit, Update/Cancel: Command name = Edit, Update/Cancel Delete: Command name = Delete Tạo bộ nút lệnh Thêm - Sửa/Ghi/Không - Hủy Tìm hiểu về thuộc tính Command Name Cũng cần bàn thêm một chút ở đây về thuộc tính Command Name. Như các bạn cũng biết, các nút lệnh ở trên (Chọn, Thêm - Sửa / Ghi / Không - Hủy) là do VS.Net hỗ trợ, giá trị thuộc tính CommandName của các nút lệnh trên là những giá trị mặc định được qui định sẵn. Ứng với mỗi CommandName mặc định, sẽ có các sự kiện để ta thực hiện các xử lý tương ứng: Command name=Edit Sự kiện EditCommand Command name=Update Sự kiện UpdateCommand Command name=Cancel Sự kiện CancelCommand Command name=Delete Sự kiện DeleteCommand Chắc hẳn các bạn sẽ thắc mắc tại sao không có sự kiện SelectCommand? Bốn sự kiện được liệt kê Biên sọan: Dương Thành Phết Trang 123
  • 124. Bài Giảng Môn Lập Trình Website ASP.Net trên là 4 sự kiện dành riêng, tương ứng với giá trị của các Command name mặc định là Edit, Update, Cancel, Delete. Đối với những CommandName có giá trị khác, chúng ta sẽ sử dụng sự kiện dành chung cho tất cả các nút lệnh có thuộc tính CommandName (Button, Linkbutton, ImageButton) được đặt trên lưới - sự kiện ItemCommand. Tại sao vậy? Vì khi ta đặt các nút lệnh vào lưới (sử dụng cột Template column), chúng (các nút lệnh) không còn sự kiện Click nữa, thay vào đó, tất cả các nút lệnh khi được nhấn sẽ gây ra sự kiện ItemCommand. Dựa vào giá trị e.CommandName (tham số trong sự kiện) để chúng ta xác định nút lệnh nào đã được nhấn. Cũng cần lưu ý thêm ở đây là bất kỳ nút lệnh nào khi được nhấn đều gây ra sự kiện ItemCommand. Do đó, đối với các nút lệnh có giá trị thuộc tính CommandName là Edit, Update, Cancel, Delete khi được nhấn vẫn gây ra sự kiện ItemCommand trước khi gây ra các sự kiện dành riêng cho chúng. Giao diện lưới sau khi thêm bộ nút lệnh I.5.2. Giai đoạn xử lý Xử lý chọn mẩu tin Chọn mẫu tin trên lưới Private Sub dtgKhach_hang_ItemCommand(…, e …) … If e.CommandName = Select Then dtgKhach_hang.SelectedIndex = e.Item.ItemIndex Lien_ket_du_lieu() End If End Sub Xử lý sửa, ghi, không Muốn cập nhật dữ liệu, ta cần xác định khách hàng được cập nhật thông qua Mã khách hàng. Để lấy Mã khách hàng: Gán thuộc tính DataKeyField của điều khiển lưới = MKH lưới.DataKeys(chỉ số i) Trả về Mkh tại dòng chỉ số i Chọn mẫu tin để cập nhật dữ liệu Private Sub Page_Load(…) … If Not IsPostBack Then dtgKhach_hang.DataKeyField = MKH Lien_ket_du_lieu() End If End Sub Private Sub dtgKhach_hang_EditCommand(…, e …) … Biên sọan: Dương Thành Phết Trang 124
  • 125. Bài Giảng Môn Lập Trình Website ASP.Net dtgKhach_hang.EditItemIndex = e.Item.ItemIndex Lien_ket_du_lieu() End Sub Private Sub dtgKhach_hang_UpdateCommand(…, e …) … 'Khai báo và khởi tạo biến kết nối: cnKet_noi 'Lấy dữ liệu mà người dùng vừa cập nhật Dim lHo_kh As TextBox = e.Item.Cells(0).Controls(0) Dim lTen_kh As TextBox = e.Item.Cells(1).Controls(0) Dim lPhai As CheckBox = e.Item.FindControl(chkPhai) Dim lMkh As Integer = dtgKhach_hang.DataKeys(e.Item.ItemIndex) 'Tạo đối tượng Command để cập nhật dữ liệu Dim cmdLenh As New OleDbCommand cmdLenh.Connection = cnKet_noi cmdLenh.CommandText = Update KHACH_HANG _ Set Ho_khach_hang=?, Ten_khach_hang=?, _ Gioi_tinh=? Where MKH=? 'Truyền tham số cho đối tượng Command cmdLenh.CommandType = CommandType.Text cmdLenh.Parameters.Add(Ho_kh, lHo_kh.Text) cmdLenh.Parameters.Add(Ten_kh, lTen_kh.Text) cmdLenh.Parameters.Add(Phai, lPhai.Checked) cmdLenh.Parameters.Add(Mkh, lMkh) 'Thi hành Command cnKet_noi.Open() cmdLenh.ExecuteNonQuery() cnKet_noi.Close() 'Tắt chế độ cập nhật dữ liệu dtgKhach_hang.EditItemIndex = -1 'Hiển thị dữ liệu mới cập nhật lên lưới Lien_ket_du_lieu() End Sub Private Sub dtgKhach_hang_CancelCommand(…, e …) … dtgKhach_hang.EditItemIndex = -1 Lien_ket_du_lieu() End Sub Hiệu chỉnh độ rộng của các Textbox khi dòng ở trạng thái sửa Bạn có thể bổ sung đoạn lệnh sau (trong sự kiện ItemDataBound) để hiệu chỉnh độ rộng các Textbox của dòng ở trạng thái sửa. Biên sọan: Dương Thành Phết Trang 125
  • 126. Bài Giảng Môn Lập Trình Website ASP.Net If e.Item.ItemType = ListItemType.EditItem Then CType(e.Item.Cells(0).Controls(0),TextBox).Width = New Unit(133) CType(e.Item.Cells(1).Controls(0), TextBox).Width = New Unit(63) End If Xử lý hủy mẫu tin Private Sub dtgKhach_hang_DeleteCommand(…, e …) … 'Thực hiện xóa dòng dữ liệu ở đây 'Xử lý tương tự như Update Command 'Hiển thị dữ liệu mới cập nhật lên lưới Lien_ket_du_lieu() End Sub II. Điều khiển DataList II.1. Sử dụng DataList để hiển thị dữ liệu Như điều khiển DataGrid, điều khiển DataList được sử dụng để hiển thị dữ liệu. Tuy nhiên, đối với DataList, chúng ta phải tự thiết kế hình thức hiển thị dữ liệu (giống như Template Column của DataGrid). Huy Cận Về Tác Giả Và Tác Phẩm NXB: Giáo dục Cuốn Huy Cận Về Tác Gia Và Tác Phẩm tập hợp những bài nghiên cứu, phê bình của các nhà văn, nhà thơ, các cán bộ giảng dạy, các nhà nghiên cứu phê bình văn học, các nhà nghiên cứu văn hóa nước ngoài đã được công bố trên sách, báo, tạp chí. Các bài viết này được sắp xếp theo thứ tự thời gian và chủ đề, để bạn đọc có thể hình ... Giá: 45,500.00 VND [Đặt hàng] [Xem Tiếp] Địa Chất Công Trình (Giáo Trình Dùng Cho Sinh Viên Ngành Xây Dựng Cầu Đường) NXB: Giao thông vận tải Địa chất công trình là một môn được đưa vào chương trình đào tạo kỹ sư ngành Xây dựng cầu đường của trường Đại học GTVT từ lâu. Những hiểu biết về địa chất công trình sẽ giúp ích nhiều cho kỹ sư cầu đường trong khảo sát, thiết kế và thi công các công trình giao thông ... Giá: 14,000.00 VND [Đặt hàng] [Xem Tiếp] Sử dụng DataList hiển thị thông tin sách Một số thuộc tính cần chú ý của DataList RepeatDirection: Qui định hướng hiển thị dữ liệu Biên sọan: Dương Thành Phết Trang 126
  • 127. Bài Giảng Môn Lập Trình Website ASP.Net Horizontal: Hiển thị dữ liệu theo chiều ngang RepeatDirection = Horizontal Vertical (mặc định): Hiển thị dữ liệu theo chiều đứng RepeatDirection = Vertical RepeatColumns: Qui định số cột hiển thị của DataList L'Enquête Corse Đặt mua Unspeakable Đặt mua Bottle Rocket Đặt mua Ripper Đặt mua Enduring Love Đặt mua The Good Thief Đặt mua RepeatColumns = 3 Thiết kế hình thức hiển thị cho DataList cũng tương tự như thiết kế cho cột Template Column của DataGrid. Chọn Edit Template | ItemTemplate từ thực đơn ngữ cảnh để thực hiện thiết kế hình thức hiển thị cho DataList. Chọn chức năng thiết kế cho DataList Trong quá trình thực hành, để công việc thiết kế được dễ dàng, các bạn thực hiện thiết kế ở bên ngoài điều khiển DataList. Sử dụng Table (thực đơn Insert Table) để định vị trí hiển thị của các điều khiển. Sau khi 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ị trong DataList. Ví dụ: Hiển thị thông tin sách với DataList Thiết kế thông tin sách với DataList Như cột Template Column của DataGrid, xử lý hiển thị dữ liệu cho DataList được viết trong sự kiện ItemDataBound. Xử lý nhấn của các Button đặt trong DataList được viết trong sự kiện ItemCommand. Private Sub Page_Load(…, e …) Handles MyBase.Load If Not IsPostBack Then Biên sọan: Dương Thành Phết Trang 127
  • 128. Bài Giảng Môn Lập Trình Website ASP.Net Lien_ket_du_lieu() End If End Sub Public Sub Lien_ket_du_lieu() dtSach = Doc_danh_sach_Sach() dtlSach.DataSource = dtSach dtlSach.DataKeyField = Ms dtlSach.DataBind() End Sub Private Sub dtlSach_ItemDataBound(…, e …) … Dim lDong as Integer = e.Item.ItemIndex If lDong 0 Then Exit Sub 'Hiển thị Tên sách Dim lnkTs As LinkButton lnkTs = e.Item.FindControl(lnkTen_sach) lnkTs.Text = e.Item.DataItem(Ten_sach) 'Hiển thị thông tin mô tả tóm tắt nội dung Label HyperLink LinkButton Tài liệu hướng dẫn giảng dạy Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 82/174 Dim lblMt As Label lblMt = e.Item.FindControl(lblMo_ta) lblMt.Text = Left(e.Item.DataItem(Mo_ta), 200) ... 'Hiển thị hình ảnh minh họa Dim hplHinh As HyperLink hplHinh = e.Item.FindControl(hplHinh_mh) hplHinh.ImageUrl = ../Data_Pic/ e.Item.DataItem(Hinh_minh_hoa) 'Hiển thị giá bán sách Dim lblGia As Label lblGia = e.Item.FindControl(lblGia_ban) lblGia.Text = e.Item.DataItem(Don_gia) End Sub Kết quả hiển thị thông tin sách trên trang Web Kết quả trên trang Web Tài liệu hướng dẫn giảng dạy Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 83/174 Biên sọan: Dương Thành Phết Trang 128
  • 129. Bài Giảng Môn Lập Trình Website ASP.Net II.2. Cập nhật dữ liệu với DataList Ngoài việc hiển thị dữ liệu, DataList cũng hỗ trợ các thao tác cập nhật dữ liệu. Để thực hiện chức năng cập nhật dữ liệu với DataList, chúng ta cần phải thiết kế thêm vùng EditIemTemplate cho DataList. (xem hình) II.2.1. Các bước xử lý a. Thiết kế Thiết kế cả 2 vùng ItemTemplate và EditItemTemplate. Thực hiện các thao tác liên kết dữ liệu cho các điều khiển trong vùng EditItemTemplate thông qua cửa sổ thuộc tính tương tự như trong ItemTemplate. Chú ý: Chúng ta 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_gia Yêu cầu thiết kế Tên điều khiển Thiết lập thuộc tính Hieu_chinh: ImageButton CommandName: Edit Ghi_nhan: ImageButton CommandName: Update CommandArgument: DataBinder.Eval(Container, DataItem.Ms) Lưu lại mã số của sách đang hiệu chỉnh. Bo_qua: ImageButton CommandName: Cancel Tài liệu hướng dẫn giảng dạy Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 85/174 b. Xử lý lệnh để cập nhật dữ liệu Xử lý các sự kiện EditCommand, CancelCommand, UpdateCommand để thực hiện/bỏ qua việc thay đổi dữ liệu. Private Sub Page_Load(…, e …) Handles MyBase.Load 'Put user code to initialize the page here If Not IsPostBack Then Lien_ket_du_lieu() End If End Sub Private Sub dtlHang_hoa_EditCommand(…, e …) … dtlHang_hoa.EditItemIndex = e.Item.ItemIndex Lien_ket_du_lieu() End Sub Private Sub dtlHang_hoa_CancelCommand(…, e …) … Biên sọan: Dương Thành Phết Trang 129
  • 130. Bài Giảng Môn Lập Trình Website ASP.Net dtlHang_hoa.EditItemIndex = -1 Lien_ket_du_lieu() End Sub Private Sub dtlHang_hoa_UpdateCommand(…, e …) … 'Xử lý cập nhật dữ liệu tại đây Dim Don_gia_sua As TextBox Don_gia_sua = e.Item.FindControl(Don_gia_sua) 'Don_gia_sua.Text Trả về đơn giá mới được sửa '…… dtlHang_hoa.EditItemIndex = -1 Lien_ket_du_lieu() End Sub Tài liệu hướng dẫn giảng dạy Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 86/174 DataList ở chế độ đang hiệu chỉnh III. Điều khiển Repeater Như 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ác tag HTML. Điều khiển Repeater có các tag sau: HeaderTemplate/HeaderTemplate (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) ItemTemplate/ItemTemplate (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. AlternatingItemTemplate/AlternatingItemTemplate (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 tag ItemTemplate /ItemTemplate SeparatorTemplate/SeparatorTemplate (tùy chọn) Qui định hình thức hiển thị giữa các dòng dữ liệu FooterTemplate/FooterTemplate (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 Web Bước 2. Chuyển qua xem trang Web dưới dạng HTML asp:Repeater id=rptKhach_hang runat=server asp:Repeater Biên sọan: Dương Thành Phết Trang 130
  • 131. Bài Giảng Môn Lập Trình Website ASP.Net Bước 3. Bổ sung các tag sau asp:Repeater id=rptKhach_hang runat=server HeaderTemplate table border=1 bordercolor=SteelBlue tr td width=130 align=center strongHọ khách hàng/strong /td td width=100 align=center strongTên khách hàng/strong /td td width=120 align=center strongĐịa chỉ/strong /td td width=80 align=center strongĐiện thoại/strong /td /tr /HeaderTemplate ItemTemplate tr td %# Container.DataItem(Ho_khach_hang) % /td td %# Container.DataItem(Ten_khach_hang) % /td td %# Container.DataItem(Dia_chi)% /td td %# Container.DataItem(Dien_thoai) % /td /tr /ItemTemplate AlternatingItemTemplate tr bgcolor=GhostWhite td Biên sọan: Dương Thành Phết Trang 131
  • 132. Bài Giảng Môn Lập Trình Website ASP.Net %# Container.DataItem(Ho_khach_hang) % /td td %# Container.DataItem(Ten_khach_hang) % /td td %# Container.DataItem(Dia_chi)% /td td %# Container.DataItem(Dien_thoai) % /td /tr /AlternatingItemTemplate FooterTemplate /table /FooterTemplate /asp:Repeater Bướ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ển Private Sub Page_Load(…) Handles MyBase.Load 'Tạo dữ liệu cho đối tượng DataTable: dtKhach_hang rptKhach_hang.DataSource = dtKhach_hang rptKhach_hang.DataBind() End Sub Bước 6. Thi hành ứng dụng Tài liệu hướng dẫn giảng dạy Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 90/174 IV. Các ví dụ mở rộng IV.1. Xử lý đảo hướng sắp xếp trong DataGrid Ví 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ồn dữ liệu. Private Sub Page_Load(…, e …) Handles MyBase.Load If Not IsPostBack Then Lien_ket_du_lieu() End Sub Public 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
  • 133. Bài Giảng Môn Lập Trình Website ASP.Net Dim dvKhach_hang As New DataView(dtKhach_hang) dvKhach_hang.Sort = ViewState(SortExpression) If ViewState(SortAscending) = false Then dvKhach_hang.Sort = desc End If dtgKhach_hang.DataSource = dvKhach_hang dtgKhach_hang.DataBind() End Sub Public Function Doc_ds_khach_hang() As DataTable Dim sKet_noi As String sKet_noi = Provider=Microsoft.Jet.Oledb.4.0;Data Source= _ Server.MapPath(..DataQlBanSach.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 xong cnKet_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 Function Private Sub dtgKhach_hang_SortCommand(…, e …) … Dim sSap_xep As String = ViewState(SortExpression) Tài liệu hướng dẫn giảng dạy Học phần 3 - Lập trình ứng dụng web với ASP.NET Trang 91/174 Dim sHuong As String = ViewState(SortAscending) ViewState(SortExpression) = e.SortExpression If (e.SortExpression = sSap_xep) Then ViewState(SortAscending) = IIf(sHuong = false, true, false) End If Lien_ket_du_lieu() End Sub IV.2. Tạo biểu tượng sắp xếp trong cột cho DataGrid Sắp xếp tăng dần theo tên khách hàng Private Sub dtgKhach_hang_ItemDataBound(…, e …) … If e.Item.ItemType = ListItemType.Header Then Dim sSap_xep As String = ViewState(SortExpression) Biên sọan: Dương Thành Phết Trang 133
  • 134. Bài Giảng Môn Lập Trình Website ASP.Net Dim 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 - 1 If sSap_xep = _ dtgKhach_hang.Columns(i).SortExpression Then Dim cell As TableCell = e.Item.Cells(i) Dim lblKy_hieu As New Label lblKy_hieu.Text = sKy_hieu lblKy_hieu.Font.Name = webdings lblKy_hieu.Font.Size = FontUnit.XSmall cell.Controls.Add(lblKy_hieu) End If Next End If End Sub IV.3. Định dạng hình thức hiển thị cho dòng dữ liệu thỏa điều kiện trên DataGrid Trong 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 Sub Dim sTen_kh As String sTen_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ạng If sTen_kh.StartsWith(H) Then e.Item.BackColor = Color.LemonChiffon e.Item.Cells(1).Font.Bold = True End If End Sub Tô màu những khách hàng có tên bắt đầu bằng ký tự H IV.4. Tạo hiệu ứng chọn khi rê chuột qua các dòng dữ liệu Private Sub dtgKhach_hang_ItemDataBound(…, e …) … If e.Item.ItemIndex 0 Then Exit Sub e.Item.Attributes(onMouseOver) = _ this.style.backgroundColor='#FFF8DC' e.Item.Attributes(onMouseOut) = _ Biên sọan: Dương Thành Phết Trang 134
  • 135. Bài Giảng Môn Lập Trình Website ASP.Net this.style.backgroundColor='' End Sub Tạo hiệu ứng chọn dòng dữ liệu trên lưới Kinh 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ển thị 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ừng chứ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. Biên sọan: Dương Thành Phết Trang 135
  • 136. Bài Giảng Môn Lập Trình Website ASP.Net TÀI LIỆU THAM KHẢO 1. MSDN Library - April 2003 MSDN Library - July 2005 2. MSDN Traning: Developing Microsoft ASP.NET Web Applications Using Visual Studio.NET 3. MSDN Traning: Programming with Microsoft ADO.NET 4. ASP.NET Web Developer’s Guide 5. ASP.NET By Example [Steven A. Smith] 6. Developing Web Applications with Visual Basic .NET and ASP.NET [John Alexander, Billy Hollis] 7. Programming ASP.NET, 2nd Edition [Dan Hurwitz, Jesse Liberty] 8. Inside ASP.NET [Scott Worley] 9. ASP NET Bible [Mridula Parihar] 10. ASP.NET for Web Designers [Peter Ladka] 11. Professional ADO.NET Programming [Wrox] 12. Cascading Style Sheets - The Designer's Edge [Molly E. Holzschlag ] 13. JavaScript Bible - Gold Edition [Danny Goodman] 14. Real World Web Services [Yasser Shohoud] 15. Trang chủ ASP.Net: http://www.asp.net 16. Trường học trực tuyến của W3C: http://www.w3schools.com 1. Đối tượng transaction được tạo bởi phương thức nào : a. NewTransaction b. StartTransaction c. BeginTransaction d. CreateTransaction 2. Đ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 control b. Hiển thị không phụ thuộc vào trình duyệt Biên sọan: Dương Thành Phết Trang 136
  • 137. Bài Giảng Môn Lập Trình Website ASP.Net c. Có các sự kiện riêng biệt d. Tốc độ hiển thị nhanh 3. 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.Redirect b. Server.Transfer c. Server.Execute d. Cả 3 phương thức trên 4. Ứng dụng web không sử dụng các control nào : a. Windows controls b. Server controls c. HTML controls d. User controls e. Custom controls 5. Phương thức nào sau đây chắc chắn không làm thay đổi dữ liệu : a. ExecuteNonQuery b. ExecuteReader c. ExecuteScalar d. ExecuteReadOnly 6. 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 NEW b. ADD ROW c. INSERT ROW d. INSERT INTO 7. 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ạp c. Thực hiện nhiều lệnh cơ sở dữ liệu như một lệnh d. Cả 3 câu trên đều đúng 8. Mức cô lập (isolation level) cao nhât của một giao dịch là : a. RepeatableRead b. Serializable c. Chaos d. ReadUncommitted e. ReadCommitted 9. Thành phần nào không phải là thuộc tính của đối tượng Dat Adapter : a. SQLCommand b. DeleteCommand c. UpdateCommand d. InsertCommand 10. 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 form b. Chu trình sống c. Giao diện người dùng d. Khả năng lưu trữ dữ liệu 11. 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 subweb b. 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 subweb d. Tạo thư mục vật lý, tạo subweb, tạo thư mục ảo 12. 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_End b. Application_Start, Section_Start, Section_End, Application_End c. Section_Start, Application_Start, Application_End, Section_End d. Section_Start, Section_End, Application_Start, Application_End 13. 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_Dispose b. Page_Load, Page_Init, Page_Unload, Page_Dispose Biên sọan: Dương Thành Phết Trang 137
  • 138. Bài Giảng Môn Lập Trình Website ASP.Net c. Page_Load, Page_Unload, Page_Init, Page_Dispose d. Page_Load, Page_Init, Page_Dispose, Page_Unload 14. Cookie là : a. Một chuỗi kí tự trong dòng địa chỉ web b. Một file nằm trên server c. Một file nằm trên Client d. Một file XML 15. Ứng dụng email như Outlook Express là loại ứng dụng : a. Internet b. Web c. Ngang hàng (peer-to-peer) d. Cả 3 câu trên đều sai 16. Ứng dụng web : a. Chỉ chạy trên một máy đơn b. Có kiến trúc Client/Server c. Là tất cả ứng dụng có sử dụng Internet d. Cả 3 câu trên đều đúng 17. Địa chỉ URL của ứng dụng web được xác định bởi : a. Thư mục ảo của ứng dụng b. Thư mục vật lý của ứng dụng c. Tên của Project d. Cả 3 câu đều sai 18. Ta có thể lưu trữ dữ liệu chung cho tât cả người dùng ở : a. Biến Application b. Biến Section c. View State d. Cả 3 nơi nói trên 19. Dữ liệu trên các control của web form được lưu trữ ở : a. View state b. Biến Application c. Biến Section d. Các biến toàn cục 20. Từ khóa nào không phải là từ khóa thứa kế trong C# : a. new b. protected c. inherit d. override 21. 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 đúng 22. Control Kiểm chứng nào không có trong ASP.NET : a. RequiredValidator b. CompareValidator c. RangeValidator d. CustomValidator 23. Phương thức nào sau đây của Data Set dùng để cập nhật dữ liệu : a. Fill b. AcceptChanges c. RejectChange d. Update 24. Lệnh dùng để hoàn tất một giao dịch là : a. Finish b. Commit c. Rollback d. Update Biên sọan: Dương Thành Phết Trang 138
  • 139. Bài Giảng Môn Lập Trình Website ASP.Net 25. 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 server b. Thông tin được truyền từ server đến client bằng giao thức FTP c. Ứng dụng web không cần phải được cài đặt trên phía client d. Dịch vụ web là một loại ứng dụng Internet 26. Tên của một thư mục ảo có dạng : a. c:myproject b. http://www.mycompany.com/myproject c. aspnet://myproject d. c:myprojectaspnet Biên sọan: Dương Thành Phết Trang 139