Web程序设计实验指导书1116

//保存到ASPNETDB.mdf Profile.Save();

Response.Redirect(\, true); }

按钮btnComputeAgain被单击时执行的事件代码如下:

protected void btnComputeAgain_Click(object sender, EventArgs e) {

lblError.Text = \;

MyPetShopDataContext db = new MyPetShopDataContext();

//循环利用FindControl()找到TextBox控件txtQty,然后判断是否为空值,若非空,则在Product表中查找txtQty所在行商品编号确定的商品,从而比较txtQty中的输入值和商品的库存量 for (int {

TextBox txtQty = new TextBox();

txtQty = (TextBox)gvCart.Rows[i].FindControl(\); if (txtQty != null) {

var product = (from p in db.Product where p.ProductId == int.Parse(gvCart.Rows[i].Cells[1].Text)

select p).First();

if (int.Parse(txtQty.Text) > product.Qty) //库存不足 {

lblError.Text += \:库存不足,商品名为 \ + gvCart.Rows[i].Cells[2].Text + \的库存数量为 \; } else {

ChangeQty(int.Parse(gvCart.Rows[i].Cells[1].Text), int.Parse(txtQty.Text)); //调用自定义方法ChangeQty()改变存储在Profile中的购买数量

} } }

Bind(); //调用自定义方法Bind()显示购物车中商品

}

自定义方法ChangeQty()的代码如下: ///

/// 根据指定的商品编号,修改Profile中对应商品的库存量 ///

///

/// protected void ChangeQty(int id, int qty)

{

for (int {

if (id == (int {

Profile.Save(); } }

}

按钮btnSettle被单击时执行的事件代码如下:

protected void btnSettle_Click(object sender, EventArgs e) {

Response.Redirect(\, true);

}

按钮btnContinue被单击时执行的事件代码如下:

protected void btnContinue_Click(object sender, EventArgs e) {

Response.Redirect(\);

}

(7)设计SubmitCart.aspx

如图6-16所示,向SubmitCart.aspx页面添加1个用于布局的5行2列表格,合并相应的单元格,输入“填写发货地址:”、“送货地址:”、“邮编:”、“联系电话:”等信息,添加3个TextBox控件、2个Button控件和1个Label控件。适当调整各控件的大小和位置。分别设置各控件的属性ID值为:txtGoodsAddress、txtzip、txtPhone、btnContinue和btnSubmit。

图6-16 设计界面(5)

(8)编写SubmitCart.aspx事件代码

按钮btnContinue被单击时执行的事件代码如下:

protected void btnContinue_Click(object sender, EventArgs e) {

Response.Redirect(\);

}

按钮btnSubmit被单击时执行的事件代码如下:

protected void btnSubmit_Click(object sender, EventArgs e) {

MyPetShopDataContext db = new MyPetShopDataContext(); //在Order表中添加记录 Order order = new Order();

//目前假设订单的用户名都为“张三”,实际情况应保存登录的用户名。若使用ASP.NET 3.5登录系列控件实现用户管理,可通过返回登录的用户名 order.UserName = \张三\; order.OrderDate = DateTime.Now; order.Status = \未审核\;

//插入实体order,提交更改后即在Order表中插入一条记录

db.SubmitChanges(); //在OrderItem中添加记录 int id = order.OrderId; for (int {

OrderItem orderItem = new OrderItem(); orderItem.OrderId = id; orderItem.ProName = (string orderItem.ListPrice = (decimal orderItem.Qty = (int

orderItem.TotalPrice = (intdecimal db.SubmitChanges(); //修改Product表的商品库存

var product = (from c in db.Product where c.ProductId == (int select c).First(); product.Qty -= orderItem.Qty; db.SubmitChanges(); }

//清空各数组列表对象 \;

lblMsg.Text = \已经成功结算,谢谢光临!\; }

(9)从浏览ProductShow.aspx开始对MyPetShop网站进行测试。 2.利用DetailsView控件实现数据插入、编辑、删除等操作

(1)设计Web窗体

新建一个Web窗体,切换到“设计”视图。如图6-17所示,向页面添加1个DetailsView控件和3个LinqDataSource控件。

图6-17 设计界面(6)

(2)设置属性

①分别设置各控件的属性ID值为:dvProduct、ldsProduct、ldsCategory和ldsSupplier。 ②ldsProduct的数据选择配置如图6-18所示,配置完成后,再单击ldsProduct的智能标记,选中“启用删除”、“启用插入”和“启用更新”。

图6-18 “配置数据选择”界面

③配置ldsCategory的数据源为Category表,数据选择CategoryId和Name。 ④配置ldsSupplier的数据源为Supplier表,数据选择SuppId和Name。

⑤单击dvProduct的智能标记,选择数据源ldsProduct;选中“启用分页”、“启用插入”、“启用编辑”和“启用删除”;单击“编辑字段”,将CategoryId列和SuppId列分别转换为TemplateField。

⑥TemplateField字段CategoryId的编辑界面如图6-19所示,向EditItemTemplate和InsectItemTemplate分别添加1个DropDownList控件,并绑定到数据源ldsCategory。类似地设置TemplateField字段SuppId。

图6-19 设计界面(7)

⑦浏览建立的Web窗体进行测试。

实验七 主题、母版和用户控件

一.实验目的

(1) 掌握建立和使用用户控件的方法。

(2) 掌握利用母版页和内容页建立网页的方法。 (3) 掌握主题的建立和使用方法。

二.实验内容及要求

1. 设计用于显示商品类别和数量的用户控件 要求如下:

(1) 控件浏览效果如图7-1所示。

图7-1 控件测试页浏览效果

(2) 单击分类名称则跳转到ProductShow.aspx页,显示该类商品的列表。 (3) 测试该用户控件。

2. 利用母版页重新设计MyPetShop各页面 要求如下:

(1) 在给出的例子上进行修改。

(2) 母版页设计效果如图7-2所示。左边包含“实验内容1”建立的用户控件,右边为

ContentPlaceHolder控件ContentPlaceHolderRinght。

(3)

图7-2 母版页设计效果

(4) 利用母版页重新建立商品查看页ProductShow.aspx,浏览效果如图7-3所示,左边是商

品列表,单击分类名称则在右边分页显示对应类别的商品信息。

图7-3 “商品查看页”浏览效果

三.实验步骤

1. 设计用于显示商品类别和数量的用户控件

(1)打开网站MyPetShop,添加Web用户控件Category.ascx。

(2)Category.ascx的“设计”视图中添加一个GridWiew控件,设置属性ID值gvProduct。控件gvProduct的属性Columns值设置如图7-10所示,部添1个HyperLinkField字段和一个BoundField字段。在图7-10中,选择HyperLinkField字段设置其属性,属性设置如表7-1所示。选择BoundField字段字段设置其属性,属性设置如表7-2所示。

联系客服:779662525#qq.com(#替换为@)