33
TTDT – BMCNTT Trang 1 TRƯỜNG ĐẠI HC TG BMÔN CNTT -oOo- BÀI TP LP TRÌNH ASP.NET Bài 1 : Tng quan vASP.NET 1.1: To mi 1 Project. 1.2: To trang Chao.aspx.

Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

Embed Size (px)

DESCRIPTION

asp.net example

Citation preview

Page 1: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 1

TRƯỜNG ĐẠI HỌC TG BỘ MÔN CNTT -oOo-

BÀI TẬP LẬP TRÌNH ASP.NET

Bài 1: Tổng quan về ASP.NET

1.1: Tạo mới 1 Project.

1.2: Tạo trang Chao.aspx.

Page 2: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 2

Bài 2: HTML Server Control

2.1: Hồ sơ đăng ký.

Page 3: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 3

2.2: Upload tập tin.

Page 4: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 4

Bài 3: Web Server Control

3.1: Đọc báo.

Page 5: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 5

3.2: Câu chào.

Page 6: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 6

3.3: Album các loài hoa.

3.4: Đơn đặt hàng.

Page 7: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 7

Page 8: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 8

3.4: Phiếu ý kiến người tiêu dùng.

Page 9: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 9

3.6: Bài tập các điều khiển cơ bản.

Page 10: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 10

3.7: Thông tin đăngnhập.

Page 11: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 11

Page 12: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 12

3.8: Tìm quân cờ.

Page 13: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 13

3.9: Lịch để bàn.

Page 14: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 14

3.10: Upload và xem tập tin.

Page 15: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 15

3.11: Hồ sơ đăng ký.

Page 16: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 16

Page 17: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 17

3.12: Sản phẩm kẹo.

Page 18: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 18

HƯỚNG DẪN GIẢI BÀI TẬP ASP.NET

2.1: � Yêu cầu xử lý:

Nút Đăng ký:

– Sự kiện Server_Click

– Dùng t.t Value của các điều khiển nhập liệu

– Dùng thuộc tính InnerHTML của đk Div

– Chuỗi giá trị gán cho t.tính trên có chứa các tag HTML định dạng văn bản (<i>, <li>, ... )

2.2: � Yêu cầu xử lý:

Nút Upload :

– Sự kiện Server_Click:

� Upload tập tin:

� Nhận đường dẫn và tên tập tin từ Client: tt PostedFile.FileName

� Lấy tên tập tin : pt System.IO.Path.GetFileName

� Copy tập tin lên server: pt PostedFile.SaveAs

� Xuất danh sách tập tin:

� Khai báo thư mục truy xuất (Upload): kiểu Directory hoặc lớp System.IO.DirectoryInfo

� Truy xuất các tập tin trong thư mục này: pt GetFiles

Page 19: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 19

3.1: � Yêu cầu xử lý:

– Khi mở trang: (sự kiện Load)

� Sử dụng t.t Text của Label

� Chuỗi giá trị gán cho t.tính trên có chứa các tag HTML định dạng văn bản (<b>, <ul>, <li> )

– Liên kết đến các trang báo:

� Sử dụng thuộc tính NavigateURL và Target

3.2: � Yêu cầu xử lý:

Nút Thay đổi câu chào:

� Thuộc tính OnClientClick: Dùng ngôn ngữ JavaScript để hỏi người sử dụng

� Sự kiện Click

� Thuộc tính Text của Label

� Giá trị chuỗi gán cho t.t trên có chứa các tag HTML định dạng văn bản (<b>, <i>, …)

3.3: � Yêu cầu xử lý:

Chọn Danh sách hoa :

� Thuộc tính AutoPostBack: True

� Sự kiện SelectedIndexChanged

� Khai báo mảng chứa tập hợp các chuỗi tên tập tin hình ảnh

Page 20: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 20

� Gán giá trị tt ImageURL của Image và tt Text của Lable: Sử dụng dụng tt SelectedIndex và Items của ListBox

3.4: � Yêu cầu xử lý:

– Nút :

� Kiểm tra Số lượng: dùng hàm Val

� Thêm vào Danh sách bánh được đặt: tt SelectedIndex, Items và pt Items.Add của ListBox

− Nút :

