Tạo hiển thị Menu cột trái o Sử dụng Hyperlink Control: • Kéo thả các 4 Hyperlink Control vào vùng hiển thị Menu.. Dzoãn Thanh 14 o Xử lý : Khi nhấn nút Lưu, dữ liệu trên from sẽ được l
Trang 1Tài Liệu HƯỚNG DẪN THỰC HÀNH
WEB
Trang 2CHƯƠNG 6: HƯỚNG DẪN THỰC HÀNH
Bài 1: Xây dựng ứng dụng WebCalculator
1 Tạo một Web site
Từ Menu chọn File - New - Web site
o Template : ASP.NET Web site
o Location : File System
o Language : Visual C#
2 Thiết kế Form theo mẫu
Tạo table : Menu Layout - Insert Table
Kéo thả các Control trong Toolbox vào WebForm.aspx như mẫu trên
Đặt thuộc tính cho các đối tượng trên Form
Trang 3Dzoãn Thanh 2
3 Viết mã lệnh xử lý
Viết hàm xử lý sự kiện bấm vào nút Tổng
Bấm đúp (double click) vào nút Tổng trên form sẽ tự động thêm 1 hàm xử lý sự kiện
protected void btTong_Click(object sender, EventArgs e) {
}
Nhập đoạn mã lệnh (in đậm) vào trong thân hàm vừa phát sinh:
protected void btTong_Click(object sender, EventArgs e) {
int so1, so2, tong;
Giải thích: Các Form hoặc User Control trong 1 ứng dụng ASP.NET khơng mặc định
được lưu theo dạng cĩ hỗ trợ Font Unicode Vì vậy khi chạy ứng dụng từ Browser sẽ khơng hiển thị đúng Font chữ tiếng Việt
Cách sửa: Nếu cĩ sử dụng Font Unicode trong file nào thì cần phải chỉ định cho
VS.NET lưu file đĩ theo đúng định dạng Unicode
o Từ menu chọn File\Save <tên file> As Từ hộp thoại Save File As, Từ hộp thoại
Trang 45 Chạy kiểm thử chương trình
Trang 5Dzoãn Thanh 4
Bài 2 Xây dựng trang chủ cho Website Bản tin điện tử
1 Mẫu trang chủ Website Tuổi trẻ ( www.tuoitre.com.vn )
2 Tạo Project Bản tin điện tử
o Từ Menu chọn File – New – Web site…
• Template : ASP.NET We site
• Location : File System – D:\BanTinDienTu
• Language : Visual C#
3 Tạo trang Master
o Từ Menu chọn Website – Add new item…
• Template : Master page
• Name : MasterPage.master
• Language : Visual C#
Trang 6o Chuyển sang màn hình design - Xóa tất cả các control có trên đó
o Thêm một table : Menu Layout – Insert table
Trang 7Dzoãn Thanh 6
Vùng hiển thị Banner Vùng hiển thị Menu
• Kéo thả 1 Image Control vào vùng hiển thị Banner
• Đặt thuộc tính ImageUrl của Image là Images\banner.gif
Trang 85 Tạo hiển thị Menu cột trái
o Sử dụng Hyperlink Control:
• Kéo thả các 4 Hyperlink Control vào vùng hiển thị Menu
• Đặt thuộc tính cho các Hyperlink
Hyperlink1 Text Trang chủ
NavigateUrl Index.aspx Hyperlink2 Text Xã hội
Trang 9o Kéo thả các 1 AdRotator Control vào menu
o Chỉ đường dẫn thuộc tính AdvertisementFile là Ads.xml
Trang 10Dzoãn Thanh 9
6 Tạo và hiển thị cột quảng cáo bên phải
o Sử dụng Marquee
Đưa con trỏ vào vùng cần hiển thị định dạng marquee, chọn View HTML Source
Ví dụ nội dung marquee như sau
<marquee bgcolor=”#ffffcc" width="200" height="200" direction=up
scrollamount="2" onmouseover="this.stop()" onmouseout="this.start()">
<table width="100%" cellpadding="0" cellspacing="0">
• Kéo thả các 2 Image Control vào Ads
• Đặt thuộc tính ImageUrl cho các Image:
Image1 Images\Image1.gif Image2 Images\Image2.gif
Trang 11Dzoãn Thanh 10
7 Tạo hiển thị phần nội dung :
o Vào vùng hiển thị nội dung thêm control ContentPlaceHolder
Trang 128 Tạo Trang chủ Bản tin điện tử
o Vào Menu Website – Add new item
Trang 14Bài 3 Xây dựng trang web Nhập tin tức mới
1 Thiế kế Cơ sở dữ liệu (Xây dựng CSDL Access)
o Mở ứng dựng Microsoft Access
o Thiết kế CSDL, đặt tên là tintuc.MDB, có cấu trúc gồm:
- Một bảng Bantin như sau:
Bantin STT Tên trường Kiểu dữ liệu Ghi chú
1 MaBanTin Text(10) Primary Key
2 TieuDe Text (255) Required
3 NoiDungTomTat Memo Required
4 NoiDung Memo Required
5 NgayDangTin Date/Time Ngày hiện hành
liệu
Ghi chú
1 MaLinhvuc Text(10) Primary Key
2 Tenlinhvuc Text (255) Required
o Lưu tintuc.MDB vào thư mục App_Data trong thư mục gốc chứa trang web
2 Thêm một trang mới và Thiết kế Form theo mẫu dưới đây (dùng control
AccessDataSource)
Trang 15Dzoãn Thanh 14
o Xử lý : Khi nhấn nút Lưu, dữ liệu trên from sẽ được lưu xuống table Linhvuc trong Database (Access)
Tạo 1 control AccessDataSource
o Từ Toolbox – Kéo thả 1 control AccessDataSource
o Phải chuột vào control AccessDataSource chọn “Configure Data Source …”
Chọn đường dẫn đến file tintuc.mdb -> Next
o Chọn “Specify columns from a table or view”
o Name : Bantin
o Columns : chọn *
(Chọn các cột sẽ được hiển thị trong câu truy vấn select – chọn * cĩ nghĩa là chọn tất cả các cột)
o Next
Trang 16o 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) -> Next -> Finish
Trang 17
Dzoãn Thanh 16
o Phải chuột AccessDataSource1, chọn Property, chọn thuộc tính “InsertQuery”
o Liên kết 1 cột trong bảng với 1 control trong màn hình (ví dụ cột Malinhvuc liên kết với control txtMalinhvuc)
o Parameters : Malinhvuc
o Parameter source : Control
o ControlID : txtMalinhvuc
o Viết hàm xử lý sự kiện click cho nút Lưu (Bấm đúp (double click) vào nút Lưu trên
form, chương trình sẽ tự động thêm hàm xử lý sự kiện)
protected void btnLuu_Click(object sender, EventArgs e)
Trang 183.Thêm một trang mới và Thiết kế Form theo mẫu dưới đây:
o Xử lý:
- Lấy data từ table Linhvuc load lên DropdownList Linhvuc tren form (Sinh viên tự
thực hành phần này)
- Mặc định CldCldNgaydangtin là chọn ngày hiện hành
- Nhấn nút Lưu, tất cả dữ liệu sẽ được lưu xuống table Bantin trong database
Tương tự như trang Thêm Lĩnh vực, ta tạo 1 control AccessDataSource
o Từ Toolbox – Kéo thả 1 control AccessDataSource
o Phải chuột vào control AccessDataSource chọn “Configure Data Source …”
Chọn đường dẫn đến file tintuc.mdb -> Next
o Chọn “Specify columns from a table or view”
(cmdLuu) (cmdXoa)
Trang 19Dzoãn Thanh 18
o Columns : chọn *
(Chọn các cột sẽ được hiển thị trong câu truy vấn select – chọn * cĩ nghĩa là chọn tất cả các cột)
o Next
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) -> Next -> Finish
o Phải chuột AccessDataSource1, chọn Property, chọn thuộc tính “InsertQuery”
o Liên kết 1 cột trong bảng với 1 control trong màn hình (ví dụ cột MaBanTin liên kết với control txtMaBanTin)
Trang 20o Viết hàm xử lý thông tin cho Trang Nhập Tin tức mới,
- Hàm load ngày mặc định là ngày hiện hành cho control Ngày đăng tin
protectedvoid Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
cldNgaydangtin.SelectedDate = DateTime.Now;
}
- Hàm Nhận tập tin Upload từ Client và Lưu lên Server
protectedvoid SaveFileUpload()
- Hàm xử lý sự kiện click cho nút Lưu (Bấm đúp (double click) vào nút Lưu trên form,
chương trình sẽ tự động thêm hàm xử lý sự kiện)
Trang 22Bài 4: Xây dựng trang chủ cho từng Lĩnh vực
1 Xây dựng Trang chủ Lĩnh vực Xã hội
o Thêm trang xahoi.aspx kế thừa từ trang MasterPage (trang cha)
• Menu Website – Add new item
1 Template : Webform
2 Name : xahoi.aspx
3 * Chọn “Select master page”, chọn trang Master Page
o Tạo hiển thị tóm tắt các bản tin thuộc lĩnh vực Xã hội
Sử dụng DataList Control:
• Từ ToolBox – kéo control DataList vào Window form
• Đặt tên cho DataList là dataListTomTatTinTuc
Sử dụng AccessDataSource
• Từ cửa sổ Toolbox, kéo thả đối tượng AccessDataSource vào Web Form
• Kết nối đến tập tin “tintuc.MDB”
• Tạo câu truy vấn
Trang 23Dzoãn Thanh 22
o Vào Property của dataListTomTatTinTuc chọn DataSourceID bằng AccessDataSource1
- Nhấn chuột phải vào dataListTomTatTinTuc và chọn Edit Template > Item Templates từ pop-up menu
Trang 24- Xóa tất cả nội dung trong Item Template Vào Layout – Insert Table (có thuộc tính Width = 100%), thêm vào các control theo mẫu sau :
Font Size Font Bold Fore Color Hyperlink1 Small True Maroon Label1 Small DimGray Label2 Small
- Phải chuột vào từng Control chọn EditDataBinding
• Bindable Properties : Text
• Field binding – Bound to : TieuDe
Trang 25Dzoãn Thanh 24
Trang 27
Dzoãn Thanh 26
Chạy và kiểm tra chương trình
2 Nhập thêm thơng tin cho các lĩnh vực khác, thiết kế trang chủ cho lĩnh vực Kinh tế
(kinhte.aspx), Thể thao (thethao.aspx),…
Trang 28Bài 5: Xây dựng trang hiển thị chi tiết tin tức
1 Tạo trang BanTin.aspx kết thừa từ MasterPage
• Vào Menu Website -> Add New Item …
• Chọn Template : Web form
• Name : bantin.aspx
• Chọn : Place code in separate file (phân chia thiết kế và code thành 2 file)
• Chọn : Select master page (trang này kế thừa từ 1 trang cha)
2 Tạo hiển thị thông tin chi tiết của một bản tin
Sử dụng DataList Control:
• Kéo thả 1 DataList vào bantin.apsx
• Đặt tên cho DataList là dataListBanTinChiTiet
Thêm control AccessDataSource vào Webform
• Kết nối đến tập tin “TINTUC.MDB”
• Tạo câu truy vấn Select
Vào điều kiện Where
o Column : MaBanTin, Operator : “=”,
o Source : QueryString
o QueryString field : MaBanTin
o Bấm Add
Trang 29Dzoãn Thanh 28
- Kết nối AccessDataSource vào DataList
• Chọn Property : ->DataSourceID : AccessDataSource1
- Nhấn chuột phải vào dataListBanTinChiTiet và chọn Edit Template -> Item Templates từ
pop-up menu
- Vào Layout -> Insert table Thiết kế table như sau :
- Liên kết 1 control với 1 cột trong bảng BANTIN
Label1 Text NgayDangTin (Format : {0:hh:mm:ss - dd/MM/yyyy})
Label2 Text DataItem.TieuDe
Label3 Text NoiDungTomTat
Label4 Text NoiDung
Label5 Text ChuThichHinh
Image1 ImageUrl HinhAnh
Trang 30Phải chuột vào Label1 -> Edit DataBinding …
Tương tự cho các control còn lại
Chạy và Kiểm tra chương trình:
Bấm Ctrl + F5 : Trang web load lên nhưng không có nội dung
Trang 31Dzoãn Thanh 30
Thay đổi lại đường link …/ bantin.aspx?MaBanTin=XH1
Trang 323 Liên kết Trang chủ lĩnh vực xã hội với trang hiển thị bản tin chi tiết
Sửa lại Bindable Property cho DataList trong Xahoi.aspx
Bài tập làm thêm:
- Hoàn thiện trang chủ lĩnh vực Kinh tế và liên kết với trang BanTin.aspx
- Hoàn thiện trang chủ lĩnh vực Thể thao và liên kết với trang BanTin.aspx
Trang 33Dzoãn Thanh 32
Bài 6: Xây dựng Menu động bằng DataList
Như các bài trước, Menu được thiết kế bằng các Hyperlink ở trang PageMaster.master và khi tạo
các trang con chỉ cần Apply (check vào Select MasterPage) là cĩ thể cĩ một Menu giống như ở
trang PageMaster
Các Menu này quá cố định, vấn đề đặt ra là nếu website này cần thêm một lĩnh vực mới nữa thì
xử lý sao? (Ví dụ thêm lĩnh vực về Giáo dục, các tin tức liên quan đến Giáo dục)…Một dự án Web hay Software cần tối ưu hĩa bằng cách bổ sung đầy đủ các chức năng cĩ thể, mang tính tiện dụng cao hạn chế việc chỉnh sửa
Do đĩ, chúng ta cần xây dựng một Menu động, những lĩnh vực cần phải lấy từ Database Các bài trước chúng ta đã thiết kế trang Thêm lĩnh vực, giờ chỉ cần load lên Menu
Cũng tương tự như các bài trước, nhưng chúng ta thiết kế Menu trên một Usercontrol (khi thiết
kế xong thì UserContol này cũng như những control vốn cĩ của bộ Visual Studio), sau đĩ gắn Usercontrol này lên trang PageMaster
Tạo một UserControl mới:
o Vào Menu Website – Add new item
• Template : Web User Control
• Name : ucontrolMenu.ascx
• Language : Visual C#
Trang 34Sử dụng DataList Control:
• Từ ToolBox – kéo control DataList vào ucontrolMenu
Sử dụng AccessDataSource
• Từ cửa sổ Toolbox, kéo thả đối tượng AccessDataSource vào ucontrolMenu
• Kết nối đến tập tin “tintuc.MDB”
• Tạo câu truy vấn -> Netx -> Finish
Trang 35Dzoãn Thanh 34
o Vào Property của DataList chọn DataSourceID bằng adsGetLinhvuc
- Nhấn chuột phải vào DataList và chọn Edit Template > Item Templates từ pop-up menu
o Xĩa tất cả nội dung trong Item Template Vào Layout – Insert Table (cĩ thuộc tính Width
= 100%), thêm vào các control theo mẫu sau :
Trang 36- Image: thuộc tính ImageUrl là một Buttlet
- Phải chuột vào Hyperlink1 -> Edit DataBinding …
+ Text: Hiển thị Tên Linh vực
+ NavigateUrl: link (ở đây chúng ta chưa đặt thuộc tính cho NavigateUrl)
Xong, ta xóa các Hyperlink lúc đầu ở trang PageMaster, và nắm kéo ucontrol Menu từ cửa sổ
Solution vào chổ các Hyperlink vừa xóa
Lúc này ta có thể thêm một lĩnh vực mới từ trang Thêm lĩnh vực mới,
F5 -> Chạy chương trình và kiểm tra thử, không khác gì các Menu cũ làm bằng Hyperlink và còn
có thêm một lĩnh vực vừa mới thêm
Trang 37Dzoãn Thanh 36
Bài 7 : Xây dựng một trang duy nhất để hiển thị thơng tin của từng Lĩnh vực
Với một Menu động được load thơng tin từ Database như vậy, nếu như ở các bài trước, một lĩnh vực là một trang riêng biệt thì ở đây chúng ta khơng thể thêm từng trang mỗi khi cĩ một lĩnh vực mới…Vấn đề là phải làm sao thiết kế một trang duy nhất đề hiển thị thơng tin cho các lĩnh vực mặc cho cĩ thêm mới lĩnh vực
1 Tương tự, ta thêm một trang mới để hiển thị thơng tin cho từng lĩnh vực,
o Vào Menu Website – Add new item
• Template : Web form
• Name : Linhvuc.aspx
• Language : Visual C#
• Chọn : Select master page (trang này kế thừa từ 1 trang cha)
2 Tạo hiển thị thơng tin chi tiết của một bản tin
Sử dụng DataList Control:
• Kéo thả 1 DataList vào Linhvuc.apsx
Thêm control AccessDataSource vào Webform
• Kết nối đến tập tin “TINTUC.MDB”
• Tạo câu truy vấn Select
Vào điều kiện Where
o Column : Malinhvuc, Operator : “=”,
o Source : QueryString
Trang 38o QueryString field : tut
o Bấm Add -> Next -> Finish
o Vào Property của DataList chọn DataSourceID bằng AccessDataSource1
- Nhấn chuột phải vào DataList và chọn Edit Template > Item Templates từ pop-up menu
- Xóa tất cả nội dung trong Item Template Vào Layout – Insert Table (có thuộc tính Width = 100%), thêm vào các control theo mẫu sau :
Trang 39Dzoãn Thanh 38
Font Size Font Bold Fore Color Hyperlink1 Small True Maroon Label1 Small DimGray Label2 Small
- Phải chuột vào từng Control chọn EditDataBinding
• Bindable Properties : Text
• Field binding – Bound to : TieuDe
Vì trang Bantin.aspx (trang chi tiết) đang đĩn nhận, chờ một Mabantin truyền tới, do đĩ ta thêm thuộc tính là MaBanTin và Fomat cho NavigateUrl
Trang 41Dzoãn Thanh 40
Trang 42
Chạy và kiểm tra chương trình
Bấm Ctrl + F5 : Trang web load lên nhưng không có nội dung
Thay đổi lại đường link …/ Linhvuc.aspx?tut=TT
Trang 43Dzoãn Thanh 42
3 Liên kết Menu từ trang PageMaster tới trang Linhvuc.aspx
Sửa lại Edit DataBinding cho Hyperlink trong DataList của ucontrolMenu
Chạy chương trình từ trang Default.aspx
Trang 44Bài 8: Xây dựng trang chủ cho website
1 Mẫu trang chủ Bản tin điện tử Website Tuổi trẻ ( www.tuoitre.com.vn )
2 Tạo hiển thị tóm tắt các bản tin thuộc các lĩnh vực
Sử dụng DataList Control:
• Kéo thả 1 DataList vào Default.aspx
Tạo AccessDataSource control
• Từ cửa sổ Toolbox, kéo thả đối tượng AccessDataSource vào Web Form
• Kết nối DataSource vào TINTUC.mdb
• Viết câu lệnh SQL SELECT truy vấn dữ liệu từ bảng BANTIN SELECT T.MaBanTin, T.TieuDe, T.NgayDangTin, T.NoiDungTomTat, T.NoiDung,
T.HinhAnh, T.ChuThichHinh, T.MaLinhVuc, L.TenLinhVuc
FROM (LINHVUC L INNER JOIN BANTIN T ON L.MaLinhVuc = T.MaLinhVuc)
GROUP BY T.MaLinhVuc, T.MaBanTin, T.TieuDe, T.NgayDangTin,
T.NoiDungTomTat, T.NoiDung, T.HinhAnh, T.ChuThichHinh, L.TenLinhVuc, L.MaLinhVuc HAVING (T.NgayDangTin >= ALL (SELECT NGAYDANGTIN
FROM BANTIN
WHERE MALINHVUC = L.MALINHVUC))