web层的控件之三---CartList
这个应该是清单的控件的,他将会被放在CheckOut.aspx中,本来这个控件没有什么好讲的,但这边的实现功能出乎我意料:
<asp:WizardStep ID="wzdStep5" runat="server" AllowReturn="False" StepType="Complete"
Title="Receipt">
<div class="checkOutLabel">
Thank you for your order!<br /><br />
<PetShopControl:CartList ID="CartListOrdered" runat="server"/>
<br />
<p>
A total of <strong>
<asp:Literal ID="ltlTotalComplete" runat="server"></asp:Literal></strong> is
being charged to your credit card, ending with <strong>
<asp:Literal ID="ltlCreditCardComplete" runat="server"></asp:Literal></strong>.</p>
<p>
If you have any questions regarding this order, please contact our customer service
at anytime.</p>
<p>
The .NET Pet Shop Team</p>
</div>
</asp:WizardStep>
看上面CartList的ID是CartListOrdered,那么看下CheckOut.aspx.cs是怎么用这个控件的呢?
1 ///<summary>
2 /// Process the order
3 ///</summary>
4 protectedvoid wzdCheckOut_FinishButtonClick(object sender, WizardNavigationEventArgs e) {
5 if (Profile.ShoppingCart.CartItems.Count >0) {//说明有宠物下单了
6 if (Profile.ShoppingCart.Count >0) {//我觉得这个多余吧
7
8 // display ordered items
9 //应该是显示清单吧 调用CartList.aspx.cs中的Bind函数
10 CartListOrdered.Bind(Profile.ShoppingCart.CartItems);
11
12 // display total and credit card information
13 ltlTotalComplete.Text = ltlTotal.Text;
14 ltlCreditCardComplete.Text = ltlCreditCard.Text;
15
16 // create order
17 OrderInfo order =new OrderInfo(int.MinValue, DateTime.Now, User.Identity.Name, GetCreditCardInfo(), billingForm.Address, shippingForm.Address, Profile.ShoppingCart.Total, Profile.ShoppingCart.GetOrderLineItems(), null);
18
19 // 调用BLL.Order
20 Order newOrder =new Order();
21 newOrder.Insert(order);
22
23 // destroy cart
24 Profile.ShoppingCart.Clear();
25 Profile.Save();
26 }
27 }
28 else {
29 lblMsg.Text ="<p><br>Can not process the order. Your cart is empty.</p><p class=SignUpLabel><a class=linkNewUser href=Default.aspx>Continue shopping</a></p>";
30 wzdCheckOut.Visible =false;
31 }
32 }
我当初在看这个CartList控件的时候就在想,他后台有个Bind函数,那么什么时候才会去调用呢?这个时候再这边就用到了。那么在CheckOut.aspx.cs直接设置这个Bind函数可以吗?答案不可以。说了那么就还没有吧这个函数给贴出来:
publicvoid Bind(ICollection<CartItemInfo> cart)
{//ICollection是一种泛值类型 这里相当于IList,但我不知道怎么调用这个Bind函数
if (cart !=null) {
repOrdered.DataSource = cart;
repOrdered.DataBind();
}
}
为什么不行呢?因为控件在CheckOut.aspx中并没有全部显示出来,所以也就没有了repeater控件了,故怎么绑定数据呢?
分类:
dotNet
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南