� Khai báo một mảng dùng để lưu trữ giá trị các chỉ số của các mục được chọn trong ListBox: pt GetSelectedIndices của ListBox

� Duyệt mảng trên và xóa các mục trong ListBox có chỉ số tương ứng với giá trị của từng p.tử trong mảng: pt Items.RemoveAt

− Nút :

� Dùng tt Text hoặc InnerHTML (đối với đk Div) để nhận chuỗi giá trị từ các điều khiển nhập liệu

� Chuỗi gía trị có chứa các tag HTML định dạng văn bản và tag tạo bảng

Lưu ý: duyệt các mục trong ListBox để lấy tên bánh và số lượng : tt Items của ListBox và các pt cắt chuỗi như LastIndexOf, SubString

3.5: � Yêu cầu xử lý:

– Xây dựng thủ tục Xuất danh sách tiêu chuẩn bình chọn tương ứng với các sản phẩm:

� Khai báo biến lưu trữ Danh sách tiêu chuẩn: kiểu ArrayList | SortedList | Hashtable

� Kiểm tra sản phẩm được chọn để thêm các tiêu chuẩn tương ứng vào biến trên: dùng tt SelectedIndex của RadioButtonList và pt Add của biến trên

� Liên kết giá trị của biến trên với điều khiển BulletedList: sử dụng tt DataSource và pt DataBinding

– Khi mở trang:

� Mặc định Sản phẩm Máy giặt được chọn và xuất danh sách bình chọn của máy giặt: gọi thủ tục Xuất danh sách tiêu chuẩn

– Chọn Danh sách sản phẩm:

� Xuất danh sách bình chọn tuơng ứng: gọi thủ tục Xuất danh sách tiêu chuẩn

� Xuất tên của sản phẩm được chọn ra đk Label: dùng tt Text của Label và SelectedValue của RadioButtonList

– Khi nhấn nút :

� Khai báo biến dùng để lưu trữ các tiêu chuẩn được bình chọn: kiểu ArrayList

� Duyệt các mục trên trên CheckBoxList và kiểm tra mục nào được chọn thì thêm vào mảng trên: tt Selected của CheckBoxList

� Liên kết dữ liệu của mảng trên vào đk BulletedList: tt DataSource và pt DataBind của BulletedList

Page 21: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 21

3.6: � Yêu cầu xử lý:

– Chọn Danh sách bài tập:

� Khai báo URL của bài tập: tt Value lúc thiết kế

− Chọn Danh sách Bullet:

� Sự kiện SelectedIndexChanged

��Kiểm tra giá trị được chọn trong danh sách để thay đổi Bullet tương ứng: dùng tt SelectedValue của DropDownList và BulletStyle của RadioButtonList

Page 22: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 22

3.7: � Yêu cầu xử lý:

– Điều khiển RegularExpressionValidator: ValidationExpression=[\d|\w|!|&|_]{8}[\d|\w|!|&|_]+

– Khi nhấn nút :

� Sử dụng t.t Text của Label

� Chuỗi giá trị gán cho t.tính trên có chứa các tag HTML định dạng văn bản (<b>, <ul>, <li> )

3.8: � Yêu cầu xử lý:

� Khi mở trang, tạo bàn cờ:

o Khai báo 2 biến lưu trữ dòng, cột đựơc tạo: kiểu TableRow và TableCell

o Duyệt số dòng (đã xác định) và thêm từng dòng mới vào đk Table: dùng pt

Rows.Add của đk Table

� Duyệt số ô (đã xác định) và xác định các tt màu nền, ghi chú của Tooltip và icon chuột: tt BackColor, ToolTip, Attributes(”Style”) của điều khiển ô

� Thêm ô mới vào dòng mới: dùng pt Cells.Add của đối tượng dòng mới

� Khi nhấn nút :

o Khai báo 2 biến lưu trữ thứ tự dòng, cột ngẫu nhiên: hàm Rnd()

Page 23: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 23

o Duyệt các dòng trên đk Table và xác định dòng hiện hành: dùng tt Rows.Count và

Rows(chỉ số) của đk Table

� Duyệt các ô trên dòng hiện hành và xác định ô hiện hành: dùng tt Cells.Count và Cells(chỉ số) của đk dòng

