1. Trang chủ
  2. » Luận Văn - Báo Cáo

CÔNG NGHỆ WEB NÂNG CAO XÂY DỰNG WEBSITES VỚI ASP.NET 2.0

93 367 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 93
Dung lượng 1,82 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỤC LỤC Chƣơng 1. PHÂN TÍCH THIẾT KẾ DATABASE ........................................................... 6 1.1. YÊU CẦU HỆ THỐNG .............................................................................................. 6 1.2. THIẾT KẾ DATABASE ............................................................................................. 6 1.2.1. Diagram ................................................................................................................... 6 1.2.2. Bảng chủ đề: tbChuDe ............................................................................................. 6 1.2.3. Bảng nhà xuất bản: tbNhaXuatBan ......................................................................... 6 1.2.4. Bảng sách: tbSach .................................................................................................... 7 1.2.5. Bảng tác giả: tbTacGia ............................................................................................ 7 1.2.6. Bảng khách hàng: tbKhachHang ............................................................................. 7 1.2.7. Bảng đơn đặt hàng: tbDonHang .............................................................................. 7 1.2.8. Bảng chi tiết đặt hàng: tbCTDonHang .................................................................... 8 1.2.9. Bảng chi tiết đặt hàng: tbNhanVien ........................................................................ 8 1.3. STORE PROCEDURE ............................................................................................... 8 1.3.1. Xây dựng Store Procedure Insert ............................................................................. 8 1.3.2. Xây dựng Store Procedure Update .......................................................................... 9 1.3.3. Xây dựng Store Procedure Delete ......................................................................... 10 1.3.4. Xây dựng Store Procedure GET ............................................................................ 11 1.4. MỘT SỐ ĐỒ ÁN ...................................................................................................... 13 Chƣơng 2. XÂY DỰNG MÔ HÌNH 3 LAYER ............................................................... 14 2.1. TẠO MÔ HÌNH PROJECT ...................................................................................... 14 2.1.1. Tạo Solution .......................................................................................................... 14 2.1.2. Tạo Project Data Object Transfer .......................................................................... 15 2.1.3. Tạo Project Data Access Layer ............................................................................. 16 2.1.4. Tạo Project Busineess ............................................................................................ 17 2.1.5. Tạo Website ........................................................................................................... 17 2.1.6. Tạo File Web.Config cho Web Site ....................................................................... 18 2.1.7. Tạo Reference ........................................................................................................ 19 2.2. XÂY DỰNG ĐỐI TƢỢNG DATA TRANSFER..................................................... 22 2.2.1. Xây dựng class Entities ......................................................................................... 22 2.2.2. Tip: Cách xây dựng nhanh đối tƣợng Data Access Transfer ................................ 25 2.2.3. Xây dựng enum Columns ...................................................................................... 27 2.2.4. Xây dựng lớp Collection ....................................................................................... 28 P a g e | 3 2.3. XÂY DỰNG LỚP DATA ACCESS ......................................................................... 28 2.3.1. Thuộc Tính SqlConnection .................................................................................... 28 2.3.2. Phƣơng thức khởi tạo............................................................................................. 28 2.3.3. Phƣơng thức Insert................................................................................................. 29 2.3.4. Phƣơng thức Update .............................................................................................. 30 2.3.5. Phƣơng thức Delete ............................................................................................... 30 2.3.6. Phƣơng thức Get .................................................................................................... 31 2.4. XÂY DỰNG LỚP BUSINESS ................................................................................. 33 2.4.1. Phƣơng thức Insert................................................................................................. 33 2.4.2. Phƣơng thức Update .............................................................................................. 33 2.4.3. Phƣơng thức Delete ............................................................................................... 34 2.4.4. Phƣơng thức Get .................................................................................................... 34 2.4.5. Phƣơng thức GetAll ............................................................................................... 34 2.4.6. Phƣơng thức GetByID ........................................................................................... 35 Chƣơng 3. XÂY DỰNG PHÂN HỆ QUẢN LÝ ............................................................. 36 3.1. TẠO TRANG MASTER PAGE ............................................................................... 36 3.1.1. Tạo trang Master Page ........................................................................................... 36 3.1.2. Thiết kế giao diện cho trang Master Page ............................................................. 37 3.1.3. Kiểm tra đăng nhập ................................................................................................ 37 3.2. XÂY DỰNG CHỨC NĂNG ĐĂNG NHẬP ............................................................ 38 3.2.1. Thiết kế giao diện cho trang đăng nhập ................................................................. 38 3.2.2. Xử lý đăng nhập .................................................................................................... 39 3.3. XÂY DỰNG CHỨC NĂNG XEM DANH SÁCH SẢN PHẨM ............................. 40 3.3.1. Tạo trang danh sách sản phẩm ............................................................................... 40 3.3.2. Thiết kế giao diện .................................................................................................. 41 3.3.3. Xử lý Page Load .................................................................................................... 44 3.3.4. Xử lý chức năng phân trang ................................................................................... 47 3.3.5. Chức năng xóa ....................................................................................................... 48 3.3.6. Chức năng tìm kiếm .............................................................................................. 48 3.4. XÂY DỰNG CHỨC NĂNG THÊM SẢN PHẨM ................................................... 48 3.4.1. Thiết kế giao diện cho trang thêm sản phẩm ......................................................... 48 3.4.2. Xử lý tải dữ liệu ..................................................................................................... 50 3.4.3. Xử lý thêm sản phẩm ............................................................................................. 51 P a g e | 4 3.5. XÂY DỰNG CHỨC NĂNG CHỈNH SỬA SẢN PHẨM ........................................ 52 3.5.1. Thiết kế giao diện cho trang chỉnh sửa sản phẩm .................................................. 52 3.5.2. Xử lý Page Load .................................................................................................... 55 3.5.3. Xử lý chỉnh sửa sản phẩm ..................................................................................... 56 3.6. XÂY DỰNG CHỨC NĂNG XEM DANH SÁCH ĐƠN HÀNG ............................ 57 3.6.1. Thiết kế giao diện .................................................................................................. 57 3.6.2. Xử lý tải dữ liệu ..................................................................................................... 59 3.6.3. Xử lý phân trang .................................................................................................... 61 3.7. XÂY DỰNG CHỨC NĂNG XEM CHI TIẾT ĐƠN HÀNG ................................... 61 3.7.1. Thiết kế giao diện .................................................................................................. 61 3.7.2. Xử lý tải dữ liệu ..................................................................................................... 65 3.7.3. Xử lý phân trang .................................................................................................... 67 Chƣơng 4. XÂY DỰNG PHÂN HỆ NGƢỜI DÙNG...................................................... 68 4.1.1. TẠO TRANG MASTER PAGE............................................................................ 68 4.1.2. Thiết kế giao diện .................................................................................................. 68 4.1.3. Xử lý tải dữ liệu ..................................................................................................... 72 4.1.4. Xử lý thoát khỏi hệ thống ...................................................................................... 73 4.2. XÂY DỰNG TRANG CHỦ ..................................................................................... 73 4.2.1. Thiết kế giao diện .................................................................................................. 73 4.2.2. Xử lý tải dữ liệu ..................................................................................................... 74 4.3. XÂY DỰNG TRANG DANH SÁCH SẢN PHẨM THEO CHỦ ĐỀ ..................... 75 4.3.1. Thiết kế giao diện .................................................................................................. 75 4.3.2. Xử lý tải dữ liệu ..................................................................................................... 76 4.3.3. Phân trang .............................................................................................................. 77 4.4. XÂY DỰNG TRANG CHI TIẾT SẢN PHẨM........................................................ 78 4.4.1. Thiết kế giao diện .................................................................................................. 78 4.4.2. Xử lý tải dữ liệu ..................................................................................................... 81 4.4.3. Xử lý thêm vào giỏ hàng ....................................................................................... 82 4.5. XÂY DỰNG CHỨC NĂNG ĐĂNG KÝ ................................................................. 82 4.5.1. Thiết kế giao diện .................................................................................................. 82 4.5.2. Xử lý đăng ký ........................................................................................................ 84 4.6. XÂY DỰNG CHỨC NĂNG ĐĂNG NHẬP ............................................................ 85 4.6.1. Thiết kế giao diện .................................................................................................. 85 P a g e | 5 4.6.2. Xử lý đăng nhập .................................................................................................... 86 4.7. XÂY DỰNG CHỨC NĂNG GIỎ HÀNG ................................................................ 86 4.7.1. Xây dựng giỏ hàng ................................................................................................ 86 4.7.2. Thiết kế giao diện .................................................................................................. 88 4.7.3. Xử lý tải dữ liệu ..................................................................................................... 90 4.8. XÂY DỰNG CHỨC NĂNG ĐẶT HÀNG ............................................................... 91 4.8.1. Thiết kế giao diện .................................................................................................. 91 4.8.2. Xử lý chức năng đặt hàng ...................................................................................... 92

