好久没有到CSDN了,前段时间因为在准备期末考试,一直在为考试做准备所以没有时间来博客写东西了。既然现在考试已经完毕,从今天开始做好我的寒假计划。
电子商务数据库表之间的关系:
今天我学着《亮剑-ASP.NET项目开发案例导航》做里面的电子商务系统,只做了首页部分。下图是电子商务系统的首页,如下图:
其实上图是首页通过母版页进行的。母版页的关键技术:
下图是左侧产品导航:
利用listview控件,设置好数据源后,从数据库中Eval()方法单向绑定产品信息。
<asp:ListView ID="ListView_ProductsMenu" runat="server"
DataSourceID="EDS_Category_Menu">
<EmptyDataTemplate>无菜单项...</EmptyDataTemplate>
<ItemSeparatorTemplate></ItemSeparatorTemplate>
<ItemTemplate>
<li>
<a href='<%# VirtualPathUtility.ToAbsolute("~/ProductsList.aspx?CategoryId="
+ Eval("CategoryID")) %>'><%# Eval("CategoryName") %></a>
</li>
</ItemTemplate>
<LayoutTemplate>
<ul>
<li runat="server" id="itemPlaceholder"></li>
</ul>
<div style="text-align: left;background-color:
#FFCC66;font-family: Verdana, Arial, Helvetica,
sans-serif;color: #333333;"></div>
</LayoutTemplate>
</asp:ListView>
下面图片显示的是页面的热门产品列表:
在前台的代码是:
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate></HeaderTemplate>
<ItemTemplate>
<a class="MostPopularItemText" href='ProductDetails.aspx?productID=<%# Eval("ProductId") %>'>
<%# Eval("ModelName") %></a> <br />
</ItemTemplate>
<FooterTemplate></FooterTemplate>
</asp:Repeater>
通过Repeater控件进行数据的绑定,当然这里的Eval()方法不能直接调用数据库表的ModelName属性。在该页面的后台(cs页)代码中:
var query = (from ProductOrders in db.OrderDetails
join SelectedProducts in db.Products
on ProductOrders.ProductID
equals SelectedProducts.ProductID
group ProductOrders by new
{
ProductId = SelectedProducts.ProductID,
ModelName = SelectedProducts.ModelName
}
into grp
select new
{
ModelName = grp.Key.ModelName,
ProductId = grp.Key.ProductId,
Quantity = grp.Sum(o => o.Quantity)
} into orderdgrp
where orderdgrp.Quantity > 0
orderby orderdgrp.Quantity descending
select orderdgrp).Take(5);
Repeater1.DataSource = query;
Repeater1.DataBind();
于是就对Repeater控件进行了数据的查询,在前段就能直接进行绑定了。