�� Kiểm tra nếu dòng và ô hiện hành bằng với 2 biến trên thì:

+ Khai báo biến lưu trữ đối tượng hình: kiểu System.Web.UI.WebControls.Image

+ Lần lượt gán các giá trị cho tt hình ảnh, định danh, kiểu, rê chuột ra/vào, nhấn chuột cho đối tượng hình: tt ImageUrl, Attributes("id"), Attributes(“style”), Attributes(“onmouseover”), Attributes(“onmouseout”), Attributes(“onclick”)

+ Thêm đối tượng hình vào ô hiện hành: pt Controls.Add(<đt hình>)

của ô hiện hành

3.9: � Yêu cầu xử lý:

– Các khai báo dùng chung trong trang:

� Định nghĩa kiểu dữ liệu (User-Defined Type - UDT) có 2 thành phần là Ngày và Ghi chú: cấu trúc Structure

� Khai báo mảng dùng chung, lưu trữ các ngày cần ghi nhớ: kiểu ArrayList, các phần tử có kiểu UDT

– Khi mở trang:

� In ngày hiện hành: các pt của đối tượng Date và hàm DateSerial

� Tạo danh sách các ngày cần ghi nhớ: dùng pt Add của đt mảng, kết hợp với biến kiểu UDT

– Điều khiển Lịch:

� Sự kiện DayRender

� Duyệt mảng và kiểm tra phần tử hiện hành có ngày, tháng bằng với ô hiện hành không, nếu bằng:

+ Tô màu nền, màu chữ và bổ sung ghi chú cho ô: thuộc tính e.Cell.BackColor, ForeColor và Tootip của tham số e

– Khi nhấn nút :

� Duyệt mảng và kiểm tra từng phần tử: có thể viết hàm

� Nếu hợp lệ thì thêm vào mảng: pt Add của ArrayList

3.10: � Yêu cầu xử lý:

− Khi chọn nút :

� Kiểm tra đk FileUpload có chứa tập tin chưa: tt HasFile

� Nếu có:

o Chép lên thư mục Upload: pt SaveAs của đk FileUpload

o Xuất các tập tin trong thư mục Upload ra ListBox:

Page 24: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 24

� Xác định thư mục Upload trên server: khai báo biến thuộc lớp DirectoryInfo

� Duyệt tập hợp các tập tin và xuất ra: pt GetFiles của biến trên

− Khi chọn nút Upload tập tin:

� Kích họat View thứ nhất: tt ActiveViewIndex của đk MultiView

− Khi chọn nút Xem các tập tin được upload:

� Kích họat View thứ hai: tt ActiveViewIndex của đk MultiView

3.11: � Yêu cầu xử lý:

− Khi chọn nút :

� Sự kiện FinishButtonClick

� Thuộc tính Text của Label

� Giá trị chuỗi gán cho t.t trên có chứa các tag HTML định dạng văn bản (<ul>, <li>, <i>, …)

3.12: � Yêu cầu xử lý:

− Sự kiện Load của trang:

� Khai báo 2 biến ViewState dùng để lưu trữ số lượng và tên sản phẩm được chọn

� Biến lưu trữ tên sản phẩm có kiểu ArrayList

− Khi chọn Danh sách sản phẩm:

� Kiểm tra sản phẩm: pt Contains của ArrtayList

� Tăng số sản phẩm lên 1 và xuất ra màn hình: tt DataSource và pt DataBind của BulletedList

− Khi nhấn nút :

� Gán lại giá trị mặc định cho 2 biến ViewState

4.2: � Yêu cầu xử lý:

– Liên kết dữ liệu của bảng KHACH_HANG với GridView:

� Khai báo biến có kiểu lớp xử lý khách hàng (XL_KHACH_HANG)

� Xử dụng tt DataSource và pt DataBind

4.3: � Yêu cầu xử lý:

– Liên kết dữ liệu của bảng SACH với GridView:

� Khai báo biến có kiểu lớp xử lý sách (XL_SACH)

� Xử dụng tt DataSource và pt DataBind

− Xử lý phân trang:

� Sự kiện PageIndexChanging

� Gán giá trị trang mới cho trang hiện hành: tt e.NewPageIndex và PageIndex của đk GridView