Trang 1

Khoa Công Nghệ Thông Tin

    

CÔNG NGHỆ WEB NÂNG CAO XÂY DỰNG WEB SITES VỚI ASP.NET 2.0

Hồ Chí Minh, 7/2011

Trang 2

MỤC LỤC

Chương 1 PHÂN TÍCH THIẾT KẾ DATABASE 6

1.1 YÊU CẦU HỆ THỐNG 6

1.2 THIẾT KẾ DATABASE 6

1.2.1 Diagram 6

1.2.2 Bảng chủ đề: tbChuDe 6

1.2.3 Bảng nhà xuất bản: tbNhaXuatBan 6

1.2.4 Bảng sách: tbSach 7

1.2.5 Bảng tác giả: tbTacGia 7

1.2.6 Bảng khách hàng: tbKhachHang 7

1.2.7 Bảng đơn đặt hàng: tbDonHang 7

1.2.8 Bảng chi tiết đặt hàng: tbCTDonHang 8

1.2.9 Bảng chi tiết đặt hàng: tbNhanVien 8

1.3 STORE PROCEDURE 8

1.3.1 Xây dựng Store Procedure Insert 8

1.3.2 Xây dựng Store Procedure Update 9

1.3.3 Xây dựng Store Procedure Delete 10

1.3.4 Xây dựng Store Procedure GET 11

