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

Một phần của tài liệu CÔNG NGHỆ WEB NÂNG CAO XÂY DỰNG WEBSITES VỚI ASP.NET 2.0 (Trang 61)

3.7.1. Thiết kế giao diện

Giao diện của trang chi tiết đơn hàng là các chi tiết của đơn hàng đó và một danh sách các hàng hóa của đơn hàng đó. Danh sách hàng hóa đƣợc biểu diễn bằng một repeater chứa các cột: tên sách, số lƣợng, đơn giá, thành tiền.

<div>

<div class="title"> Chi tiết đơn hàng

</div>

<div>

<table width="100%" cellspacing="1" cellpadding="3"

border="0" bgcolor="#cccccc">

<tr>

<td style="width:30%">Mã đơn hàng</td>

<td style="width:70%">

<asp:Literal ID="lit_MaDonHang"

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

</td>

</tr>

<tr>

<td style="width:30%">Khách hàng</td>

<td style="width:70%">

<asp:Literal ID="lit_KhachHang"

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

</td>

</tr>

<tr>

<td style="width:30%">Ngày đặt hàng</td>

<asp:Literal ID="lit_NgayDatHang"

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

</td>

</tr>

<tr>

<td style="width:30%">Ngày giao hàng</td>

<td style="width:70%">

<asp:Literal ID="lit_NgayGiaoHang"

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

</td>

</tr>

<tr>

<td style="width:30%">Trị giá</td>

<td style="width:70%">

<asp:Literal ID="lit_TriGia"

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

</td>

</tr>

<tr>

<td style="width:30%">Đã giao hàng</td>

<td style="width:70%">

<asp:Literal ID="lit_DaGiaoHang"

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

</td> </tr> </table> </div>

<div style="padding-top:10px;">

<asp:Repeater ID="Repeater1" runat="server"

OnItemDataBound="Repeater1_ItemDataBound">

<HeaderTemplate>

<table cellspacing="1" cellpadding="3" width="100%"

bgcolor="#cccccc" border="0">

<thead>

<th>Sách</th> <th>Số lượng</th> <th>Đơn giá</th> <th>Thành tiền</th> </tr> </thead> <tbody> </HeaderTemplate> <ItemTemplate> <tr> <td>

<asp:Literal ID="lit_TenSach"

runat="server"></asp:Literal></td>

<td><%#Eval("SoLuong") %></td> <td><%#Eval("DonGia") %></td>

<td>

<asp:Literal ID="lit_ThanhTien"

runat="server"></asp:Literal></td>

</tr> </ItemTemplate> <FooterTemplate> </tbody> </table> </FooterTemplate> </asp:Repeater> </div>

<div style="width:100%;">

<div style="float:left;">

<pagerv2:pagerv2_8 ID="hyperlinkPager" runat="server"

CompactModePageCount="5"

GenerateFirstLastSection="true"

GeneratePagerInfoSection="false"

GenerateSmartShortCuts="false"

GenerateHiddenHyperlinks="false"

NormalModePageCount="5" OnCommand="hyperlinkPager_Command" />

</div>

</div>

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

Chƣơng trình lấy mã của đơn hàng cần xem chi tiết thông qua đối tƣợng Request, sau đó chƣơng trình tiến hành lấy các thông tin của đơn hàng đó điền vào các controls.

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { LoadData(); } }