� Liên kết dữ liệu

− Xử lý sắp xếp:

Page 25: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 25

� Sự kiện Sorting

� Liên kết dữ liệu, kết hợp với tt e.SortExpression

4.4: � Yêu cầu xử lý:

− Liên kết dữ liệu của bảng KHACH_HANG với GridView:

� Khai báo biến có kiểu lớp xử lý khách hàng (XL_KHACH_HANG)

� Xử dụng tt DataSource và pt DataBind

4.5: � Yêu cầu thiết kế:

� Cột Hình ảnh

° DataImageUrlField: tên field hình

° DataFormatString: ~/<tên TM chứa hình>/{0}.jpg

� Cột Đặt mua

° ButtonType: Image

° ImageUrl: ~/<tên TM chứa hình>/<tên tập tin hình>

° CommandName: khai báo giá trị (tên nút)

� Yêu cầu xử lý:

– Sự kiện Load: khai báo 2 biến ViewState dùng để lưu trữ Tổng tiền và Tổng số lượng các sách được chọn mua

– Khi nhấn nút :

� Sự kiện RowComand của đk GridView

� Xác định chỉ số dòng được chọn: tt e.CommandArgument

� Lấy giá trị ô Đơn giá của dòng được chọn: tt Rows(chỉ số).Cells(3).text của đk GridView

� Tính toán và xuất ra đk Label: dùng 2 biến ViewState trên

4.6: � Yêu cầu xử lý:

– Gán giá trị cho thuộc tính CommandArgument của điều khiển LinkButton:

� Sự kiện RowDataBound của đk GridView

� Kiểm tra dòng đang duyệt là dòng dữ liệu không? : tt e.Row.RowType

� Nếu đúng thì tìm tới điều khiển LinkButton và gán giá trị cho tt CommandArgument của nút này: pt e.Row.FindControl(”tên nút”) và tt Datakeys(e.Row.RowIndex).Value của GridView

– Khi chọn Tên sách:

� Sự kiện RowComand của đk GridView

� Xác định giá trị khóa của dòng được chọn: tt e.CommandArgument

� Dùng giá trị khóa vừa tìm được để truy xuất dữ liệu vùng Mô tả và xuất ra màn hình

4.8: � Yêu cầu xử lý:

Page 26: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 26

– Nhấn nút : tt SelectedRowStyle và chọn màu cho tt BackColor và ForeColor (khi thiết kế)

– Khi nhấn nút :

� Sự kiện RowDeleting

� Lấy giá trị Mã NXB: tt <GridView>.DataKeys(e.RowIndex).Value

� Kiểm tra giá trị trên đã có trong bảng SACH chưa?, nếu có thì xuất câu thông báo, ngược lại thì hủy dòng hiện hành và liên kết dữ liệu cho lưới

– Nhấn nút Sửa:

� Sự kiện RowEditing

� Xác định chỉ số của dòng đang sửa: tt <GridView>.EditIndex = e.NewEditIndex

− Nhấn nút Không:

� Sự kiện CancelingEdit

� Trả lại trạng thái ban đầu: <GridView>.EditIndex = -1

� Liên kết dữ liệu

− Nhấn nút Ghi:

� Sự kiện RowUpdating

� Xác định giá trị các ô của dòng hiện hành: tt CType(<GridView>.Rows(e.RowIndex).Cells(<chỉ số cột>).Controls(0), TextBox).Text

� Kiểm tra giá trị của ô Tên nhà xuất bản, nếu hợp lệ thì cập nhật vào bảng NHA_XUAT_BAN dựa vào các giá trị trên và giá trị khóa chính (Mã NXB)

� Trả về trạng thái ban đầu

� Liên kết dữ liệu

4.9: � Yêu cầu xử lý:

– Thông tin Mô tả: thể hiện khoảng 250 ký tự

� Sự kiện ItemDataBound

� Kiểm tra dòng đang duyệt có phải là dòng dữ liệu không?: tt e.Item.ItemIndex và e.Item.ItemType

� Nếu thỏa điều kiện thì tìm điều khiển Mô tả (Label) và gán dữ liệu của vùng Mo_ta cho điều khiển này, chỉ lấy 250 ký tự: pt e.Item.FindControl và tt e.Item.DataItem