1.4 MỘT SỐ ĐỒ ÁN 13

Chương 2 XÂY DỰNG MÔ HÌNH 3 LAYER 14

2.1 TẠO MÔ HÌNH PROJECT 14

2.1.1 Tạo Solution 14

2.1.2 Tạo Project Data Object Transfer 15

2.1.3 Tạo Project Data Access Layer 16

2.1.4 Tạo Project Busineess 17

2.1.5 Tạo Website 17

2.1.6 Tạo File Web.Config cho Web Site 18

2.1.7 Tạo Reference 19

2.2 XÂY DỰNG ĐỐI TƯỢNG DATA TRANSFER 22

2.2.1 Xây dựng class Entities 22

2.2.2 Tip: Cách xây dựng nhanh đối tượng Data Access Transfer 25

2.2.3 Xây dựng enum Columns 27

2.2.4 Xây dựng lớp Collection 28

Trang 3

2.3 XÂY DỰNG LỚP DATA ACCESS 28

2.3.1 Thuộc Tính SqlConnection 28

2.3.2 Phương thức khởi tạo 28

2.3.3 Phương thức Insert 29

2.3.4 Phương thức Update 30

2.3.5 Phương thức Delete 30

2.3.6 Phương thức Get 31

2.4 XÂY DỰNG LỚP BUSINESS 33

2.4.1 Phương thức Insert 33

2.4.2 Phương thức Update 33

2.4.3 Phương thức Delete 34

2.4.4 Phương thức Get 34

2.4.5 Phương thức GetAll 34

2.4.6 Phương thức GetByID 35

Chương 3 XÂY DỰNG PHÂN HỆ QUẢN LÝ 36

3.1 TẠO TRANG MASTER PAGE 36

3.1.1 Tạo trang Master Page 36

3.1.2 Thiết kế giao diện cho trang Master Page 37

3.1.3 Kiểm tra đăng nhập 37

3.2 XÂY DỰNG CHỨC NĂNG ĐĂNG NHẬP 38

3.2.1 Thiết kế giao diện cho trang đăng nhập 38

3.2.2 Xử lý đăng nhập 39

3.3 XÂY DỰNG CHỨC NĂNG XEM DANH SÁCH SẢN PHẨM 40

3.3.1 Tạo trang danh sách sản phẩm 40

3.3.2 Thiết kế giao diện 41

3.3.3 Xử lý Page Load 44

3.3.4 Xử lý chức năng phân trang 47

3.3.5 Chức năng xóa 48

3.3.6 Chức năng tìm kiếm 48

3.4 XÂY DỰNG CHỨC NĂNG THÊM SẢN PHẨM 48

3.4.1 Thiết kế giao diện cho trang thêm sản phẩm 48

3.4.2 Xử lý tải dữ liệu 50

3.4.3 Xử lý thêm sản phẩm 51

Trang 4

3.5 XÂY DỰNG CHỨC NĂNG CHỈNH SỬA SẢN PHẨM 52

3.5.1 Thiết kế giao diện cho trang chỉnh sửa sản phẩm 52

3.5.2 Xử lý Page Load 55

3.5.3 Xử lý chỉnh sửa sản phẩm 56

3.6 XÂY DỰNG CHỨC NĂNG XEM DANH SÁCH ĐƠN HÀNG 57

3.6.1 Thiết kế giao diện 57

3.6.2 Xử lý tải dữ liệu 59

3.6.3 Xử lý phân trang 61

3.7 XÂY DỰNG CHỨC NĂNG XEM CHI TIẾT ĐƠN HÀNG 61

3.7.1 Thiết kế giao diện 61

3.7.2 Xử lý tải dữ liệu 65

3.7.3 Xử lý phân trang 67

Chương 4 XÂY DỰNG PHÂN HỆ NGƯỜI DÙNG 68

4.1.1 TẠO TRANG MASTER PAGE 68

4.1.2 Thiết kế giao diện 68

4.1.3 Xử lý tải dữ liệu 72

4.1.4 Xử lý thoát khỏi hệ thống 73

4.2 XÂY DỰNG TRANG CHỦ 73

4.2.1 Thiết kế giao diện 73

4.2.2 Xử lý tải dữ liệu 74

4.3 XÂY DỰNG TRANG DANH SÁCH SẢN PHẨM THEO CHỦ ĐỀ 75

4.3.1 Thiết kế giao diện 75

4.3.2 Xử lý tải dữ liệu 76

4.3.3 Phân trang 77

4.4 XÂY DỰNG TRANG CHI TIẾT SẢN PHẨM 78

4.4.1 Thiết kế giao diện 78

4.4.2 Xử lý tải dữ liệu 81

4.4.3 Xử lý thêm vào giỏ hàng 82

4.5 XÂY DỰNG CHỨC NĂNG ĐĂNG KÝ 82

4.5.1 Thiết kế giao diện 82

4.5.2 Xử lý đăng ký 84

4.6 XÂY DỰNG CHỨC NĂNG ĐĂNG NHẬP 85

4.6.1 Thiết kế giao diện 85

Trang 5

4.6.2 Xử lý đăng nhập 86

