实验七、列表页面设计与实现.doc_第1页
实验七、列表页面设计与实现.doc_第2页
实验七、列表页面设计与实现.doc_第3页
实验七、列表页面设计与实现.doc_第4页
实验七、列表页面设计与实现.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验七、列表页面设计与实现一、教学目的1.掌握三层架构应用程序的开发。2.GridView控件的使用。二、实验内容1. 以网上书店的数据库BookShop中的Storage表为例设计一个显示商品信息的列表功能,并能进行修改,删除及详细信息查询,设计界面效果如下图:分析一下,本界面执行思路如下:(1)打开页面时,选择某分类后,可以立刻显示该类的库存商品信息,如图所示;(2)当选中某行或者某几行复选框时,直接点“批量删除”可以实现多条记录同时删除;(3) 当点“全选”复选框时,下面所有的行的复选框将被选中,然后可以执行“批量删除”;(4)点“新增书籍”时,可以进入添加新书的页面;(5)点某行的书名时,可以查看该记录的详细内容;(6)点“修改”功能时,可以进入修改书籍的页面;(7)点某行的“删除”功能时,可以立该删除该行记录;我们对上面七条的操作进行总结,共有七个动作。2.首先在Entity文件夹中定义一个专门针对Storage表操作的Storage实体类。3.再根据前面总结的七个方法,发现要进行数据库操作的方法有七个。针对CatogoryTable表的操作已经实现,不再考虑,并且执行批量删除时可以通过循环删除单条记录的方法实现,所以实际上对数据库的操作只需要实现五个方法即可,实现方法如下,在业务逻辑层和数据访问层中添加如下五个方法,并实现代码:public bool AddStorage(Storage goods)方法public Storage GetModel(int sid)方法public DataSet GetStorageByCategoryID(int categoryID)方法;public bool ModifyStorage(Storage goods)方法;public bool DeleteStorageByID(int ID)方法。4.新建五个存储过程,用于读取指定分类的库存商品信息、获取指定一条记录、添加一条记录、修改指定的记录、删除指定的记录,即无外乎增、删、查、改操作。5.最后进入界面下的后台,对界面分析的七个动作进行逻辑设计即可完成。三、仪器、设备、材料微机(VS2005)四、实验准备1理论知识预习及要求ASP.NET应用程序开发的一般步骤。类设计的一般步骤。2实验指导书预习及要求先在草稿纸上编写主要程序代码,再上机调试。3其他准备无五、实验原理或操作要点简介1. ASP.NET应用程序开发的一般步骤。2.掌握三层开发的一般方法。六、注意事项n 及时保存文件,避免死机或断电造成的文件丢失。n 实验过程中容易出现的问题:1机房装有2个操作系统。注意选择第二个“应用软件编程系统”。2. 新建项目时,注意选择项目类型“C#”。3在C#.NET,窗口比较多,操作不当破坏了窗口的布局后,可通过“工具|选项”命令,在其对话框中选择“重制窗口布局”,恢复默认布局。七、实验过程与指导实现步骤如下:步骤一:在数据库中添加五个存储过程,代码如下:/添加商品CREATE PROCEDURE dbo.AddStorage( Name NVarChar(500), TypeID Int, Image NVarChar(500), Writer NVarChar(500), Publisher NText, PublishDate DateTime, PublishTimes Int, ISBN NVarChar(50), PageCount Int, Price float, Intro NText, Contents NText, StorageCount Int, GoodsID Int Output)ASINSERT INTO Storage (SName,STypeID,SImage,SWriter,SPublisher,SPublishDate,SPublishTimes,SISBN,SPageCount,SPrice,SIntro,SContents,SStorageCount) VALUES(Name,TypeID,Image,Writer,Publisher,PublishDate,PublishTimes,ISBN,PageCount,Price,Intro,Contents,StorageCount)SET GoodsID=IDENTITY/通过ID号获取商品CREATE PROCEDURE dbo.GetStorageBySID(SID Int)ASSELECT * FROM Storage WHERE SID=SID/通过分类号获取商品CREATE PROCEDURE dbo.GetStorageByCategoryID(CategoryID Int)ASSELECT * FROM Storage WHERE STypeID=CategoryID/修改商品CREATE PROCEDURE dbo.ModifyStorage( Name NVarChar(500), Image NVarChar(500), Writer NVarChar(500), Publisher NText, PublishDate DateTime, PublishTimes Int, ISBN NVarChar(50), PageCount Int, Price float, Intro NText, Contents NText, StorageCount Int, GoodsID Int )ASUPDATE StorageSET SName=Name,SImage=Image,SWriter=Writer,SPublisher= Publisher,SPublishDate=PublishDate,SPublishTimes= PublishTimes,SISBN= ISBN,SPageCount=PageCount,SPrice=Price,SIntro=Intro,SContents=Contents,SStorageCount=StorageCount WHERE SID=GoodsID/删除商品CREATE PROCEDURE dbo.DeleteStorageByIDID intASdelete from Storage where SID=IDreturn步骤二:由于针对CatogoryTable表的CatogoryTable实体类前面的实验已经实现,这里不再实现,只定义一个针对Storage表的Storage实体类代码如下:using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;/ /Storage 的摘要说明/ public class Storage int _SID; public int SID get return _SID; set _SID = value; string _SName; public string SName get return _SName; set _SName = value; int _STypeID; public int STypeID get return _STypeID; set _STypeID = value; string _SImage; public string SImage get return _SImage; set _SImage = value; string _SWriter; public string SWriter get return _SWriter; set _SWriter = value; string _SPublisher; public string SPublisher get return _SPublisher; set _SPublisher = value; DateTime _SPublishDate; public DateTime SPublishDate get return _SPublishDate; set _SPublishDate = value; int _SPublishTimes; public int SPublishTimes get return _SPublishTimes; set _SPublishTimes = value; string _SISBN; public string SISBN get return _SISBN; set _SISBN = value; int _SPageCount; public int SPageCount get return _SPageCount; set _SPageCount = value; string _SPageSize; public string SPageSize get return _SPageSize; set _SPageSize = value; int _SWordCount; public int SWordCount get return _SWordCount; set _SWordCount = value; float _SPrice; public float SPrice get return _SPrice; set _SPrice = value; string _SIntro; public string SIntro get return _SIntro; set _SIntro = value; int _SStorageCount; public int SStorageCount get return _SStorageCount; set _SStorageCount = value; string _SContents; public string SContents get return _SContents; set _SContents = value; DateTime _SInTime; public DateTime SInTime get return _SInTime; set _SInTime = value; public Storage()/TODO: 在此处添加构造函数逻辑/ 步骤三:定义一个针对Storage表操作的StorageAccess数据访问类,实现五个操作方法,代码如下:using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.SqlClient;/ /StorageAccess 的摘要说明/ public class StorageAccess DataAccess da = new DataAccess();public StorageAccess()/TODO: 在此处添加构造函数逻辑/ / / 添加商品 / / / public bool AddStorage(Storage goods) SqlParameter sqlparams = new SqlParameter new SqlParameter(Name,SqlDbType.NVarChar,500), new SqlParameter(TypeID,SqlDbType.Int), new SqlParameter(Image,SqlDbType.NVarChar,500), new SqlParameter(Writer,SqlDbType.NVarChar,500), new SqlParameter(Publisher,SqlDbType.NText), new SqlParameter(PublishDate,SqlDbType.DateTime), new SqlParameter(PublishTimes,SqlDbType.Int), new SqlParameter(ISBN,SqlDbType.NVarChar,50), new SqlParameter(PageCount,SqlDbType.Int), new SqlParameter(Price,SqlDbType.Float), new SqlParameter(Intro,SqlDbType.NText), new SqlParameter(Contents,SqlDbType.NText), new SqlParameter(StorageCount,SqlDbType.Int), new SqlParameter(GoodsID,SqlDbType.Int) ; sqlparams0.Value = goods.SName; sqlparams1.Value = goods.STypeID; sqlparams2.Value = goods.SImage; sqlparams3.Value = goods.SWriter; sqlparams4.Value = goods.SPublisher; sqlparams5.Value = goods.SPublishDate; sqlparams6.Value = goods.SPublishTimes; sqlparams7.Value = goods.SISBN; sqlparams8.Value = goods.SPageCount; sqlparams9.Value = goods.SPrice; sqlparams10.Value = goods.SIntro; sqlparams11.Value = goods.SContents; sqlparams12.Value = goods.SStorageCount; sqlparams13.Direction = ParameterDirection.Output; int result=da.ExecuteNonQuery(AddStorage, sqlparams); if (result 0) goods.SID = Convert.ToInt32(sqlparams13.Value); return true; else return false; / / 根据分类ID获取货物列表 / / / public DataSet GetStorageByCategoryID(int categoryID) SqlParameter sqlparams = new SqlParameter new SqlParameter(CategoryID,SqlDbType.Int), ; sqlparams0.Value = categoryID; return da.ExecuteQuery(GetStorageByCategoryID, sqlparams); / / 获取一个商品对象实体 / / / public Storage GetModel(int sid) SqlParameter sqlparams = new SqlParameter new SqlParameter(SID,SqlDbType.Int), ; sqlparams0.Value = sid; DataSet ds = da.ExecuteQuery(GetStorageBySID, sqlparams); Storage goods = new Storage(); if (ds.Tables0.Rows.Count 0) goods.SID = int.Parse(ds.Tables0.Rows0SID.ToString(); goods.SName = ds.Tables0.Rows0SName.ToString(); if (ds.Tables0.Rows0STypeID.ToString() != ) goods.STypeID = int.Parse(ds.Tables0.Rows0STypeID.ToString(); goods.SImage = ds.Tables0.Rows0SImage.ToString(); goods.SWriter = ds.Tables0.Rows0SWriter.ToString(); goods.SPublisher = ds.Tables0.Rows0SPublisher.ToString(); if (ds.Tables0.Rows0SPublishDate.ToString() != ) goods.SPublishDate = DateTime.Parse(ds.Tables0.Rows0SPublishDate.ToString(); if (ds.Tables0.Rows0SPublishTimes.ToString() != ) goods.SPublishTimes = int.Parse(ds.Tables0.Rows0SPublishTimes.ToString(); goods.SISBN = ds.Tables0.Rows0SISBN.ToString(); if (ds.Tables0.Rows0SPageCount.ToString() != ) goods.SPageCount = int.Parse(ds.Tables0.Rows0SPageCount.ToString(); if (ds.Tables0.Rows0SPrice.ToString() != ) goods.SPrice = float.Parse(ds.Tables0.Rows0SPrice.ToString(); goods.SIntro = ds.Tables0.Rows0SIntro.ToString(); goods.SContents = ds.Tables0.Rows0SContents.ToString(); if (ds.Tables0.Rows0SStorageCount.ToString() != ) goods.SStorageCount = int.Parse(ds.Tables0.Rows0SStorageCount.ToString(); return goods; else return null; / / 根据商品ID号删除指定商品 / public bool Delete(int ID) SqlParameter sqlparams = new SqlParameter(ID, SqlDbType.Int,4); sqlparams0.Value = ID; int result = da.ExecuteNonQuery(DeleteStorageByID, sqlparams); if (result 0) return true; else return false; / / 修改商品 / / / public bool ModifyStorage(Storage goods) SqlParameter sqlparams = new SqlParameter new SqlParameter(Name,SqlDbType.NVarChar,500), new SqlParameter(Image,SqlDbType.NVarChar,500), new SqlParameter(Writer,SqlDbType.NVarChar,500), new SqlParameter(Publisher,SqlDbType.NText), new SqlParameter(PublishDate,SqlDbType.DateTime), new SqlParameter(PublishTimes,SqlDbType.Int), new SqlParameter(ISBN,SqlDbType.NVarChar,50), new SqlParameter(PageCount,SqlDbType.Int), new SqlParameter(Price,SqlDbType.Float), new SqlParameter(Intro,SqlDbType.NText), new SqlParameter(Contents,SqlDbType.NText), new SqlParameter(StorageCount,SqlDbType.Int), new SqlParameter(GoodsID,SqlDbType.Int) ; sqlparams0.Value = goods.SName; sqlparams1.Value = goods.SImage; sqlparams2.Value = goods.SWriter; sqlparams3.Value = goods.SPublisher; sqlparams4.Value = goods.SPublishDate; sqlparams5.Value = goods.SPublishTimes; sqlparams6.Value = goods.SISBN; sqlparams7.Value = goods.SPageCount; sqlparams8.Value = goods.SPrice; sqlparams9.Value = goods.SIntro; sqlparams10.Value = goods.SContents; sqlparams11.Value = goods.SStorageCount; sqlparams12.Value = goods.SID; int result = da.ExecuteNonQuery(ModifyStorage, sqlparams); if (result 0) return true; else return false; 步骤四:定义一个针对Storage表操作的StorageBLL业务逻辑类,实现五个操作方法,代码如下:using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;/ /StorageBLL 的摘要说明/ public class StorageBLL StorageAccess sa = new StorageAccess();public StorageBLL()/TODO: 在此处添加构造函数逻辑/ public bool AddStorage(Storage goods) return sa.AddStorage(goods); / / 根据分类ID获取货物列表 / / / public DataSet GetStorageByCategoryID(int categoryID) return sa.GetStorageByCategoryID(categoryID); / / 获取一个对象实体 / / / public Storage GetModel(int sid) return sa.GetModel(sid); / / 修改商品 / / / public bool ModifyStorage(Storage goods) return sa.ModifyStorage(goods); / / 根据商品ID号删除指定商品 / public bool DeleteStorageByID(int ID) return sa.Delete(ID); 步骤五:设计一个商品信息管理页面,效果如下:一级分类和二级分类的设计方法请参考前面的实现,下面讲一下GridView表的设计:首先设计GridView控件的数据源,用ObjectDataSource3控件连接,如下图所示:设置DeleteParameters属性,如下图所示:设置SelectParameters属性,如下图所示:点Columns属性,显示字段对话框,添加如下图所示八个字段:其中第一、二、七、八个字段为模板字段,第三个字段为超链接字段,第四、五、六个为绑定字段,第三个超链接字段设置如下:注意DataNavigateUrlForm属性中设置为“GoodsView.aspx?goodsid=0”。第四、五、六个绑定字段的设置如下:下面设置模板字段,选中GridView控件,点右键显示下拉菜单,如下图,其中列出了四个模板字段选项供设计;选择Column0模板,对该模板进行设计,加入一个HiddenField控件,该控件主要是用来保存ID号,后面在获取某行时,可以通过HiddenField控件得到ID号,如果想显示ID号,可以将HiddenField控件换成Label控件,设计完成后,再点右键,可以选择结束模板,效果如下:接下来选择Column1模板,分别在ItemTemplate和HeaderTemplate模板中加入复选框,效果如下:选中“全选”复选框,设置其AutoPostBack为true,同时设置 CheckedChanged事件,双击该事件,在后台添加代码如下:protected void chkSelectAll_CheckedChanged(object sender, EventArgs e) CheckBox chkSelectAll = sender as CheckBox; foreach (GridViewRow row in this.GridView1.Rows) CheckBox chkSelected = row.Cells1.FindControl(chkSelected) as CheckBox; chkSelected.Checked = chkSelectAll.Checked; 注意ItemTemplate中的复选框取名为chkSelected, HeaderTemplate中的复选框取名为ckhSelectAll。接下来选择Column6模板,在其中添加一个LinkButton按钮,设置CommandName属性为“EditStorage”,当点选“修改”按钮时,实际上是通过CommandName属性来识别的。同时要设置修改的命令参数,点修改控件的右上角的智能图标,进行如下设置:接下来选择Column7模板,在其中添

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论