4.10: � Yêu cầu xử lý:

– Thông tin Tác giả:

� Sự kiện ItemDataBound

� Kiểm tra dòng đang duyệt có phải là dòng dữ liệu không?: tt e.Item.ItemType, nếu thỏa:

� Tạo danh sách tác giả dựa trên giá trị khóa (Ms) : tt <DataList>.DataKeys(e.Item.ItemIndex)

Page 27: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 27

� Tìm điều khiển Tác giả (BulletedList) và liên kết danh sách tác giả với điều khiển này: pt e.Item.FindControl, các tt DataSource, DataTextField, DataValueField và pt DataBind của BulletedList

4.11: � Yêu cầu xử lý:

– Các nút Hiệu chỉnh, Cập nhật và Bỏ qua:

� Sự kiện ItemCommand

� Kiểm tra nút được nhấn: tt e.CommandName

� Là nút Hiệu chỉnh: xác định dòng chỉnh sửa: tt EditItemIndex

� Là nút Bỏ qua: trả về trạng thái ban đầu

� Là nút Cập nhật: tìm đk Mô tả và Đơn giá để lấy giá trị. Cập nhật 2 vùng Mo_ta và Don_gia vào bảng SACH. Trả về trạng thái ban đầu

� Liên kết dữ liệu

4.13: � Yêu cầu xử lý:

– Liên kết nguồn DL Sách với GridView:

� Sự kiện ItemDataBound của DataList

� Kiểm tra dòng hiện hành có phải là dòng đang chỉnh sửa?: tt e.Item.ItemType, nếu thỏa

� Tạo nguồn Sách thỏa điều kiện là các sách thuộc chủ đề hiện hành: tt <DataList>.DataKeys(e.Item.ItemIndex)

� Tìm đk GridView và liên kết nguồn DL trên: pt e.Item.FindControl, tt DataSource và pt DataBind của GridView

Lưu ý: dùng AccessDataSource thì không cần viết đọan code này

– Nút [+] và [-] :

� Sự kiện ItemCommand của DataList

� Kiểm tra nút được chọn: tt e.CommandName

o Là nút [+] : xác định dòng chỉnh sửa và liên kết dữ liệu với DataList: <DataList>.EditItemIndex = e.Item.ItemIndex

o Là nút [-] : trả về trạng thái ban đầu và liên kết dữ liệu với DataList: <DataList>.EditItemIndex = -1

Lưu ý: dùng AccessDataSource thì đọan code có thay đổi khi liên kết dữ liệu

4.16: � Yêu cầu xử lý:

– Nút Sửa, Không, Thêm: Sự kiện ItemCommand

� Kiểm tra nút được nhấn: tt e.CommandName

o Là nút Sửa, thay đổi tình trạng của DetalisView là chỉnh sửa và liên kết dữ liệu: <DetailsView>.ChangeMode(DetailsViewMode.Edit)

o Là nút Không, trả về tình trạng ban đầu và liên kết dữ liệu: <DetailsView>.ChangeMode(DetailsViewMode.ReadOnly)

o Là nút Thêm, thay đổi tình trạng của DetalisView là thêm mới và liên kết DL: <DetailsView>.ChangeMode(DetailsViewMode.Insert)

Page 28: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 28

– Nút Cập nhật: Sự kiện ItemUpdating

� Nhận giá trị các ô: CType(<DetailsView>.Rows(c.số).Cells(1).Controls(0), TextBox).Text. Kiểm tra Tên Nhà xuất bản, nếu không rỗng

o Nhận giá trị khóa: <DetailsView>.DataKey.Value

o Cập nhật vào bảng NHA_XUAT_BAN theo giá trị các ô, thỏa điều kiện Mnxb = Giá trị khóa

o Trả về trạng thái ban đầu và liên kết dữ liệu

– Nút Ghi: sự kiện ItemInserting

� Tương tự như xử lý của nút Cập nhật nhưng thêm mới một mẫu tin vào bảng NHA_XUAT_BAN

− Nút Hủy: sự kiện ItemDeleting

� Kiểm tra quan hệ dựa trên Mã NXB hiện hành: e.DataKey.Value, nếu hợp lệ