4.7 XÂY DỰNG CHỨC NĂNG GIỎ HÀNG 86

4.7.1 Xây dựng giỏ hàng 86

4.7.2 Thiết kế giao diện 88

4.7.3 Xử lý tải dữ liệu 90

4.8 XÂY DỰNG CHỨC NĂNG ĐẶT HÀNG 91

4.8.1 Thiết kế giao diện 91

4.8.2 Xử lý chức năng đặt hàng 92

Trang 6

Chương 1 PHÂN TÍCH THIẾT KẾ DATABASE

1.1 YÊU CẦU HỆ THỐNG

1.2 THIẾT KẾ DATABASE

1.2.1 Diagram

1.2.2 Bảng chủ đề: tbChuDe

TenChuDe nVarchar(255) Not Null

1.2.3 Bảng nhà xuất bản: tbNhaXuatBan

DiaChi nVarchar(255)

DienThoai nVarchar(15)

Trang 7

1.2.4 Bảng sách: tbSach

TenSach nVarchar(255) Not Null

DiaChi nVarchar(255)

DienThoai nVarchar(255)

1.2.6 Bảng khách hàng: tbKhachHang

Trang 8

1.2.8 Bảng chi tiết đặt hàng: tbCTDonHang

MaCTDonHang Int (Autonumber)

1.2.9 Bảng chi tiết đặt hàng: tbNhanVien

MaCTDonHang Int (Autonumber)

1.3.1 Xây dựng Store Procedure Insert

Để thêm dữ liệu vào bảng tbSach chúng ta cần khai báo các tham số @TenSach,

@DonGia, @MoTa, @HinhMinhHoa, @MaCD, @MaNXB, @NgayCapNhat,

@SoLuongBan, @SoLanXem, @MaTG cho Store Procedure mang tên

sp_tbSach_Insert Chúng ta không cần nhận vào nội dung của trường MaSach vì đã thiết lập thuộc tính tự tăng cho trường MaSach

Trang 9

Sau khi nhận được các tham số, Store Procedure tiến hành câu lệnh INSERT các dữ

liệu đã nhận được vào cơ sở dữ liệu

Sau đây là nội dung của Store Procedure Insert của table tbSach

ALTER PROCEDURE dbo.sp_tbSach_Insert

1.3.2 Xây dựng Store Procedure Update

Ngoài những tham số nhận vào giá trị của trường cần thay đổi @TenSach,

@DonGia, @MoTa, @HinhMinhHoa, @MaCD, @MaNXB, @NgayCapNhat,

@SoLuongBan, @SoLanXem, @MaTG, chúng ta cần phải truyền vào @MaSach để xác định thay đổi sản phẩm nào trong cơ sở dữ liệu

Store Procedure Update tiến hành cập nhật các thay đổi bằng câu lệnh UPDATE Sau đây là nội dung của Store Procedure Update

Trang 10

CREATE PROCEDURE dbo.sp_tbSach_Update

WHERE @MaSach = @MaSach

1.3.3 Xây dựng Store Procedure Delete

Để xóa một sản phẩm từ bảng tbSach, Store Procedure Delete cần khai báo tham

số @MaSach để truyền vào khóa chính của sản phẩm cần xóa

Sau khi nhận đƣợc khóa chính của sản phẩm cần xóa thì Store Procedure Delete tiến

hành kiểm tra đối tƣợng sách cần xóa đã đƣợc sử dụng ở các bảng có khóa ngoại đến tbSach Nếu chƣa đƣợc sử dụng thì Store Procedure sẽ tiến hành xóa đối tƣợng cần xóa Ngƣợc lại Store Procedure sẽ không xóa đối tƣợng đó Sau đây là nội dung của Store

Procedure Delete

ALTER PROCEDURE dbo.sp_tbSach_Delete

Trang 11

@MaSach INT

AS

DECLARE @TOTAL INT

SELECT @TOTAL = COUNT (*) FROM tbCTDonHang

WHERE MaSach = @MaSach

Hai tham số @PageIndex (trang hiện tại) và @PageSize (số dòng /trang) dùng để phân trang cho Store Procedure GET

Để lấy dữ liệu đã được sắp xếp, chúng ta cần khai báo 2 tham số là @OrderBy và

@OrderDirection lần lượt quy định sắp sếp theo cột nào và sắp xếp theo thứ tự tăng hay

giảm dần

Tham số @TotalRecords không phải là tham số INPUT mà là tham số OUTPUT

Tham số này sẽ truyền lại cho chương trình biết là có bao nhiêu sản phẩm thỏa điều kiện

@Where truyền vào

Sau khi nhận được đầy đủ các tham số kể trên, Store Procedure tiến hành tạo bảng

tạm mang tên #Temp(IDTemp, MaSach) Trường IDTemp có kiểu dữ liệu là INT tự tăng khi INSERT, và là khóa chính của bảng #Temp Trường IDTemp còn được tạo ra để phục vụ mục đích phân trang, vì các giá trị của chúng là liên tiếp nhau Trường MaSach của bảng #Temp dùng để lưu MaSach của tất cả các sản phẩm thỏa điều kiện @Where