private void LoadData() {

try {

int id = int.Parse(Request.QueryString["id"].ToString());

tbDonHang donHang = tbDonHangBUS.GetByID(id); lit_MaDonHang.Text = donHang.MaDH.ToString(); tbKhachHang khachHang = tbKhachHangBUS.GetByID(donHang.MaKH); lit_KhachHang.Text = khachHang.HoTen; lit_NgayDatHang.Text = donHang.NgayDatHang.ToString(); lit_NgayGiaoHang.Text = donHang.NgayGiaoHang.ToString(); lit_TriGia.Text = donHang.TriGia.ToString(); lit_DaGiaoHang.Text = donHang.DaGiao.ToString(); int total = 0;

Criteria cri = new Criteria();

cri.add(Condition.AND, tbCTDonHangColumns.MaDH, Condition.EQUAL, donHang.MaDH);

hyperlinkPager.PageSize =

int.Parse(ConfigurationManager.AppSettings["pagesize"]); tbCTDonHangCollection cTDonHangCollection =

tbCTDonHangBUS.Get(cri.Criter,

hyperlinkPager.CurrentIndex, hyperlinkPager.PageSize, tbCTDonHangColumns.MaCTDonHang.ToString(), OrderDirection.ASC.ToString(), out total);

Repeater1.DataSource = cTDonHangCollection; Repeater1.DataBind(); hyperlinkPager.ItemCount = total; if (hyperlinkPager.ItemCount <= hyperlinkPager.PageSize) hyperlinkPager.Visible = false; else hyperlinkPager.Visible = true; } catch { Response.Redirect("~/Admin/DonHangList.aspx"); } }

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)

{

if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)

{

tbCTDonHang cTDonHang = (tbCTDonHang)e.Item.DataItem; tbSach sach = tbSachBUS.GetByID(cTDonHang.MaSach); if (sach != null) { Literal lit_TenSach = (Literal)e.Item.FindControl("lit_TenSach"); lit_TenSach.Text = sach.TenSach; } Literal lit_ThanhTien = (Literal)e.Item.FindControl("lit_ThanhTien");

int tongTien = cTDonHang.SoLuong * cTDonHang.DonGia; lit_ThanhTien.Text = tongTien.ToString();

}

3.7.3. Xử lý phân trang

Khi ngƣời dùng cần chuyển trang, chƣơng trình chỉ cần cập nhật lại thuộc tính CurrentIndex của control pager, sau đó gọi phƣơng thức LoadData.

protected void hyperlinkPager_Command(object sender, CommandEventArgs e) { hyperlinkPager.CurrentIndex = int.Parse(e.CommandArgument.ToString()); LoadData(); }

Chƣơng 4. XÂY DỰNG PHÂN HỆ NGƢỜI DÙNG 4.1.1. TẠO TRANG MASTER PAGE

4.1.2. Thiết kế giao diện

4.1.2.1. Thiết kế phần đầu trang Web

Phần đầu trang web bao gồm logo và menu. Khi ngƣời dùng di chuyển vào trang web nào thì menu của trang ấy chuyển sang màu sắc khác.

<div class="header">

<div class="logo"><a href="Default.aspx"><img

src="images/logo.gif" alt="" title="" border="0" /></a></div>

<div id="menu">

<ul>

<% if ((MainMenu)Session["Page"] ==

MainMenu.Default) {%>

<li class="selected"><a

href="Default.aspx">Trang chủ</a></li>

<% } else { %>

<li><a href="Default.aspx">Trang chủ</a></li>

<% } %>

<% if ((MainMenu)Session["Page"] ==

MainMenu.About) {%>

<li class="selected"><a href="About.aspx">Giới thiệu</a></li>

<%} else { %>

<li><a href="About.aspx">Giới thiệu</a></li>

<%} %>

<% if ((MainMenu)Session["Page"] ==

MainMenu.MyAccount

&& Session["KhachHang"] == null) {%> <li class="selected"><a href="Login.aspx">Đăng nhập</a></li>

<% }

else if (Session["KhachHang"] == null) { %>

<li><a href="Login.aspx">Đăng nhập</a></li>

<%} else

%>

<li><a href="Login.aspx">Tài khoản</a></li>

<%} %>

<% if ((MainMenu)Session["Page"] ==

MainMenu.Register && Session["KhachHang"] == null) {%>

<li class="selected"><a

href="Register.aspx">Đăng ký</a></li>

<% } else if(Session["KhachHang"] == null) { %> <li><a href="Register.aspx">Đăng ký</a></li>

<%} %>

<% if ((MainMenu)Session["Page"] ==

MainMenu.Contact) {%>

<li class="selected"><a

href="Contact.aspx">Liên hệ</a></li>

<% } else { %>

<li><a href="Contact.aspx">Liên hệ</a></li>

<%} %>