� Xóa dòng hiện hành

Lưu ý: dùng AccessDataSource thì không cần viết đọan các code trên

� Sử dụng AccessDataSource

– Thao tác thêm mới, cập nhật và hủy: không cần viết code xử lý

− Kiểm tra Tên Nhà xuất bản không được rỗng trước khi cập nhật: dùng tt e.NewValues.Item(0) trong sự kiện ItemUpdating

− Kiểm tra Tên Nhà xuất bản không được rỗng trước khi thêm mới: tt e.Values.Item(0) trong sự kiện ItemInserting

4.17: � Yêu cầu xử lý:

– Các nút trong cột Mã sách:

� Sự kiện RowCommand

� Xác định chỉ số dòng được chọn: tt e.CommandArgument

� Xác định giá trị khóa chính (Ms) của dòng hiện hành: tt <GridView>.DataKeys(chỉ số).Value

� Liên kết dữ liệu với DetailsView dựa vào khóa chính

Lưu ý: dùng AccessDataSource thì thay đổi tt SelectCommand, câu lệnh SQL có đk lọc cũng dựa trên giá trị khóa chính của dòng hiện hành

4.18: � Yêu cầu thiết kế:

– Tạo 3 điều khiển AccessDataSource dùng làm nguồn DL cho GridView, DetailsView và DropDownList

– Điều khiển AccessDataSource dùng làm nguồn DL cho DetailsView:

� SelectQuery: SELECT sach.*, Ten_nha_xuat_ban FROM [SACH] INNER JOIN Nha_xuat_ban ON sach.Mnxb= Nha_xuat_ban.Mnxb WHERE Mcd = @Mcd

� Trong đó: tham số @Mcd là giá trị được chọn của Lưới Chủ đề (GridView)

� DeleteQuery: DELETE FROM SACH WHERE Ms = @Ms

Page 29: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 29

� InsertQuery: INSERT INTO SACH(Ten_sach , Don_gia, Mo_ta, Hinh_minh_hoa, Mnxb, Mcd, Ngay_cap_nhat ) VALUES(?, ?, ?, ?, ?, ?, Date() )

� UpdateQuery: UPDATE SACH SET Ten_sach =?, Don_gia = ?, Mo_ta =?, Hinh_minh_hoa =?, Mnxb =?, Mcd=?, Ngay_cap_nhat=Date() WHERE Ms = @Ms

4.20: � Yêu cầu thiết kế:

– Điều khiển AccessDataSource dùng làm nguồn DL cho FormView:

� SelectQuery: SELECT * FROM [KHACH_HANG]

� DeleteQuery: DELETE FROM KHACH_HANG WHERE Mkh = @Mkh

� InsertQuery: INSERT INTO KHACH_HANG(Ho_ten, Dia_chi, Dien_thoai, Ten_dang_nhap, Mat_khau, Ngay_sinh, Gioi_tinh, Email) VALUES (?, ?, ?, ?, ?, ?, ?, ?)

� UpdateQuery: UPDATE KHACH_HANG SET Ho_ten = ?, Dia_chi = ?, Dien_thoai = ?, Ten_dang_nhap = ?, Mat_khau = ?, Ngay_sinh = ?, Gioi_tinh = ?, Email = ? WHERE Mkh = @Mkh

6.1: � Yêu cầu xử lý:

– Danh sách Chủ đề: (khi thiết kế)

� Thuộc tính NavigateUrl: "~/Man_hinh/Bai6_1.aspx?Mcd=" & Eval("Mcd")

� Thuộc tính Text: Eval(”Ten_chu_de”)

– Danh sách Sách:

� Sự kiện Load

� Kiểm tra tham số Mã chủ đề (Mcd) của trang: Request.QueryString(”Mcd”)

� Nếu khác rỗng thì liên kết dữ liệu với DataList có điều kiện lọc theo giá trị của tham số trên

� Ngược lại thì không cần điều kiện

– Khai báo 2 biến Session dùng để lưu trữ Tổng số tiền và Thông tin các sách được chọn mua (Mã sách, Tên sách, ...): kiểu số và kiểu ArrayList trong sự kiện Session_Start của tập tin Global.asax