Chương trình thành lập câu lệnh @sql tìm kiếm tất các sản phẩm thỏa điều kiện

@Where, sắp sếp theo cột @OrderBy và theo thứ tự @OrderDirection Lấy trường MaSach

Trang 12

của tất cả các sản phẩm thỏa điều kiện đó, insert vào bảng #Temp Lúc này trong bảng #Temp chúng ta có được MaSach của tất cả các sản phẩm thỏa điều kiện và được sắp sếp theo các tham số truyền vào, đồng thời cũng có được cột IDTemp chứa các giá trị liên tiếp nhau

Vì bảng #Temp chưa tất cả MaSach của các sản phẩm thỏa điều kiện @Where nên muốn có được tham số @TotalRecord chúng ta chỉ cần đếm số dòng của bảng #Temp

Chương trình sẽ lấy những thông tin cần thiết từ bảng #Temp JOIN với bảng tbSach với điều kiện JOIN là #Temp.MaSach = tbProduct.Masach Nếu @PageIndex truyền vào là

0 thì chương trình sẽ lấy tất cả sản phẩm có trong bảng #Temp Ngược lại, nếu @PageIndex

khác 0 thì chương trình sẽ tiến hành phân trang

Cuối cùng chúng ta xóa bảng #Temp Sau đây là nội dung của Store Procedure

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

CREATE TABLE #Temp (

IDTemp INT IDENTITY (1,1),

MaSach INT

)

DECLARE @sql NVARCHAR (1000)

SET @sql = 'INSERT INTO #temp ([MaSach]) SELECT [MaSach] FROM

tbSach ' + @Where + ' ORDER BY ' + @OrderBy + ' ' + @OrderDirection

Trang 13

(T.IDTemp > (@PageIndex - 1) * @PageSize AND

T.IDTemp <= @PageIndex * @PageSize)

DROP TABLE #temp

1.4 MỘT SỐ ĐỒ ÁN

Trang 14

Chương 2 XÂY DỰNG MÔ HÌNH 3 LAYER

2.1 TẠO MÔ HÌNH PROJECT

2.1.1 Tạo Solution

Khởi động chương trình Visual Studio 2005

New  Project Other Project Type  Visual Studio Solutions  Blank Solution

Nhập tên và chọn đường dẫn cho solution, sau đó nhấn vào nút “OK”

Trang 15

2.1.2 Tạo Project Data Object Transfer

Từ cửa sổ Solution Explorer, nhấp chuột phải vào Solution  Add  New Project

Trong khung Add New Project, chọn loại project là Class Library, đặt tên cho project là Entities, chọn đường dẫn và nhấn vào nút ”OK”

Trang 16

2.1.3 Tạo Project Data Access Layer

Lặp lại các bước như tạo project Entities Đặt tên cho project này là DAL

Trang 17

2.1.4 Tạo Project Busineess

Lặp lại các bước như tạo project Entities Đặt tên cho project này là BUS

2.1.5 Tạo Website

Từ cửa số Solution Explorer, nhấp chuột phải vào solution  Add  New Web Site

Trang 18

Trong khung Add New Web Site, chọn loại Web Site là ASP.NET Web Site, thƣ mục để chứa Web Site và ngôn ngữ là Visual C# Sau đó nhấn nút “OK”

2.1.6 Tạo File Web.Config cho Web Site

Từ cửa sổ Solution Explorer, chọn chuột phải vào Project Web Site  Add New Item…

Trong khung Add New Item, chọn loại file là Web Configuration File và nhấn vào nút “Add”

Trang 19

Chúng ta thêm chuỗi kết nối cơ sở dữ liệu vào file Web.config vừa tạo ra

< connectionStrings >

< add name = strConnection " connectionString = " Data

Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;I ntegrated Security=True;User Instance=True " />

</ connectionStrings >

2.1.7 Tạo Reference

2.1.7.1 Reference của DAL

Lớp Data Access Layer bắt buộc phải thêm reference tới đối tƣợng Data Objects Transfer

Từ cửa sổ Solution Explorer, nhấp chuột phải vào thƣ mục Reference của project DAL  Add Reference

Trang 20

Trong khung Add Reference, chọn tab Project, chọn Project Data Object Transfer, sau đó nhấn vào nút “OK”

2.1.7.2 Reference của BUS

Lớp Business bắt buộc phải thêm reference tới đối tƣợng Data Objects Transfer và Data Access Layer

Từ cửa sổ Solution Explorer, nhấp chuột phải vào thƣ mục Reference của project BUS  Add Reference

Trang 21

Trong khung Add Reference, chọn tab Project, chọn Project Data Object Transfer

và project Data Access Layer sau đó nhấn vào nút “OK”

2.1.7.3 Reference của Web Site

Lớp Presentation (Web Site) bắt buộc phải thêm reference tới đối tƣợng Business Layer, Data Objects Transfer và Data Access Layer

Từ cửa sổ Solution Explorer, nhấp chuột phải vào Web Site  Add Reference

Trang 22

Trong khung Add Reference, chọn tab Project, chọn project Business Layer, project Data Object Transfer và project Data Access Layer sau đó nhấn vào nút “OK”

