# ShoppingCart.aspx 页面

说明：ShoppingCart.aspx网页使客户可以查看购物车的当前状态.他们也可以改变商品数量或移除一些项目。
使用说明：用户可以通过先改变文本框的值，然后单击"Update Your Shopping Cart"按钮来改变购物车里物品的数量。如果他们想结束购物,可以通过单击"Final Check Out"按钮来实现。
这个网页的逻辑被封装到三个事件句柄中:：Page_Load事件句柄、Update按钮调用的UpdateBtn_Click事件句柄和Checkout按钮调用的CheckoutBtn_Click事件句柄。网页包括了一些用于保持购物车信息的内部方法。
显示当前的记录项： Commerce数数据库中保持购物车信息,当用户向车中添加项目时，应用程序已经向数据库写入记录。为了跟踪记录哪笔记录对应哪个购物车，程序用"cart ID"标记每笔记录，而"cart ID,"是在ShoppingCartDB类中所创建，或者依据用户登陆名，或者如果用户还没有登陆，依据动态生成的GUID。
当ShoppingCart.aspx网页首次显示时, Page_Load 事件句柄调用内部PopulateShoppingCartList方法装入购物车,方法首先检查购物车中是否有项目,如果没有,通过设置Label控件的的文本来显示发生错误
在 DataGrid 控件中显示所有购物车记录，该控件包括对headers与footers, 一列的内嵌控件的支持,并更改记录外观(灰色)与数据绑定。
PopulateShoppingCartList方法通过调用ShoppingCartDB类的GetItems方法获取用户购物车中的记录集. GetItems方法依次使用ShoppingCartList 存储过程来从数据库获取记录。
一旦记录集获得,通过设置控件的 DataSource的属性将其与 DataGrid 控件绑定.然后通过调用 grid的 DataBind 方法把数据从记录集拷贝到表格,这一做法可使表格循环使用数据源为每个记录产生一行.每个记录的样式由DataGrid控件的一组列定义来决定。
更新记录信息： 当用户点击"Update Your Shopping Cart"按钮时,调用UpdateBtn_Click事件句柄,依次调用内部UpdateShoppingCartDatabase方法把购物车记录写回数据库.在更新之后,当为了刷新页面内的购物车表而首次显示页面时,该句柄调用同样前面用过的PopulateShoppingCartList方法。
结账离开： 如果用户点击"Final Check Out"按钮,便调用CheckoutBtn_Click事件句柄. 该句柄执行购物车的更新以确保数据库是当前最新的,并将用户转向Checkout.aspx网页
性能说明：一种可行的优化方法是存储表格缓冲域每一行的原始数值(更新前数值).这样的做法可以使我们确定是否数量文本框的值是否已经改变,并且只有当某一行的数值确实已经改变的时候,可使我们调用ShoppingCartDB类的UpdateItem方法. 进行操作时,即使没有任何改变,只要用户点击"Update Your Shopping Cart"按钮,网页就会更新每个记录并刷新表。