– Xây dựng một lớp có tên XL_GIO_HANG, có các thông tin lưu trữ như sau: Mã sách, Tên sách, Đơn giá, Số lượng và Thành Tiền

– Nút :

� Sự kiện ItemCommand của DataList

� Kiểm tra nút nhấn: e.CommandName

� Tính tổng số tiền: Tìm đk Đơn giá và cập nhật biến Session Tổng số tiền

� Định nghĩa một đối tượng lưu trữ thông tin sách: khai báo biến kiểu XL_GIO_HANG và tìm các đk chứa thông tin sách

� Kiểm tra Mã sách đã trong giỏ hàng chưa?. Nếu chưa thì thì thêm đối tượng trên vào biến Session Thông tin sách, ngược lại thì tăng số lượng lên 1

– Thông tin giỏ hàng:

� Điều khiển HyperLink: tt NavigateURL= ~/Man_hinh/<Trang giỏ hàng>.aspx

Page 30: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 30

� Thể hiện Tổng tiền:

� Sự kiện PreRender của User Control

� Xuất giá trị của biến Session Tổng số tiền ra điều khiển Label

6.2: � Yêu cầu xử lý:

– Nguồn dữ liệu cho GridView: dùng biến Session Thông tin các sách

– Nút Sửa, Ghi, Không: thao các cập nhật xử lý trên mảng (là biến Session trên)

– Nút :

� Sự kiện RowCommand