2.2 XÂY DỰNG ĐỐI TƢỢNG DATA TRANSFER

2.2.1 Xây dựng class Entities

Để đóng gói các thuộc tính của tbProduct, chúng ta khai báo class tbProduct nhƣ

sau:

Trang 23

public class tbSach

{

}

Sau đó, chúng ta khai báo các thuộc tính của Product và tạo các phương thức get và

set cho thuộc tính đó

public class tbSach

{

private int maSach;

public int MaSach

{

get { return maSach; }

set { maSach = value ; }

}

private string tenSach;

public string TenSach

{

get { return tenSach; }

set { tenSach = value ; }

}

private int donGia;

public int DonGia

{

get { return donGia; }

set { donGia = value ; }

}

private string moTa;

public string MoTa

{

get { return moTa; }

set { moTa = value ; }

}

private string hinhMinhHoa;

public string HinhMinhHoa

{

get { return hinhMinhHoa; }

set { hinhMinhHoa = value ; }

Trang 24

}

private int maCD;

public int MaCD

{

get { return maCD; }

set { maCD = value ; }

}

private int maNXB;

public int MaNXB

{

get { return maNXB; }

set { maNXB = value ; }

}

private DateTime ngayCapNhat;

public DateTime NgayCapNhat

{

get { return ngayCapNhat; }

set { ngayCapNhat = value ; }

}

private int soLuongBan;

public int SoLuongBan

{

get { return soLuongBan; }

set { soLuongBan = value ; }

}

private int soLanXem;

public int SoLanXem

{

get { return soLanXem; }

set { soLanXem = value ; }

}

private int maTG;

public int MaTG

{

get { return maTG; }

set { maTG = value ; }

}

Trang 25

private int maSach;

Bôi đen từ maSach, nhấn chuột phải  Refactor  Encapsulate Field Trong khung Encapsulate Field, lựa chọn các thông số mặc định Sau đó nhấn chọn vào nút “OK”

Trong khung Review Reference Changes - Encapsulate Field, nhấn chọn vào nút

“Apply”

Trang 26

Kết quả thu đƣợc:

private int maSach;

public int MaSach

{

get { return maSach; }

set { maSach = value ; }

}

Trang 27

2.2.3 Xây dựng enum Columns

Để ghi nhớ các cột của bảng tbSach, chúng ta khai báo enum tbSachColumns Trong enum này có tên chính xác của các cột trong bảng tbSach

public enum tbSachColumns

Trang 28

Sau khi khai báo class tbSachColumns, chúng ta không cần phải vào cơ sở dữ liệu

để xem tên các cột trong bảng tbSach nữa, mà chỉ cần sử dụng enum tbSachColumns

2.2.4 Xây dựng lớp Collection

Để biểu diễn cho một danh sách tbSach chúng ta khai báo class tbSachCollection kế thừa của List<tbSach> như sau:

public class tbSachCollection : List < tbSach >{}

Khi cần biểu diễn một danh sách, chúng ta sử dụng class tbSachCollection mà không cần phải dùng thông qua List hoặc ArrayList nữa

2.3 XÂY DỰNG LỚP DATA ACCESS

2.3.1 Thuộc Tính SqlConnection

Để thao tác với Cơ Sở Dữ Liệu chúng ta cần phải khai báo đối tượng SqlConnection

private SqlConnection cn = null ;

2.3.2 Phương thức khởi tạo

Sau khi khai báo đối tượng SqlConnection, chúng ta cần khởi tạo đối tượng này và

sử dụng phương thức open() để bật kết nối với CSDL

Trang 29

đã khởi tạo ở hàm khởi tạo đối tượng Data Access Layer

Sau khi khởi tạo đối tượng SqlCommand, chúng ta cần truyền các tham số vào cho Store Proceduce và gọi phương thức ExecuteNonQuery() để thực thi Store Procedure:

cm.Parameters.AddWithValue( "@TenSach" , sach.TenSach);

cm.Parameters.AddWithValue( "@DonGia" , sach.DonGia);

cm.Parameters.AddWithValue( "@MoTa" , sach.MoTa);

cm.Parameters.AddWithValue( "@HinhMinhHoa" ,

cm.Parameters.AddWithValue( "@MaCD" , sach.MaCD);

cm.Parameters.AddWithValue( "@MaNXB" , sach.MaNXB);

cm.Parameters.AddWithValue( "@NgayCapNhat" ,

sach.NgayCapNhat);

cm.Parameters.AddWithValue( "@SoLuongBan" ,

sach.SoLuongBan);

cm.Parameters.AddWithValue( "@SoLanXem" , sach.SoLanXem);

cm.Parameters.AddWithValue( "@MaTG" , sach.MaTG);

cm.ExecuteNonQuery();

Trang 30

đã khởi tạo ở hàm khởi tạo đối tượng Data Access Layer

Sau khi khởi tạo đối tượng SqlCommand, chúng ta cần truyền các tham số vào cho Store Proceduce và gọi phương thức ExecuteNonQuery() để thực thi Store Procedure:

cm.Parameters.AddWithValue( "@MaSach" , sach.MaSach);

cm.Parameters.AddWithValue( "@TenSach" , sach.TenSach);

cm.Parameters.AddWithValue( "@DonGia" , sach.DonGia);

cm.Parameters.AddWithValue( "@MoTa" , sach.MoTa);

cm.Parameters.AddWithValue( "@HinhMinhHoa" ,

sach.HinhMinhHoa);

cm.Parameters.AddWithValue( "@MaCD" , sach.MaCD);

cm.Parameters.AddWithValue( "@MaNXB" , sach.MaNXB);

cm.Parameters.AddWithValue( "@NgayCapNhat" ,

sach.NgayCapNhat);

cm.Parameters.AddWithValue( "@SoLuongBan" ,

sach.SoLuongBan);

cm.Parameters.AddWithValue( "@SoLanXem" , sach.SoLanXem);

cm.Parameters.AddWithValue( "@MaTG" , sach.MaTG);

cm.ExecuteNonQuery();

}

2.3.5 Phương thức Delete

Phương thức Delete dùng để xóa đối tượng tbSach trong Cơ Sở Dữ Liệu Phương

thức này nhận vào ID của Sach cần xóa

Trang 31

Chúng ta khai báo đối tượng SqlCommand và khởi tạo đối tượng đó với hai tham số là: tên của Store Proceduce: sp_tbSach_Delete và đối tượng SqlConnection mà chúng ta

đã khởi tạo ở hàm khởi tạo đối tượng Data Access Layer

Sau khi khởi tạo đối tượng SqlCommand, chúng ta cần truyền ID cần xóa vào cho Store Proceduce và gọi phương thức ExecuteNonQuery() để thực thi Store Procedure:

Phương thức Get dùng để lấy những đối tượng tbSach từ Cơ Sở Dữ Liệu thỏa mãn

các điều kiện truyền vào Phương thức này nhận vào: Where, PageIndex, PageSize, OrderBy, OrderDirection, trả về danh sách các tbSach và TotalRecords

Chúng ta khai báo đối tượng SqlCommand và khởi tạo đối tượng đó với hai tham số là: tên của Store Proceduce: sp_tbSach_GET và đối tượng SqlConnection mà chúng ta đã khởi tạo ở hàm khởi tạo đối tượng Data Access Layer

Sau khi khởi tạo đối tượng SqlCommand, chúng ta cần truyền các tham số vào cho Store Proceduce

Chúng ta khai báo và khởi tạo đối tượng SqlDataReader từ đối tượng

SqlCommand Đọc từng dòng dữ liệu, chuyển đổi thành đối tượng tbSach và thêm đối tượng này vào danh sách sản phẩm được khai báo thông qua đối tượng tbProductCollection

Chúng ta nhận giá trị TotalRecords bằng cách parse giá trị của tham số

TotalRecords về giá trị int

public tbSachCollection Get( string where, int pageIndex,

int pageSize, string orderBy,

string orderDirection, out int totalRecords)

Trang 32

{

SqlCommand cm = new SqlCommand ( "sp_tbSach_GET" , cn);

cm.CommandType = CommandType StoredProcedure;

cm.Parameters.AddWithValue( "@Where" , where);

cm.Parameters.AddWithValue( "@PageIndex" , pageIndex);

cm.Parameters.AddWithValue( "@PageSize" , pageSize);

cm.Parameters.AddWithValue( "@OrderBy" , orderBy);

tbSach sach = new tbSach ();

sach.MaTG = int Parse(dr.GetValue(0).ToString());

sach.TenSach = dr.GetValue(1).ToString();

sach.DonGia = int Parse( dr.GetValue(2).ToString()); sach.MoTa = dr.GetValue(3).ToString();

sach.HinhMinhHoa = dr.GetValue(4).ToString();

sach.MaCD = int Parse( dr.GetValue(5).ToString());

sach.MaNXB = int Parse( dr.GetValue(6).ToString());

int Parse( dr.GetValue(9).ToString());

sach.MaTG = int Parse(dr.GetValue(10).ToString());

Trang 33

cm.Parameters[ "@TotalRecords" ].Value.ToString());

return sachCollection;

}