<%if(Session["KhachHang"] != null) { %> <li>

<asp:LinkButton ID="lbt_Thoat" runat="server"

OnClick="lbt_Thoat_Click">Thoát</asp:LinkButton>

</li>

<%} %> </ul> </div>

</div>

4.1.2.2. Thiết kế phần thông tin giỏ hàng

Phần thông tin giỏ hàng bao gồm: số lƣợng sản phẩm, tổng số tiền và một liên kết đến trang chi tiết giỏ hàng.

<div class="cart">

<div class="title"><span class="title_icon">

<img src="images/cart.gif" alt="" title="" /></span>Giỏ hàng</div>

<div class="home_cart_content">

<asp:Literal ID="lit_Quantity"

runat="server"></asp:Literal> x sp | <span class="red">TỔNG:

<asp:Literal ID="lit_Total"

runat="server"></asp:Literal> VNĐ </span>

</div>

<a href="Cart.aspx" class="view_cart">Xem</a> </div>

4.1.2.3. Thiết kế phần danh sách chủ đề và sản phẩm đặc biệt

Phần danh sách chủ đề bao gồm các liên kết đến trang danh sách sản phẩm theo từng chủ đề.

Phần sản phẩm đặc biệt gồm hình ảnh và tên của các sản phẩm đặc biệt do nhân viên của cửa hàng quy định.

<div class="right_box">

<div class="title"><span class="title_icon"><img

src="images/bullet5.gif" alt="" title="" />

</span>Chủ đề</div>

<asp:Repeater ID="rep_Category" runat="server">

<HeaderTemplate>

<ul class="list">

</HeaderTemplate>

<ItemTemplate>

<li><a href="Category.aspx?id=<%#Eval("MaCD") %>"><%#Eval("TenChuDe") %></a></li> </ItemTemplate> <FooterTemplate> </ul> </FooterTemplate> </asp:Repeater> </div>

<div class="right_box">

<div class="title"><span class="title_icon">

<img src="images/bullet4.gif" alt="" title="" /></span>Đặt biệt</div>

<asp:Repeater ID="rep_Promotion" runat="server">

<ItemTemplate>

<div class="new_prod_box">

<a href="Detail.aspx?id=<%#Eval("MaSach") %>">

<%#Eval("TenSach") %> </a>

<div class="new_prod_bg">

<span class="new_icon">

<img src="images/special_icon.gif"

alt="" title="" />

</span>

<a href="Detail.aspx?id=<%#Eval("MaSach") %>">

<img

src="Photos/Thumb/<%#Eval("HinhMinhHoa") %>" alt="" title=""

class="thumb" border="0" />

</a> </div> </div> </ItemTemplate> </asp:Repeater> </div>

4.1.2.4. Thiết kế phần cuối trang Web

Phần cuối trang web gồm các liên kết đến một số trang web.

<div class="footer">

<div class="left_footer"><img src="images/footer_logo.gif"

alt="" title="" /></div> <div class="right_footer">

<a href="Default.aspx">Trang chủ</a>

<a href="About.aspx">Giới thiệu</a>

<a href="Contact.aspx">Liên hệ</a> </div>

</div>

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

Lấy thông tin giỏ hàng thông qua biến Session, sau đó điền các thông tin: số lƣợng sản phẩm, tổng số tiền vào các control đã thiết kế.

Chƣơng trình tiến hành tải danh sách chủ đề và danh sách sản phẩm đặc biệt gán vào thuộc tính DataSource của các Repeater tƣơng ứng.

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { LoadData(); } }

private void LoadData() {

ShoppingCart c = (ShoppingCart)Session["Cart"];

lit_Quantity.Text = c.ItemCollection.Count.ToString(); lit_Total.Text = c.Total().ToString();

rep_Category.DataSource = tbChuDeBUS.GetAll(); rep_Category.DataBind();

rep_Promotion.DataSource = tbSachBUS.GetPromotion(3); rep_Promotion.DataBind();

Một phần của tài liệu CÔNG NGHỆ WEB NÂNG CAO XÂY DỰNG WEBSITES VỚI ASP.NET 2.0 (Trang 61)

Tải bản đầy đủ (PDF)

(93 trang)