4.2.1. Thiết kế giao diện
Giao diện trang chủ gồm một số sản phẩm mới nhất cùng các thông tin cơ bản của nó: hình ảnh, tên sản phẩm, mô tả ngắn và liên kết đến trang chi tiết sản phẩm.
<div class="title"><span class="title_icon">
<img src="images/bullet2.gif" alt="" title="" /></span>Sách mới</div>
<asp:Repeater ID="rep_BookList" runat="server"
OnItemDataBound="rep_BookList_ItemDataBound">
<ItemTemplate>
<div class="feat_prod_box">
<div class="prod_img">
<a href="Detail.aspx?id=<%#Eval("MaSach") %>">
<img
src="Photos/Thumb/<%#Eval("HinhMinhHoa") %>" alt="" title=""
border="0" />
</a>
</div>
<div class="prod_det_box">
<div class="box_top"></div>
<div class="box_center">
<div class="prod_title"><%#Eval("TenSach") %></div>
<p class="details">
<asp:Literal ID="lit_Description"
runat="server"></asp:Literal>
</p>
<a href="Detail.aspx?id=<%#Eval("MaSach") %>"
class="more">- xem chi tiết -</a>
<div class="clear"></div></div>
<div class="box_bottom"></div>
</div>
<div class="clear"></div>
</div>
</ItemTemplate> </asp:Repeater>
4.2.2. Xử lý tải dữ liệu
Chƣơng trình tải danh sách sản phẩm và gán vào thuộc tính DataSource của Repeater.
protected void Page_Load(object sender, EventArgs e) {
Session["Page"] = MainMenu.Default; if (!IsPostBack)
{
LoadData(); }
}
{
rep_BookList.DataSource = tbSachBUS.GetLimited(6); rep_BookList.DataBind();
}
protected void rep_BookList_ItemDataBound(object sender,
RepeaterItemEventArgs e) {
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
tbSach sach = (tbSach)e.Item.DataItem; Literal lit_Description =
(Literal)e.Item.FindControl("lit_Description"); lit_Description.Text =
sach.MoTa.Substring(0, 100) + "..."; }
}