2.4 XÂY DỰNG LỚP BUSINESS

2.4.1 Phương thức Insert

Phương thức Insert được khai báo là phương thức static Do đó chúng ta không

cần phải khởi tạo đối tượng Bussiness để gọi phương thức Insert

Nếu có các quy định nghiệp vụ, chúng ta cần kiểm tra dữ liệu trước khi Insert vào

cơ sở dữ liệu Trong ví dụ này chúng ta không có các quy định nghiệp vụ nên không cần kiểm tra

Khai báo và khởi tạo đối tượng tbSachDAL, sau đó gọi phương thức Insert để thêm đối tượng tbSach vào cơ sở dữ liệu

public static void Insert( tbSach sach)

Phương thức Update được khai báo là phương thức static Do đó chúng ta không

cần phải khởi tạo đối tượng Bussiness để gọi phương thức Update

Nếu có các quy định nghiệp vụ, chúng ta cần kiểm tra dữ liệu trước khi Update đối

tượng tbProduct trong cơ sở dữ liệu Trong ví dụ này chúng ta không có các quy định nghiệp

vụ nên không cần kiểm tra

Khai báo và khởi tạo đối tượng tbSachDAL, sau đó gọi phương thức Update để sửa đối tượng tbSach trong cơ sở dữ liệu

