《第七章 后台商品管理.ppt》由会员分享,可在线阅读,更多相关《第七章 后台商品管理.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学习情境学习情境学习情境学习情境7 7 后台商品管理后台商品管理后台商品管理后台商品管理廖黎莉任务描述任务描述v熟练使用objectdatasource更新数据v熟练使用gridview的commandfield列完成数据的删除v熟练使用detailsview的编辑摸板和插入摸板设置数据编辑和插入的格式v能编写代码控制插入和更新的内容v熟练使用第三方控件freetextbox和日历控件7.1修改商品信息修改商品信息v熟练使用objectdatasource控件绑定业务逻辑层更新的方法v熟练使用detailsview控件的项模板和编辑模板来实现和编辑商品信息v会正确使用第三方控件:日历控件和fr
2、eetextbox控件v会正确使用detailsview控件的databound事件、itemupdating事件、itemupdated事件1.日历控件日历控件vCalendar控件:用于显示一个可选择的日历每次日期的显示、隐藏、日期选择操作都会将数据回传到服务器,占用服务器资源vJs版日历(p131)版本很多,使用My97DatePicker日历控件。将其存放在DatePicker文件夹中,整个文件夹放置在站点根路径上。在页面中添加对控件的引用,在文本框中添加使用该控件的代码。属性或事件说明SelectedDate属性获取或设置显示的日期VisibleDate属性当前可见的日期(默认显示的
3、月份)TitleFormat属性标题格式(“某月”或“某年某月”)SelectionChanged事件选择某日期后的事件2.上传控件上传控件v在中有一个用于上传文件的fileupload控件,使用起来非常方便。属性或事件说明FileName属性返回要上传文件的名称HasFile属性如果为true,表明该控件有文件要上传PostFile属性返回已经上传文件的引用SaveAs事件将所引用的文件上传给服务器,带一个String参数,该参数包含保存文件的位置 3.Freetextbox控件控件vFreetextbox控件是一种在线文本编辑的第三方控件,可以对录入的内容设置样式、排版等。v使用方法:添加
4、选项卡:右键单击工具箱,选择“添加选项卡”,命名选项卡为“编辑控件”选择项:右键单击“编辑控件”,选择“选择项”命令,打开“选择工具箱项”对话框,加入“FreeTextBox.dll”。单击“确定”按钮。FreeTextBox效果效果4.Detailsview模板字段模板字段vDetailsview控件允许执行编辑、删除和插入记录,和gridview控件一样,detailsview控件派生自basedataboundcontrol类。DetailsView控件控件v比较该控件与GridView控件的差别5.商品更新的实现商品更新的实现v用户在表示层web页面productdetails.asp
5、x中输入部分商品更新信息,在点击“更新”按钮后,首先执行表示层页面的后台代码中的事件dvproductlist_itemupdating事件过程,获取生产厂商id和商品类别id的参数值。商品更新的实现商品更新的实现表示层前台表示层前台web页面页面Productdetails.aspx表示层后台代码表示层后台代码Productdetails.aspx.cs业务逻辑层业务逻辑层Productmanager.cs数据访问层数据访问层Userservice.csDbhelper.cs用户输入商品信息“更新”按钮单击事件过程调用业务逻辑层Modifyproduct方法调用数据访问层Getproduct
6、byid方法数据库访问数据库显示更新成果更新后处理事件过程给实体对象赋更新的属性无返回值调用数据访问层modifyproduct返回结果无返回值返回数据实体对象product步骤一步骤一 配置数据源的更新方法配置数据源的更新方法v打开ProductDetails.aspx页面v配置数据源的更新方法选择业务对象:BLL.ProductsManager定义数据方法:UPDATE选项卡对应ModifyProduct方法定义参数:参数源为QueryString public static void ModifyProduct(string title,int ManufacturerId,int Ca
7、tegoryId,int AreaCount,string ManufacturerDescription,decimal UnitPrice,string MakeCompany,string TOC,DateTime ManufacturerDate,string ContentDescription,string editorComment,int id)if(ManufacturerDescription=null)ManufacturerDescription=;if(ContentDescription=null)ContentDescription=;if(ContentDesc
8、ription=null)ContentDescription=;if(editorComment=null)editorComment=;if(ContentDescription=null)ContentDescription=;if(editorComment=null)editorComment=;if(TOC=null)TOC=;Products Product=ProductsService.GetProductById(id);Product.Title=title;Product.UnitPrice=UnitPrice;Product.MakeCompany=MakeCompa
9、ny;Product.TOC=TOC;Product.Manufacturer=ManufacturerService.GetManufacturerById(ManufacturerId);Product.Category=CategoryService.GetCategoryById(CategoryId);Product.AreaCount=AreaCount;Product.ManufacturerDescription=ManufacturerDescription;Product.ManufacturerDate=ManufacturerDate;Product.ContentDe
10、scription=ContentDescription;Product.EditorComment=editorComment;ProductsService.ModifyProduct(Product);启示1.商品对象的各属性不能赋为空值;2.某些属性本身也是类对象,但在数据库中表现为数据表主键;3.业务逻辑层方法不可直接操作;数据表,但可通过数据访问层方法操作数据表。步骤二步骤二 设置设置DetailsView控件的编辑模板控件的编辑模板v单击DetailsView控件,选择“编辑字段”。v所有字段均为TemplatedField字段,顺序为:商品名称、出厂日期、商品图片、定价、产品类
11、别、生产厂商、产批序列号和产品摘要v在字段后添加“编辑、更新、取消”列v“商品名称”的编辑模板内添加TextBox控件,绑定Title字段,并添加非空验证控件RequiredFieldValidatorv“商品图片”的编辑模板内添加图片框和上传控件,图片框的ImageUrl绑定产品的序列号,代码如下:asp:Image ID=Image2 runat=server ImageUrl=Height=87px Width=107px/v“定价”的编辑模板内添加TextBox控件,绑定UnitPrice字段,并添加非空验证控件RequiredFieldValidator和正则表达式验证控件Regul
12、arExpressionValidator,格式为:d+(.dddd)?。步骤二步骤二 设置设置DetailsView控件的编辑模板控件的编辑模板v“产品类别”编辑模板内添加下拉列表DropDownList控件和隐藏控件HiddenField,新建对象数据源。隐藏控件与Category.Id绑定数据源设置查找方法为BLL.CategoryManager.GetAllCategories方法DropDownList控件的显示文本对应Name,值对应Id。v“生产厂商”编辑模板内添加下拉列表DropDownList控件和隐藏控件HiddenField,新建对象数据源。隐藏控件与Manufactur
13、er.Id绑定数据源设置查找方法为BLL.ManufacturerManager.GetAllManufacturers方法DropDownList控件的显示文本对应Name,值对应Id。v“商品摘要”编辑模板内添加FreeTextBox控件,代码如下:FTB:FreeTextBox ID=FreeTextBox1 runat=server BreakMode=Paragraph ButtonHeight=20 Width=600 Text=步骤三步骤三 添加事件代码添加事件代码vDetailsView的DataBound事件:数据绑定的时候加载的事件。进入商品编辑模式时,“产品类别”下拉列表
14、显示当前商品的类别信息;“商品厂商”下拉列表显示当前商品的厂商信息;vDetailsView的ItemUpdating事件:点击更新按钮,执行更新方法之前执行。在更新命令执行前,获取商品厂商和产品类别;vDetailsView的ItemUpdated事件:点击更新按钮,执行更新方法之后执行。在更新命令执行后,将更换的图片上传;DetailsView的的DataBound事件事件 protected void DetailsView1_DataBound(object sender,EventArgs e)if(DetailsView1.CurrentMode=DetailsViewMode.E
15、dit)DropDownList ddlManufacturer=this.DetailsView1.FindControl(DropDownList2)as DropDownList;HiddenField hfManufacturer=this.DetailsView1.FindControl(HiddenField2)as HiddenField;ddlManufacturer.SelectedValue=hfManufacturer.Value.Trim();DropDownList ddlCategory=this.DetailsView1.FindControl(DropDownL
16、ist1)as DropDownList;HiddenField hfCategoryId=this.DetailsView1.FindControl(HiddenField1)as HiddenField;ddlCategory.SelectedValue=hfCategoryId.Value.Trim();DetailsView的的ItemUpdating事件事件 protected void DetailsView1_ItemUpdating(object sender,DetailsViewUpdateEventArgs e)/获得生产厂商下拉列表的值 DropDownList ddl
17、Manufacturer=this.DetailsView1.FindControl(DropDownList2)as DropDownList;/添加生产厂商id的参数 this.odsProducts.UpdateParameters.Add(ManufacturerID,ddlManufacturer.SelectedValue);/获得商品类别 DropDownList ddlCategory=this.DetailsView1.FindControl(DropDownList1)as DropDownList;/添加商品类别ID的参数 this.odsProducts.UpdateP
18、arameters.Add(CategoryID,ddlCategory.SelectedValue);DetailsView的的ItemUpdated事件事件 protected void DetailsView1_ItemUpdated(object sender,DetailsViewUpdatedEventArgs e)FileUpload fulBook=this.DetailsView1.FindControl(FileUpload1)as FileUpload;Image imgBook=this.DetailsView1.FindControl(Image2)as Image;
19、string FileName=fulBook.FileName;if(FileName.Trim().Length!=0)string strpath=Server.MapPath(imgBook.ImageUrl);fulBook.PostedFile.SaveAs(strpath);/把图片保存在此路径中 7.2添加商品信息添加商品信息v熟练使用objectdatasource控件绑定业务逻辑层插入的方法v熟练使用detailsview控件的插入模板来插入商品信息v会熟练使用第三方控件:日历控件和freetextbox控件v会正确使用detailsview控件的databound事件、i
20、teminserting事件、iteminserted事件。添加商品的实现添加商品的实现表示层前台表示层前台web页面页面Productdetails.aspx表示层后台代码表示层后台代码Productdetails.aspx.cs业务逻辑层业务逻辑层Productmanager.cs数据访问层数据访问层Userservice.csDbhelper.cs点击“添加”按钮“添加”按钮单击事件过程调用业务逻辑层AddProduct方法调用数据访问层Getproductbykey()方法查找该商品存在?数据库访问数据库显示插入成功更新后处理事件过程返回商品信息products该商品不存在,调用Add
21、product()返回结果返回商品信息products已有该商品显示不能插入步骤一步骤一 配置数据源的插入方法配置数据源的插入方法v打开ProductDetails.aspx页面v配置数据源的更新方法选择业务对象:BLL.ProductsManager定义数据方法:INSERT选项卡对应AddProduct方法 public static void AddProduct(string title,string ProductKey,int CategoryId,int ManufacturerId,decimal UnitPrice,DateTime ManufacturerDate,stri
22、ng ContentDescription)Products Product=new Products();Product.Category=CategoryService.GetCategoryById(CategoryId);Product.Title=title;Product.ProductKey=ProductKey;Product.UnitPrice=UnitPrice;Product.Manufacturer=ManufacturerService.GetManufacturerById(ManufacturerId);Product.AreaCount=0;Product.Ma
23、nufacturerDate=ManufacturerDate;Product.ContentDescription=ContentDescription;Product.ManufacturerDescription=;Product.MakeCompany=;Product.TOC=;Product.EditorComment=;Product.Clicks=0;AddNewProduct(Product);启示1.商品对象的各属性不能赋为空值;2.某些属性本身也是类对象,但在数据库中表现为数据表主键;3.业务逻辑层方法不可直接操作;数据表,但可通过数据访问层方法操作数据表。若数据表中没有
24、该商品,则添加商品信息步骤二步骤二 设置设置DetailsView控件的插入模板控件的插入模板v单击DetailsView控件,选择“编辑字段”。v在字段后添加“新建、插入、取消”列v“商品名称”的插入模板内添加TextBox控件,绑定Title字段,并添加非空验证控件RequiredFieldValidatorv“商品图片”的插入模板内添加图片框和上传控件,图片框的ImageUrl绑定产品的序列号,代码如下:asp:Image ID=Image2 runat=server ImageUrl=Height=87px Width=107px/v“定价”的插入模板内添加TextBox控件,绑定Un
25、itPrice字段,并添加非空验证控件RequiredFieldValidator和正则表达式验证控件RegularExpressionValidator,格式为:d+(.dddd)?。v“产品序列号”的插入模板内添加TextBox控件,绑定ProductKey字段,并添加非空验证控件RequiredFieldValidator步骤二步骤二 设置设置DetailsView控件的编辑模板控件的编辑模板v“产品类别”插入模板内添加下拉列表DropDownList控件,新建对象数据源。数据源设置查找方法为BLL.CategoryManager.GetAllCategories方法DropDownLi
26、st控件的显示文本对应Name,值对应Id。v“生产厂商”插入模板内添加下拉列表DropDownList控件,新建对象数据源。数据源设置查找方法为BLL.ManufacturerManager.GetAllManufacturers方法DropDownList控件的显示文本对应Name,值对应Id。v“商品摘要”插入模板内添加FreeTextBox控件,代码如下:FTB:FreeTextBox ID=FreeTextBox1 runat=server BreakMode=Paragraph ButtonHeight=20 Width=600 Text=步骤三步骤三 添加事件代码添加事件代码vD
27、etailsView的ItemInserting事件:点击插入按钮,执行插入方法之前执行。在插入命令执行前,获取商品厂商、产品序列号和产品类别的值,并上传图片;vDetailsView的ItemInserted事件:点击插入按钮,执行插入方法之后执行。插入命令执行后,跳转到列表页;DetailsView的的ItemInserting事件事件 protected void dvProductList_ItemInserting(object sender,DetailsViewInsertEventArgs e)DropDownList ddlManufacturer=this.dvProduc
28、tList.FindControl(ddlManufacturer)as DropDownList;DropDownList ddlCategory=this.dvProductList.FindControl(ddlCategory)as DropDownList;this.odsProducts.InsertParameters.Add(ManufacturerID,ddlManufacturer.SelectedValue);this.odsProducts.InsertParameters.Add(CategoryID,ddlCategory.SelectedItem.Value);D
29、etailsView的的ItemInserted事件事件 protected void dvProductList_ItemInserted(object sender,DetailsViewInsertedEventArgs e)/上传图片 TextBox txtProductKey=this.dvProductList.FindControl(txtProductKey)as TextBox;FileUpload fulBook=this.dvProductList.FindControl(fulBook)as FileUpload;string FileName=fulBook.File
30、Name;if(FileName.Trim().Trim().Length!=0)string strpath=Server.MapPath(/images/ProductCovers/+txtProductKey.Text.Trim()+.jpg);fulBook.PostedFile.SaveAs(strpath);/把图片保存在此路径中 Response.Redirect(“ListOfProducts.aspx”);/执行页面跳转 7.3删除商品信息删除商品信息v熟练使用objectdatasource控件绑定业务逻辑层删除的方法v当单击gridview字段的“删除”按钮时,能弹出“确
31、认删除”对话框。删除商品的实现删除商品的实现表示层前台表示层前台web页面页面listofproducts.aspx表示层后台代码表示层后台代码listofproducts.aspx.cs业务逻辑层业务逻辑层Productmanager.cs数据访问层数据访问层Userservice.csDbhelper.cs点击“删除”按钮“删除”按钮单击事件过程调用业务逻辑层DeleteProducByIdt方法调用数据访问层DeleteProducById方法数据库访问数据库显示删除成功根据业务逻辑层返回的结果,进行处理不返回值不返回值返回结果总结归纳总结归纳v在中,数据的更新和插入可以通过数据源控件+数据绑定控件来实现。vObjectdatasource可以设置更新、插入和删除的方法。vDetailsview控件主要用于显示一个对象,用法与gridview控件类似。v数据验证可以用验证控件,不同的验证控件实现不同的验证功能。v上传控件用于将文件上传到服务器。v第三方控件 freetextbox控件的text属性是编辑文本的内容,以html形式呈现。vJs版日历也是第三方控件,具有页面无刷新、美观等特点。