� Duyệt mảng và hủy phần tử tại vị trí có chỉ số tương ứng với chỉ số dòng có đk CheckBox được chọn: pt <GridView>.Rows(chỉ số).FindControl(“tên CheckBox") và pt RemoveAt(chỉ số) của mảng

– Cập nhật giá trị cho điều khiển Tổng thành tiền và Tổng mặt hàng:

� Sử dụng 2 biến Session Tổng thành tiền và Thông tin các sách

� Cài đặt code trong thủ tục Liên kết dữ liệu (nếu có thủ tục này)

6.3: � Yêu cầu xử lý:

– Thể hiện nội dung chi tiết sách:

� Sự kiện Load của trang Default

� Định nghĩa một đối tuợng: kiểu System.Web.UI.Control

� Kiểm tra tham số Mã sách của trang: Request.QueryString(“Ms”)

� Nếu khác rỗng, thể hiện UC Nội dung chi tiết sách: pt Page.LoadControl(“Tên và đường dẫn của UC”)

� Ngược lại, thể hiện UC Danh sách Sách

� Thêm đối tượng trên vào trang: <PlaceHolder>.Controls.Add(đối tượng trên)

6.6: � Yêu cầu xử lý:

� Nội dung tập tin Web.sitemap dùng làm nguồn cho điều khiển TreeView:

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

<siteMapNode title="Trang chủ" description="Trang chủ" url="~/Man_hinh/Bai6_6.aspx">

<siteMapNode title="Bài 2" description="Bài tập số 2" >

<siteMapNode url="~/Man_hinh/Bai2_1.aspx" title="Bài 2.1" description="Bài tập 2.1" />

<siteMapNode url="~/Man_hinh/Bai2_2.aspx" title="Bài 2.2" description="Bài tập 2.2" />

</siteMapNode>

</siteMapNode>

</siteMap>

� Nội dung tập tin Menu.sitemap dùng làm nguồn cho điều khiển Menu:

Page 31: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 31

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

<siteMapNode url="~/Man_hinh/Bai6_5.aspx" title="Home" description="Trang chủ">

<siteMapNode title="Tham khảo" description="Các trang web tham khảo về ASP.Net" >

<siteMapNode url="http://www.w3schools.com/aspnet/default.asp" title="Hướng dẫn học ASP.Net" description="Bài 6.1" />

<siteMapNode url="http://msdn2.microsoft.com/en-us/library/ms644563.aspx" title="Xây dựng ứng dụng Web với ASP.Net" description="Bài 6.3" />

</siteMapNode>

</siteMapNode>

</siteMap>

� Khai báo 2 tập tin .sitemap trong tập tin web.config:

<system.web>

<siteMap defaultProvider="TreeViewXmlSiteMapProvider">

<providers>

<add name="TreeViewXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="Web.sitemap"/>

<add name="MenuXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="Menu.sitemap"/>

</providers>

</siteMap>

……………..

</system.web>

6.7: � Yêu cầu thiết kế:

– Tạo tập tin Default.skin trong thư mục App_Themes\Default

� Khai báo Default Skin:

<asp:TreeView

NodeStyle-Font-Names="Verdana"

NodeStyle-Font-Size="10pt"

NodeStyle-ForeColor="Black"

RootNodeStyle-Font-Bold="true"

ParentNodeStyle-Font-Italic="true"

ParentNodeStyle-Font-Underline="true"

NodeIndent="10"

Page 32: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 32

runat="server"

/>

� Khai báo Named Skin:

<asp:TreeView SkinId="Bookstore"

NodeStyle-Font-Names="Verdana"

NodeStyle-Font-Size="10pt"

NodeStyle-ForeColor="Black"

RootNodeStyle-Font-Bold="true"

ParentNodeStyle-Font-Italic="true"

ParentNodeStyle-Font-Underline="true"

NodeIndent="10"

runat="server"

/>

� Yêu cầu xử lý:

– Khai báo tt Theme ="Default“ trong định hướng @Page của trang

– Khi thay đổi mục chọn DropDownList:

� Sự kiện Page_PreInit

� Gán giá trị được chọn của đk DropDownList cho t.tính SkinID của điều khiển TreeView:

<TreeView>.SkinID = Request.Form(”Tên DropDownList”)

7.1: � Yêu cầu thiết kế:

– Cấu trúc của tập tin Chu_de.xml gồm 1 node gốc và các node con

– Các node con gồm có 2 thuộc tính: Mcd và Ten_chu_de

<?xml version="1.0" encoding="utf-8" ?> <TAI_LIEU> <CHU_DE Mcd="3" Ten_chu_de="Tiếng Việt"> </CHU_DE>

....

</TAI_LIEU>

7.2: � Yêu cầu xử lý:

– Khi mở trang: sự kiện Load

� Khai báo đối tượng tài liệu XML: kiểu XmlDocument

� Đọc tập tin Chu_de.xml: pt Load

� Xuất nội dung của tập tin trên ra màn hình:

� Khai báo node gốc và node con: kiểu XmlElement

� Xác định node gốc: tt DocumentElement của đối tượng tài liệu XML

� Duyệt tập hợp các node con có trong node gốc: tt ChildNodes

Page 33: Microsoft Word Baitap Aspnet1 TBmHx96nJQ 20140212031133 65671

TTDT – BMCNTT Trang 33

° Tạo mới 1 dòng trong Table

° Duyệt tập hợp các thuộc tính của node con: khai báo biến kiểu XmlAttribute và dùng tt Attributes của node con

+ Tạo mới một ô và khai báo thuộc tính giá trị cho ô

+ Thêm ô mới vào dòng mới

° Thêm dòng mới vào Table

7.3: � Yêu cầu xử lý:

– Khi mở trang: sự kiện Load

� Khai báo đối tượng tài liệu XML: kiểu XmlDocument

� Đọc tập tin Chu_de.xml: pt Load

� Xuất nội dung của tập tin trên ra đk Menu

� Khai báo node gốc và node con: kiểu XmlElement

� Xác định node gốc: tt DocumentElement của đối tượng tài liệu XML

� Duyệt tập hợp các node con có trong node gốc: tt ChildNodes

° Tạo 1 mục mới trên thực đơn: khai báo kiểu MenuItem

° Duyệt tập hợp các thuộc tính của node con: kiểu XmlAttribute

+ Kiểm tra và lần lượt khai báo các tt cần thiết cho mục mới của thực đơn: <MenuItem>.Value, <MuneItem>.Text và <XmlAttribute>.InnerText

° Xác định hình ảnh và URL của mục mới: <MenuItem>.ImageUrl và NavigateUrl

° Thêm mục mới vào điều khiển Menu: <Menu>.Item.Add(<mục mới>)

7.4: � Yêu cầu thiết kế:

– Điều khiển XmlDataSource:

� Thuộc tính DataFile: khai báo tập tin Chu_de.xml

– Điều khiển GridView:

� Thuộc tính DataSourceID: khai báo tên điều khiển XmlDataSource