您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > APSNET沈士根实验报告(四)
《Web编程基础》实验报告班级计专141学号14501111姓名黄跃翔完成日期2015.6.2实验室理工楼320指导老师沈士根、叶晓彤成绩__________实验题目[数据绑定](一)实验目的(1)掌握ListControl类控件与数据源的绑定方法(2)熟练掌握GridView控件的应用(3)掌握DetailsView控件的应用(二)实验内容及步骤1.设计并实现一个网上购物网站MyPetShop在解决方案中新建一个MyPetShop网站,再在该网站的根文件下分别添加Web窗体ProShow.aspx,ShopChat.aspx和SubmitCart.aspx。其中,ProShow.aspx作为展示页;ShopChat.aspx作为购物车页;SubmitCart.aspx作为结算页。2.参考实验7,分别在MyPetShop网站根文件下的APP_Data和App_Code文件夹中建立MyPetShop.mdf数据库和MyPetShop.dbml文件,操作后如图:《Web编程基础》实验报告3.将主教材程序源包中的Prod_Images文件夹复制到MyPetShop网站的根文件夹中。4.设计ProShow.aspx如图《Web编程基础》实验报告其中添加DropDownList和GridView控件各一个。关于其内的详细的Columms设置见书本。5.编写ProShow.aspx.cs中的方法代码publicpartialclassProShow:System.Web.UI.Page{//在所有方法外声明一个MyPetShopDataContext类实例MyPetShopDataContextdb=newMyPetShopDataContext();//Page_Load事件,将Category表中的CategoryId和Name字段值填充到ddlCategory下拉列表框,执行方法代码如下。protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){varcategories=fromcindb.Categoryselectnew{c.CategoryId,c.Name};foreach(varcategoryincategories){ddlCategory.Items.Add(newListItem(category.Name.ToString(),category.CategoryId.ToString()));}Bind();}}//编写自定义方法Bind(),该方法根据选择的CategoryId显示分类中包含的商品。privatevoidBind(){intcategoryId=int.Parse(ddlCategory.SelectedValue);varproducts=frompindb.Productwherep.CategoryId==categoryIdselectp;gvProduct.DataSource=products;gvProduct.DataBind();}//当改变ddlCategory中的分类名后,触发SelectedIndexChanged事件,此时,需要重新在gvProduct中显示该分类名包含的商品protectedvoidddlCategory_SelectedIndexChanged(objectsender,EventArgse){Bind();}//当改变gvProduct的当前页后,触发PageIndexChanging事件,此时,需要重新设置新的页面索引值。《Web编程基础》实验报告protectedvoidgvProduct_PageIndexChanging(objectsender,GridViewPageEventArgse){gvProduct.PageIndex=e.NewPageIndex;Bind();}6.设计Profile操作时,打开MyPetShop网站根文件夹下的Web.config,在system.web元素中,编写配置代码如下:anonymousIdentificationenabled=true/profilepropertiesgroupname=Cartaddname=ProIdtype=System.Collections.ArrayListallowAnonymous=true/addname=ProNametype=System.Collections.ArrayListallowAnonymous=true/addname=Qtytype=System.Collections.ArrayListallowAnonymous=true/addname=ListPricetype=System.Collections.ArrayListallowAnonymous=true/addname=TotalPriceallowAnonymous=true//group/properties/profile7.设计ShopCart.aspx如图:《Web编程基础》实验报告其中的Columms属性设置如图:详细设置见书本。8.编写ShopCart.aspx.cs中的方法代码Web窗体载入时,触发Page.load事件,将判断从ProShow.aspx传递过来的ProductId是否为空值,若非空,则获取ProductId值,再将ProductId值对应的商品信息添加到购物车。然后,显示购物车中包含的商品数据。代码如下:protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){if(Request.QueryString[ProductId]!=null){intid=int.Parse(Request.QueryString[ProductId]);AddProduct(id);}Bind();}}//自定义方法AddProduct(intid),将指定商品编号的商品添加到购物车:protectedvoidAddProduct(intid){intisExit=0;《Web编程基础》实验报告for(intj=0;jProfile.Cart.ProName.Count;j++){if(id==(int)Profile.Cart.ProId[j]){ints=(int)Profile.Cart.Qty[j];s++;Profile.Cart.Qty[j]=s;Profile.Save();isExit=1;}}if(isExit==0){MyPetShopDataContextdb=newMyPetShopDataContext();varproduct=(frompindb.Productwherep.ProductId==idselectp).First();Profile.Cart.ListPrice.Add(product.ListPrice);Profile.Cart.Qty.Add(1);Profile.Cart.ProId.Add(product.ProductId);Profile.Cart.ProName.Add(product.Name);Profile.Save();}//编写自定义方法Bind(),该方法将Profile.Cart中的所有购物记录存放到一个数据表dt中,再将dt作为数据源,绑定到gvCart。protectedvoidBind(){Profile.Cart.TotalPrice=TotalPrice().ToString();lblTotalPrice.Text=Profile.Cart.TotalPrice;DataTabledt=newDataTable();dt.Columns.Add(ProId);dt.Columns.Add(ProName);dt.Columns.Add(ListPrice);dt.Columns.Add(Qty);for(inti=0;iProfile.Cart.ProName.Count;i++){DataRowrow=dt.NewRow();row[0]=Profile.Cart.ProId[i];row[1]=Profile.Cart.ProName[i];row[2]=Profile.Cart.ListPrice[i];row[3]=Profile.Cart.Qty[i];dt.Rows.Add(row);}gvCart.DataSource=dt;gvCart.DataBind();《Web编程基础》实验报告}//编写自定义方法TotalPrice(),该方法用于计算机购物车中的购物总金额protecteddecimalTotalPrice(){decimalsum=0;for(intj=0;jProfile.Cart.ProName.Count;j++){intqty=(int)Profile.Cart.Qty[j];decimallistPrice=(decimal)Profile.Cart.ListPrice[j];sum+=qty*listPrice;}returnsum;}//按钮btnDelete的Click事件protectedvoidbtnDelete_Click(objectsender,EventArgse){intproductId=0;for(inti=0;igvCart.Rows.Count;i++){CheckBoxchkProduct=newCheckBox();chkProduct=(CheckBox)gvCart.Rows[i].FindControl(chkProduct);if(chkProduct!=null){if(chkProduct.Checked){productId=int.Parse(gvCart.Rows[i].Cells[1].Text);DeleteProduct(productId);}}}}//自定义方法DeleteProduct(intid),用于在购物车中删除指定购物记录protectedvoidDeleteProduct(intid){intj=0;for(inti=0;iProfile.Cart.ProName.Count;i++){if(id==(int)Profile.Cart.ProId[i]){j=i;break;}}《Web编程基础》实验报告Profile.Cart.ListPrice.RemoveAt(j);Profile.Cart.ProId.RemoveAt(j);Profile.Cart.ProName.RemoveAt(j);Profile.Cart.Qty.RemoveAt(j);Profile.Save();}//按钮btnClear的Click事件protectedvoidbtnClear_Click(objectsender,EventArgse){Profile.Cart.Qty.Clear();Profile.Cart.ProName.Clear();Profile.Cart.ProId.Clear();Profile.Cart.ListPrice.Clear();Profile.Save();Response.Redirect(ProShow.aspx);}//按钮btnComputeAgain的Click事件protectedvoidbtnComputeAgain_Click(objectsender,EventArgse){lblError.Text=;MyPetShopDataContextdb=newMyPetShopDataContext();for(inti=0;igvCart.Rows.Count;i++){TextBoxtxtQty=newT
本文标题:APSNET沈士根实验报告(四)
链接地址:https://www.777doc.com/doc-5221037 .html