public static void Update( tbSach sach)

{

tbSachDAL sachDAL = new tbSachDAL ();

sachDAL.Update(sach);

}

Trang 34

2.4.3 Phương thức Delete

Phương thức Delete được khai báo là phương thức static Do đó chúng ta không

cần phải khởi tạo đối tượng Bussiness để gọi phương thức Delete

Nếu có các quy định nghiệp vụ, chúng ta cần kiểm tra dữ liệu trước khi Delete đối

tượng tbSach trong cơ sở dữ liệu Trong ví dụ này chúng ta không có các quy định nghiệp vụ nên không cần kiểm tra

Khai báo và khởi tạo đối tượng tbSachDAL, sau đó gọi phương thức Delete để xóa đối tượng tbSach trong cơ sở dữ liệu

public static void Delete( int iD)

Phương thức GET được khai báo là phương thức static Do đó chúng ta không

cần phải khởi tạo đối tượng Bussiness để gọi phương thức GET

Khai báo và khởi tạo đối tượng tbSachDAL, sau đó gọi phương thức GET và truyền vào các tham số cần thiết để lấy những tbSach trong cơ sở dữ liệu thích hợp

public static tbSachCollection Get( string where,

int pageindex, int pagesize,

string orderby, string orderdirection,

out int total)

{

tbSachDAL sachDAL = new tbSachDAL ();

return sachDAL.Get(where, pageindex, pagesize, orderby,

orderdirection, out total);

}

2.4.5 Phương thức GetAll

Trong nhiều trường hợp, chúng ta có nhu cầu lấy hết tất cả dữ liệu có trong bảng

tbSach để xử lý, khi đó chúng ta định nghĩa thêm một phương thức GetAll

Trang 35

public static tbSachCollection GetAll()

{

int total = 0;

tbSachDAL sachDAL = new tbSachDAL ();

return sachDAL.Get( "where 1=1" , 0, 0,

tbSachDAL sachDAL = new tbSachDAL ();

tbSachCollection sachCollection = sachDAL.Get( "where " +

tbSachColumns MaSach.ToString() + "=" + iD.ToString(),

0, 0, tbSachColumns MaSach.ToString(), "ASC" , out total);

if (sachCollection.Count > 0)

return sachCollection[0];

return null ;

}

Trang 36

Chương 3 XÂY DỰNG PHÂN HỆ QUẢN LÝ

3.1 TẠO TRANG MASTER PAGE

3.1.1 Tạo trang Master Page

Nhấp chuột phải vào thư mục cần tạo trang Master Page  chọn mục “Add New Item” như hình

Chọn loại file cần tạo là Master Page, đặt lại tên nếu cần thiết, chọn ngôn ngữ là C#

và nhấp chuột vào nút “Add” để tạo trang Master Page

Trang 37

3.1.2 Thiết kế giao diện cho trang Master Page

Thiết kế trang Master Page như hình Giao diện gồm 3 phần chính: Menu chức năng, ContentPlaceHolder dàng cho Sub Menu, ContentPlaceHolder để hiển thị nội dung chính

3.1.3 Kiểm tra đăng nhập

Nếu Session “UserName” chưa được tạo ra thì chương trình sẽ trả về trang đăng nhập

protected void Page_Load(object sender, EventArgs e)

{

Trang 38

if (Request.Url.ToString().Contains("Default.aspx") == false

&& Session["UserName"] == null)

Response.Redirect("~/Admin/Default.aspx");

}

3.2 XÂY DỰNG CHỨC NĂNG ĐĂNG NHẬP

3.2.1 Thiết kế giao diện cho trang đăng nhập

<div style="padding:12px 12px 12px 12px;">

<asp:TextBox ID="txt_TaiKhoan"

runat="server"></asp:TextBox>

<asp:TextBox ID="txt_MatKhau"

TextMode="Password" runat="server"></asp:TextBox>

<asp:Button ID="btn_DangNhap"

runat="server" Text="Đăng nhập" OnClick="btn_DangNhap_Click" />

</td>

</tr>

<tr>

<td style="width:30%"></td>

Trang 39

<td style="width:70%">

<asp:Label ID="lb_Error"

runat="server" ForeColor="red"></asp:Label>

protected void btn_DangNhap_Click(object sender, EventArgs e) {

Criteria cri = new Criteria();

cri.add(Condition.AND,

tbNhanVienColumns.TaiKhoan.ToString(), Condition.EQUAL,

Session["UserName"] = txt_TaiKhoan.Text;

Trang 40

3.3 XÂY DỰNG CHỨC NĂNG XEM DANH SÁCH SẢN PHẨM

3.3.1 Tạo trang danh sách sản phẩm

Chọn loại file là Web Form và check vào checkbox “Select master page”, sau đó nhấp chuột vào nút “Add”

Trong hộp thoại “Select a Master Page”, ta chọn đường dẫn đến trang Master Page của trang Web, sau đó nhấp chuột vào nút “OK”

Ngày đăng: 29/04/2015, 00:32

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w