APSNET沈士根实验报告四Word文档下载推荐.docx
《APSNET沈士根实验报告四Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《APSNET沈士根实验报告四Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。
![APSNET沈士根实验报告四Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/01218df1-1d12-4579-9e82-54c516865266/01218df1-1d12-4579-9e82-54c5168652661.gif)
[iblNaiEcJ
口blListPriceJ
目品分类[iblFHo]
g晶描
[■"
T'
l・
r
[iblDescn]
库俗[IbLQty]
jfejhkM益昭插K]TgE口【jrgFiglTi
■宗
其中添加DropDownList和GridView控件各一个。
关于其内的详细的Columms设置见书本。
5.编写ProShow.aspx.cs中的方法代码
publicpartialclassProShow:
System.Web.UI.Page
{
〃在所有方法外声明一个MyPetShopDataContext类实例
MyPetShopDataContextdb=newMyPetShopDataContext();
//Page_Load事件,将Category表中的Categoryld和Name字段值填充到ddlCategory下拉列表框,执行方法代码如下。
~
protectedvoidPage_Load(objectsender,EventArgse)
厂
if(!
lsPostBack)
varcategories=fromcindb.Category
selectnew
c.CategoryId,c.Name
};
foreach(varcategoryincategories)
newListitem(category.Name.ToString().
ddlCategory.Items.Add(
category.CategoryId.ToStringO));
}
Bind();
}
/编写自定义方法BindQ,该方法根据选择的Categoryld显示分类中包含的商品。
privatevoidBind()
intcategoryld=int.Parse(ddlCategory.SelectedValue)
selectp;
varproducts=frompindb.Productwherep.Categoryld==categoryId
gvProduct.DataSource=products;
gvProduct.DataBindQ;
//当改变ddlCategory中的分类名后,触发SelectedlndexChanged事件,此时,需要重新在gvProduct中显示该分类名包含的商品
protectedvoidddlCategory_SelectedIndexChanged(objectsender,EventArgse){
//当改变gvProduct的当前页后,触发PagelndexChanging事件,此时,需要重新设置新的页面索引值。
protectedvoidgvProductPageIndexChanging(objectsender,GridViewPageEventArgse)
gvProduct.PageIndex=e.NewPageIndex;
6.设计Profile
操作时,打开MyPetShop网站根文件夹下的Web.config,在<system.web>元素中,编写配置
代码如下:
<
anonymousidentificationenabled="
true"
/>
profile>
properties>
groupname="
Cart"
>
addname="
ProId"
type="
System.Collections.ArrayList"
allowAnonymous="
/>
ProNametype="
allowAnonymous="
Qty"
ListPrice"
addname="
TotalPrice"
/group>
/properties>
/Profile>
7.
设计ShopCart.aspx如图:
其中的Columms属性设置如图:
详细设置见书本。
8.编写ShopCartaspx.cs中的方法代码
Web窗体载入时,触发Page.load事件,将判断从ProShow.aspx传递过来的ProductId是否为空值,若非空,则获取ProductId值,再将ProductId值对应的商品信息添加到购物车。
然后,显示购物车中包含的商品数据。
代码如下:
protectedvoidPageLoad(objectsender.EventArgse)
if(Request.QueryString["
ProductId"
]!
=null)
]);
intid=int.Parse(Request.QueryString["
AddProduct(id);
}//自定义方法AddProductsntid),将指定商品编号的商品添加到购物车:
protectedvoidAddProduct(intid)
intisExit=0;
for(intj=0;
j<
Profile.Cart.ProName.Count;
j++)
{I
if(id==(int)Profile.Cart.Prold[j])
ints=(int)Profile.Cart.Qty。
];
S++;
Profile.Cart.Qty。
]=s;
Profile.Save();
isExit=1;
MyPetShopDataContextdb=newMyPetShopDataContext();
varproduct=(frompindb.Productwherep.Productid==idselectp).First();
Profile.Cart.ListPrice.Add(product.ListPrice);
Profile.Cart.Qty.Add
(1);
Profile.Cart.Prold.Add(product.ProductId);
Profile.Cart.ProName.Add(product.Name);
//编写自定义方法Bind(),该方法将Profile.Cart中的所有购物记录存放到一个数据表dt中,
再将dt作为数据源,绑定到gvCart。
ProtectedvoidBindO
Profile.Cart.TotalPnce=TotalPriceQ.ToStringQ;
lblTotalPrice.Text=Profile.Cart.TotalPrice;
DataTabledt=newDataTable();
dt.Columns.Add(
"
ProId"
);
ProName"
ListPrice"
for(inti=0;
i<
i++)
DataRowrow=dt.NewRow();
row[0]=Profile.Cart.Prold[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();
//编写自定义方法TotalPrice(),该方法用于计算机购物车中的购物总金额
protecteddecimalTotalPrice()
decimalsum=0;
for(intj=O;
jvProfile.Cart.ProName.Count;
intqty=(int)Profile.Cart.Qty[j];
decimallistPrice=(decimal)Profile.Cart.ListPrice[j];
sum+=qty*listPrice;
returnsum;
//按钮btnDelete的Click事件
protectedvoidbtnDeleteClick(objectsender,EventArgse)
intproductId=0;
gvCart.Rows.Count;
CheckBoxchkProduct=newCheckBox();
chkProduct=(CheckBoXigvCart.Rows[i].FindControl("
chkProduct"
if(chkProduct!
if(chkProduct.Checked)
int.Parse(gvCart.Rows[i].Cells[1].Text);
productld=
DeleteProduct(productid);
_}
//自定义方法DeleteProduct(intid),用于在购物车中删除指定购物记录
protectedvoidDeleteProduct(intid)
intj=0;
for(inti=0;
if(id==(int)Profile.Cart.Prold[i])
j=i;
break;
Profile.Cart.ListPrice.RemoveAt(j);
Profile.Cart.Prold.RemoveAt(j);
Profile.Cart.ProName.RemoveAt(j);
Profile.Cart.Qty.RemoveAt(j);
Profile.SaveO;
//按钮btnClear的Click事件
protectedvoidbtnClearClick(objectsender,EventArgse)
Profile.Cart.Qty.Clear();
Profile.Cart.ProName.Clear();
Profile.Cart.Prold.Clear();
Profile.Cart.ListPrice.Clear();
ProShow.aspx"
Response.Redirect(
//按钮btnComputeAgain的Click事件
protectedvoidbtnComputeAgain_Click(objectsender.EventArgse)
MyPetShopDataContextdb=newMyPetShopDataContext();
for(inti=0;
//自定义方法ChangeQty,根据指定商品编号修改对应的购买数量
ProtectedvoidChangeQty(intid,intqty)
if(id==(int)Profile.Cart.Prold[i])
Profile.Cart.Qty[i]=qty;
//按钮btnSettle的Click事件
protectedvoidbtnSettle_Click(objectsender,EventArgse)
9.设计SumbitCart.aspx。
10.编写SumbitCart.aspx.cs中的方法代码:
protectedvoidbtnSubmit_Click1(objectsender,EventArgse)
Orderorder=newOrder();
order.UserName="
张三"
;
order.OrderDate=
DateTime.Now;
order.Addr1=txtZip.Text.Trim();
order.Zip=txtZip.Text.TrimO;
order.Phone=txtPhone.Text.Trim();
order.Status="
未审核"
db.Order.lnsertOnSubmit(order);
db.SubmitChangesO;
intid=order.Orderld;
OrderItemorderItem=newOrderItem();
orderltem.Orderld=id;
orderItem.ProName=(
string)Profile.Cart.ProName[i];
orderltem.ListPrice=(
decimal)Profile.Cart.ListPrice[i];
orderltem.Qty=(
int)Profile.Cart.Qty[i];
orderltem.TotalPrice=(
(int)Profile.Cart.ListPrice[i];
int)Profile.Cart.Qty[i]*
db.Orderltem.InsertOnSubmit(orderltem);
db.SubmitChanges();
varproduct=(
fromcindb.Productwherec.Productld==
(int)Profile.Cart.Prold[i]
selectc).First();
product.Qty-=orderltem.Qty;
Profile.Cart.ProName.Clear();
Profile.Cart.ListPrice.Clear();
HH
Profile.Cart.Qty.ClearQ;
Profile.Cart.TotalPrice=
11.从浏览ProShow.aspx开始对MyPetShop进行测试。
分类名’両
购物
车
Id
拥m:
名称
商砧价格
购英数fj;
Fnvhl
FniNunw
LhtPrke
Qty
D
1
Meno
12.10
—
|2
填写发货地址
控件实现数据插入、编辑、删除等操作
2.设利用DetailsView
⑴设计Web窗体:
ProductId
CategoryId
ListPrice
UnitCostSuppldNameDescnImage
LinqDataSource-IdsProduct
LinqDataSource-IdsCategory
LinqiDataSource-ld$9upplier
⑵①添加一个DetailsView控件和三个LinqDataSource控件,分别设其ID的属性值为:
dvProduct、
IdsProduct、ldsCategory和口ldsSupplier
②:
如图配置ldsProduct的数据源为Product表。
LinqDataSource任务
記區^J|<
f=5MSE
LinqDataSourC€-IdsProductP
LinqDataSource-ldsCategory
S启用更新
土启用LinqOataSource行目动U除卫)
③配置Category表如同步骤②④配置Supplier表如同步骤②⑤单击dvProduct的智能标记,选择数据源为ldsProduct启用分页插入、编辑、删除,单击“编辑字段"
将CategoryId和Suppid字段转化为TemplateField字段
榕此学瘢舷为恪绘Fimld
⑥配置Categoryld和Suppid字段如下图:
dvProduct-Field[l]-Categoryld
ItemTempfateiLabell]
AlternatingltemTerriplate
EdiitltemTemplate
InsertltemTemplate
I]数据绑定二J
HeaderTemplate
Productid
I
Categoryld
UnitCost
11.40
Suppid
Name
Veno
Desen
Image
\Pfadlraage&
FisK/meno,gii
100
编辑删除新建
12345678910
⑥浏览效果如下:
Productid2
ListPhee
Cat亡goryId
28.50
25.50
Eucalyptus
7ProdJmages/Fish/euc;
123456789
实验八拓展
在ItemTemple中插入两列如图:
(1)修改ProShow.aspx页面,要求增加“商品编号”和“商品分类号”的显示。
此步骤以在前面的实验中实现,
mpiare
然后再将Lable
]asp:
L3De鬥DI岡o|肺LiDil^ainej
[UJNq]口二尿I曲
D3taB!
ndings.,J
之后再编辑中输入
ind「Produ
(三)实验心得
1、遇到的问题和解决方法:
①实验中经常遇到SQL数据库版本过低不能加载的问题,也不知道为什么。
重启之后解决了。
2、收获:
回顾本次的实验目的,首先是要我们掌握ListControl类控件与数据源的绑定方法,其实在
前面的有一章已经使用过该控件,而经过这次制作学会了如何在ListControl类控件中显示
数据库数据。
接着是要我们熟练掌握GridView控件的应用,实验中让我体会最深的就是这
个控件用来显示二维表格式的数据,它能很方便的实现数据绑定、分页、排序、行选择、更
新、删除等等功能。
最后是DetailsView控件的应用,在制作前我浏览的书本,书本上的
特点就是表格只包含两个数据
GridView相比较就是多了
介绍是此控件以表格型式显示和处理来自数据库的单条记录,列。
一个逐行显示各字段名,一个显示对应字段名的数据值。
与
一个数据插入的功能。
在做完之后我发现了其实结合GridView和DetailsView管理数据是
非常方便的一个用于显示一个用于修改。
本次实验的编码的数据量比前面几个实验都要大,但用心做其实也不是非常难。