Tài liệu khóa học Lập trình ASP.NET
MỤC LỤC
BÀI SỐ 1: MỞ ĐẦU VỀ ASP.NET 7
1.1. Giới thiệu tổng quan công nghệ .NET 7
1.1.1 Sự ra đời của .NET 7
1.1.2 .NET Framework là gì . 8
1.1.3 Một số ưu điểm chính của .NET framework 10
1.2. Giới thiệu ASP.NET 11
1.3. Cài đặt Visual Studio.NET 2008 11
1.3.1 Các phiên bản .NET 11
1.3.2 Cài đặt Visual Studio.NET 2008 11
1.4. Giới thiệu môi trường tích hợp (IDE) của ASP.NET. 12
1.5. Tạo/lưu/mở/chạy ứng dụng ASP.NET 14
1.5.1 Tạo mới 14
1.5.2 Lưu ứng dụng Web 15
1.5.3 Mở (Chạy) ứng dụng 15
1.6. Cơ bản về CSS và DHTML. 16
1.6.1 CSS 16
1.6.2 DHTML 16
1.7. Định dạng các thẻ sử dụng CSS 17
1.7.1 Định dạng ở mức dòng (Inline) 17
1.7.2 Định dạng bởi bộ chọn ID 17
1.7.3 Định dạng bởi bộ chọn thẻ (tag) 17
1.7.4 Định dạng bởi lớp (Class) 18
1.7.5 Vấn đề tổ chức lưu trữ. 20
1.8. Truy xuất thuộc tính các thẻ HTML và CSS bằng JavaScript 20
1.8.1 Truy xuất các thuộc tính của thẻ 20
1.8.2 Truy xuất các thuộc tính CSS 21
BÀI SỐ 2: THỰC HÀNH 23
BÀI SỐ 3: ASP.NET và Web form 33
3.1 Mô hình lập trình phía máy chủ 33
3.2 Cơ chế xử lý file ASP.NET phía máy chủ. 35
3.3 Một số ví dụ minh họa. 37
3.3.1 Yêu cầu xử lý tại phía server thông qua Runat=”Server” 37
3.3.2 Yêu cầu xử lý bên phía server thông qua cặp thẻ <% %> 38
3.3.3 Yêu cầu xử lý bên server thông qua Script 39
3.3.4 Yêu cầu xử lý bên phía server bằng cách đặt trong Code file 39
3.4 Webform trong ASP.NET 40
3.5 Tìm hiểu cấu trúc trang ASP.NET 40
3.6 Code behind và viết code phía Server. 43
3.7 HTML Server Controls và Web controls 44
3.7.1 Giới thiệu 44
3.7.2 Cách thức tạo phần tử HTML Server Control và ASP.NET control 44
BÀI 4: THỰC HÀNH 46
BÀI 5: Tìm hiểu và sử dụng các Server/Ajax Controls 54
5.1 HTML Server Controls 54
5.2 Web server Controls 54
5.2.1 Khai báo (tạo các phần tử web server control) 54
5.2.2 Cơ chế xử lý các phần tử web server control 55
5.2.2 Thực thi các câu lệnh tại phía server 60
5.2.3 Mô hình xử lý sự kiện trong ASP.NET 60
5.3 Ajax Control Toolkit 61
5.3.1 Giới thiệu 61
5.3.2 Hướng dẫn sử dụng một số Ajax Control cơ bản 62
5.4 Thảo luận công nghệ Ajax 63
BÀI 6: THỰC HÀNH 64
BÀI 7: Tạo và sử dụng Custom Control 68
7.1 Giới thiệu User Custom Control 68
7.2 Các bước tạo User Custom control 68
7.3 Thêm các thuộc tính, phương thức và sự kiện vào UCC 70
7.3.1 Thêm thuộc tính vào UCC 70
7.3.2 Thêm phương thức vào UCC 71
7.3.3 Thêm sự kiện vào UC 72
7.4 Truy cập thuộc tính, phương thức của các phần tử con trong UCC. 72
7.5 Minh họa tạo một số điều khiển 74
BÀI 8: THỰC HÀNH 77
BÀI 9: Các đối tượng trong ASP.NET 84
9.1 Request Object 84
9.1.1 Đối tượng Request dùng để làm gì ? 84
9.1.2 Các thành phần (thuộc tính và phương thức) chính 84
9.1.3 Ví dụ sử dụng 84
9.2 Response Object 87
9.1.1 Đối tượng Response dùng để làm gì ? 87
9.1.2 Các thành phần (thuộc tính và phương thức) chính 87
9.1.3 Ví dụ sử dụng 87
9.3 Server Object 88
9.3.1 Đối tượng Server dùng để làm gì ? 88
9.3.2 Các thành phần (thuộc tính và phương thức) chính 88
9.3.3 Ví dụ sử dụng 88
9.4 Session Object 88
9.4.1. Biến Sesstion 88
9.4.2. Đối tượng Session 89
9.5 Application Object 89
9.5.1 Đối tượng Application dùng để làm gì ? 89
9.5.2. Khái niệm biến toàn ứng dụng 89
9.5.3. Đối tượng Application 89
Một số bài tập tổng hợp: 90
BÀI 10: THỰC HÀNH 95
BÀI 11. Truyền dữ liệu giữa các webpage, 95
MasterPage và gỡ rối (Debug) chương trình. 95
11.1 Truyền (Post) dữ liệu giữa các trang bằng mã lệnh C# 95
11.2 Truy xuất đến các phần tử bằng phương thức FindControl 95
11.3 Truy xuất đến trang gửi thông qua thuộc tính PreviousPage. 95
11.4 MasterPage 95
11.5 Gỡ rối 98
11.5.1 Giới thiệu 98
11.5.2 Chạy ứng dụng ở chế độ gỡ rối 98
11.5.3 Khái niệm điểm dừng 98
11.5.4 Chạy từng dòng lệnh với chế độ Step Into (F8) 98
11.5.5 Chạy từng dòng lệnh với chế độ Step Over (Shift-F8) 98
11.5.6 Chạy từng dòng lệnh với chế độ Step Out (Ctrl-Shift-F8) 98
11.2 Sử dụng Custom Error page 98
11.3 Ghi các vết gây lỗi (Trace errors) 98
11.4 Sử dụng công cụ gỡ rối/ Menu Debug 98
11.5 Tracing lỗi ở mức trang/ Mức toàn ứng dụng 98
BÀI 12: THỰC HÀNH 98
BÀI 13: CÔNG NGHỆ ADO.NET 99
13.1 Giới thiệu chung 99
13.2 Kiến trúc của ADO.NET 100
13.3 Các lớp thao tác với CSDL: Connection, Command, . 101
13.3.1 Lớp Connection 101
13.3.2 Lớp Command 103
13.3.3 Lớp DataReader 105
13.3.7 Lớp DataColumn 107
13.3.8 Lớp DataTable 107
13.3.9 Lớp DataRow 108
13.3.10 Lớp DataSet 109
13.3.11 Lớp DataAdapter 109
BÀI 14: THỰC HÀNH 112
BÀI 15: Tìm hiểu và ứng dụng cơ chế Data Binding 119
15.1 Giới thiệu DataBinding 119
15.2 Data Binding 119
15.2.1 Dạng gắn kết dữ liệu đơn (Single DataBinding) 119
15.2.2 Dạng gắn kết dữ liệu có sự lặp lại (Repeated Data Binding) 120
15.3 Các điều khiển Data Source (Data source controls). 122
15.3.1 Giới thiệu về DataSource controls 122
15.3.2 Sử dụng SqlDataSouce để chọn (Select) dữ liệu 123
15.3.3 Sử dụng SqlDataSource để cập nhật dữ liệu 125
15.3.4 Xóa bản ghi trong CSDL bằng SqlDataSource 128
BÀI 16: THỰC HÀNH 130
BÀI 17: Làm việc với GridView 134
17.1 Giới thiệu tổng quan 134
17.2 Tìm hiểu lớp GridView 134
17.2.1 Các thuộc tính và cột thuộc tính 134
17.2.2 Các style áp dụng cho GridView 135
17.2.3 Các sự kiện 136
17.2.4 Các phương thức 137
17.3 Các tính năng hỗ trợ của GridView 138
17.3.1 Phân trang 138
17.3.2 Tính năng tự động sắp xếp 140
17.3.3 Các mẫu hiển thị - Template 141
17.4 Tạo các cột tùy biến HyperLink, BoundColunm 142
17.4.1 Tạo cột BoundField thủ công 142
17.4.2 Tạo một cột hyperlink 142
17.5 Tạo và xử lý các cột Select, Edit, Delete, Update 145
17.5.1 Thêm cột Select, Edit - Update, Delete 145
17.5.2 Cập nhật dữ liệu 146
17.5.3 Xóa dữ liệu 147
BÀI 18: THỰC HÀNH 149
BÀI 19: Sử dụng Templates 156
19.1 Giới thiệu tổng quan 156
19.2 Các điều khiển hỗ trợ Templates 156
19.3 Repeate control, DataList control, GridView control 157
19.4 Tạo Template & kết hợp với Repeater/Data control Error! Bookmark not defined.
19.5 Một số ví dụ mẫu. Error! Bookmark not defined.
BÀI 20: THỰC HÀNH 162
iew ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="false" AllowPaging="true"> <asp:image runat="server" ImageUrl='' Width="100px" Height="100px" /> Ví dụ 6: Hiển thị dữ liệu trong một cột ……….. Như ví dụ 5 …………………………………………………………………………………………… <asp:GridView ID="GridView1" runat="server" Width="100%" DataSourceID="SqlDataSource1" ShowHeader="false" AutoGenerateColumns="false" AllowPaging="true"> Họ và tên: Tên đăng nhập: Quyền hạn : Trạng thái: Hình ảnh : <asp:Image runat="server" ImageUrl='' /> ……….. Như ví dụ 5 …………………………………………………………………………………………… Cập nhật dữ liệu Để cho phép sửa dữ liệu của một trường, ta cần đặt thuộc tính text của trường đó vào trong phương thức Bind, dạng như sau: <asp:TextBox Text='' runat="server" id="textBox"/> Ví dụ 7: Cập nhật hồ sơ cán bộ (Chỉ cập nhật trường "Bản thân") ……….. Như ví dụ 5 ……………………………………………………………………………………… <asp:GridView ID="GridView1" runat="server" Width="100%" DataSourceID="SqlDataSource1" DataKeyNames="MaCanBo" AutoGenerateColumns="false" AllowPaging="true"> Họ và tên: Mã Cán bộ: Ngày sinh : Địa chỉ: Bản thân : Họ và tên: Mã Cán bộ: Ngày sinh : Địa chỉ: Bản thân : '> ……….. Như ví dụ 5 ……………………………………………………………………………………… 19.3.2 Tạo template với DataList DataList cho phép ta hiển thị dưới dạng danh sách. Danh sách này có thể chia làm nhiều cột như một số ứng dụng thường thấy trên Internet. Ví dụ 8: Hiển thị ảnh như hình trên; ……………………………………………………………………………………………………………… <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="" SelectCommand="SELECT * FROM tblUser"> <asp:DataList runat="server" ID="DataList1" DataSourceID="SqlDataSource1" RepeatDirection="Horizontal" RepeatColumns="3" RepeatLayout="Table"> Họ và tên: Quyền hạn : <asp:Image ID="Image1" Width="100px" Height="100px" runat="server" ImageUrl= '' /> ……………………………………………………………………………………………………………… Kết quả sau khi chạy trang ở trên 19.3.3 Tạo Template với Repeater (light-weight) Repeater cũng là một điều khiển có khả năng hiển thị dữ liệu dưới dạng danh sách. Khi được gắn với nguồn dữ liệu, nó sẽ lần lượt thực thi nội dung nằm trong phần Template mỗi khi một bản ghi được đọc từ nguồn. Tuy điều khiển này không có khả năng phân trang, sắp xếp như GridView như nó là một điều khiển chiếm ít tài nguyên của hệ thống (vì vậy được gọi là điều khiển Light-weight), do đó chúng ta có thể dùng trong những trường hợp mà ở đó tài nguyên đóng vai trò quan trọng. Repeater cho phép chúng ta tùy biến các mục tương tự như GridView và DataList, đó là sử dụng Template. Ví dụ 9: Hiển thị họ tên và ảnh minh họa người dùng trong bảng tblUser sử dụng điều khiển Repeater. Hiển thị danh sách người dùng <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="" SelectCommand="SELECT * FROM tblUser"> <asp:Repeater runat="server" ID="rptDSND" DataSourceID="SqlDataSource1"> Họ và tên: <asp:Image runat="server" ImageUrl='' Width="100px" Height="100px" /> 20. Đóng gói website Sau khi hoàn tất dự án thì một khâu quan trọng nữa cần phải thực hiện để đảm bảo vấn đề bản quyền đó là biên dịch và xuất bản ứng dụng web. Việc xuất bản (Publish) ứng dụng sẽ giúp biên dịch các file code behind (file CS) thành các assemblies (file DLL). Khi đó, ứng dụng chạy sẽ nhanh hơn và bảo mật hơn. Để xuất bản web, Right click vào Tên của Solution và chọn mục Publish. Sau đó một hộp thoại hiện ra cho phép ta chọn thư mục sẽ lưu kết quả. Ứng dụng được biên dịch này có thể copy vào Server để thực thi. BÀI 20: THỰC HÀNH Mục tiêu: Kết thúc bài học này, học viên có thể Sử dụng được tính năng Template để trình diễn và cập nhật dữ liệu theo yêu cầu Sử dụng được DataList để trình diễn dữ liệu dưới dạng cột. Sử dụng ListView kết hợp với DataPager để hiển thị và duyệt các bản ghi. Nội dung: Bài 1: Hiển thị danh sách cán bộ (bao gồm họ tên, địa chỉ, điện thoại) trong bảng tblCanBo. Trong đó Họ tên chữ đậm. Hướng dẫn: Đặt thuộc tính AutoGenerateColumns = "false" Tự tạo các cột cho GridView bằng cặp thẻ … Đặt nội dung cần hiển thị (ở đây là Họ tên, địa chỉ, điện thoại) vào các cột bằng cách đặt bên trong cặp thẻ Danh sách cán bộ Minh họa: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ThongTinCanBo.aspx.cs" Inherits="Lession_20_ThongTinCanBo" %> Thông tin về cán bộ <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="" SelectCommand="SELECT * FROM tblCanBo"> <asp:GridView runat="server" ID="DSCB" DataSourceID="SqlDataSource1" AutoGenerateColumns="false"> Bài 2: Bổ sung thêm trường Photo vào bảng tblCanBo, trường Photo này sẽ lưu đường dẫn tới file ảnh của mỗi cán bộ. Sau đó xây dựng trang web hiển thị thông tin cán bộ (bao gồm các trường Họ tên, địa chỉ và ảnh tương ứng). Hướng dẫn: Vì trường Photo đã chứa đường dẫn đến file ảnh rồi, vì vậy để hiển thị hình ảnh thay vì văn bản text thuần túy, ta sẽ tạo thêm phần tử , trong đó thuộc tính ImageUrl sẽ được gán giá trị của trường Photo tương ứng. cụ thể là : ' /> Để đặt kích thước ảnh như nhau, có thể thêm thuộc tính Width và Height Trước giá trị cần có thêm cặp dấu nháy đơn để đảm bảo tính đúng đắn khi đường dẫn ảnh chứa dấu cách. Yêu cầu về giao diện Minh họa: <asp:GridView runat="server" ID="DSCB" Width="100%" GridLines="Both" DataSourceID="SqlDataSource1" AutoGenerateColumns="false"> <asp:Image runat="server" Width="100px" Height="100px" ImageUrl='' /> Bài 3: Hiển thị danh sách cán bộ dạng chi tiết. Thông tin được dàn trang theo chiều dọc (Flow). Hướng dẫn: Tạo một cột duy nhất, nhưng mỗi dòng của cột đó sẽ chứa tất cả các trường thông tin cần hiển thị. Với mỗi hàng được tạo ra, ta sẽ đặt vào một table có kích thước cố định, bảng này có 1 hàng và 2 cột. Cột thứ nhất sẽ chứa thông tin ở dạng text như họ tên, địa chỉ, điện thoại và mô tả bản thân. Cột thứ hai sẽ hiển thị hình ảnh tương ứng. Kết quả Minh họa: <asp:GridView runat="server" ID="DSCB" Width="100%" GridLines="None" DataSourceID="SqlDataSource1" AutoGenerateColumns="false"> Cột 1 Cột 2 <asp:Image runat="server" Width="100px" Height="100px" ImageUrl='' /> Bài 3: Hiển thị danh sách người dùng dưới dạng Flow (tuyến tính) như bài 3, nhưn có thêm chức năng cập nhật và Delete. THông tin hiển thị gồm Họ tên, Địa chỉ, Điện thoại. Trong đó, trường địa chỉ sẽ hiển thị ở dạng Text Multiline khi sửa. Hướng dẫn: Tạo các template như bài 3, nhưng thêm 2 command là Edit và Delete. Trong đó các trường muốn sửa chữa sẽ đặt vào các Textbox và dùng hàm . Minh họa: Kết quả. Cập nhật danh sách cán bộ <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="" SelectCommand="SELECT * FROM tblCanBo" UpdateCommand="Update tblCanBo SET HoVaTen=@HoVaTen, DiaChi=@DiaChi, SoDienThoai=@SoDienThoai Where MaCanBo=@MaCanBo" DeleteCommand="Delete tblCanBo where MaCanBo=@MaCanBo"> <asp:GridView runat="server" ID="DSCB" Width="100%" GridLines="both" DataKeyNames="MaCanBo" DataSourceID="SqlDataSource1" AutoGenerateColumns="false"> Phần template cho chế độ thường (chưa sửa) Địa chỉ: Điện thoại: Họ tên: <asp:TextBox runat="server" ID="txtHVT" Width="98%" Text= '' > Phần template cho chế độ soạn thảo (edit mode) Địa chỉ: <asp:TextBox runat="server" ID="txtDC" Width="98%" TextMode="MultiLine" Rows="5" Text=''> Điện thoại: <asp:TextBox runat="server" ID="txtDT" Width="98%" Text= ''> <asp:CommandField HeaderText="Sửa chữa" EditText=" Sửa" UpdateText="Lưu" ButtonType="Link" CancelText=" Hủy bỏ" ShowEditButton="true" /> <asp:CommandField HeaderText="Xóa" DeleteText=" Xóa" ButtonType="Link" ShowDeleteButton="true" /> Bài 4: Hiển thị thông tin trích ngang về người dùng trong bảng tblUser, trong đó dưới mỗi người dùng thêm một Hyperlink là "Xem chi tiết" để khi người dùng click vào hyperlink này thì mở trang UserDetail.aspx và hiển thị chi tiết thông tin về người dùng đó. Yêu cầu thêm: Danh sách này hiển thị làm 3 cột. Hướng dẫn: Để hiển thị thông tin dưới dạng cột, ta sử dụng điều khiển DataList. Trong mỗi Hyperlink ta sẽ tạo liên kết đến trang UserDetail.aspx và truyền cho trang này ID (trong trường hợp này là TenDangNhap) của người dùng tương ứng. Dựa vào ID này, trang UserDetail.aspx sẽ đọc (dùng Request.QueryString["TenNguoiDung"]) sau đó select thông tin ứng với ID đó và hiển thị. Minh họa: Danh sách cán bộ <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="" SelectCommand="SELECT * FROM tblUser"> <asp:DataList runat="server" ID="DataList1" DataSourceID="SqlDataSource1" RepeatDirection="Horizontal" RepeatColumns="3" RepeatLayout="Table"> Quyền hạn : <asp:Image Width="100px" Height="100px" runat="server" ImageUrl= '' /> '> Xem chi tiết Kết quả. Bài 4: Hiển thị danh sách người dùng dưới dạng cột và thực hiện phân trang. Hướng dẫn: Để thực hiện tạo các cột, có thể sử dụng điều khiển DataList, ngoài ra ta còn một điều khiển khác cũng rất mạnh cho phép hiển thị dưới dạng các cột nhưng có thêm khả năng phân trang, đó là: ListView controls. Các bước thực hiện: B1. Tạo nguồn dữ liệu SqlDataSource như những bài trước. B2. Tạo một ListView và gắn với nguồn dữ liệu SqlDataSource (như bài trước) B3. Cấu hình cho ListView (chọn smart tag), sau đó click chọn "Config ListView…" B4: Chọn các thông số như hình bên dưới. B5: Mở trang web. Lưu ý: Chúng ta hoàn toàn có thể thay đổi format của ListView bằng các vào Source code editor để sửa. Một cách phân trang khác là tạo một DataPager và gắn vào ListView, Khi đó ta chỉ cần đặt thuộc tính PagedControlID="ListView1". Cách này có ưu điểm là phần trang có thể đặt ở bất kỳ vị trí nào trên màn hình. Kết quả hiển thị
File đính kèm:
- Tài liệu khóa học Lập trình ASP.NET.doc