实验七列表页面设计与实现.docx
《实验七列表页面设计与实现.docx》由会员分享,可在线阅读,更多相关《实验七列表页面设计与实现.docx(29页珍藏版)》请在冰豆网上搜索。
![实验七列表页面设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-1/30/7dcb6200-65d6-417c-a179-1b06e6c48c32/7dcb6200-65d6-417c-a179-1b06e6c48c321.gif)
实验七列表页面设计与实现
实验七、列表页面设计与实现
一、教学目的
1.掌握三层架构应用程序的开发。
2.GridView控件的使用。
二、实验内容
1.以网上书店的数据库BookShop中的Storage表为例设计一个显示商品信息的列表功能,并能进行修改,删除及详细信息查询,设计界面效果如下图:
分析一下,本界面执行思路如下:
(1)打开页面时,选择某分类后,可以立刻显示该类的库存商品信息,如图所示;
(2)当选中某行或者某几行复选框时,直接点“批量删除”可以实现多条记录同时删除;
(3)当点“全选”复选框时,下面所有的行的复选框将被选中,然后可以执行“批量删除”;
(4)点“新增书籍”时,可以进入添加新书的页面;
(5)点某行的书名时,可以查看该记录的详细内容;
(6)点“修改”功能时,可以进入修改书籍的页面;
(7)点某行的“删除”功能时,可以立该删除该行记录;
我们对上面七条的操作进行总结,共有七个动作。
2.首先在Entity文件夹中定义一个专门针对Storage表操作的Storage实体类。
3.再根据前面总结的七个方法,发现要进行数据库操作的方法有七个。
针对CatogoryTable表的操作已经实现,不再考虑,并且执行批量删除时可以通过循环删除单条记录的方法实现,所以实际上对数据库的操作只需要实现五个方法即可,实现方法如下,在业务逻辑层和数据访问层中添加如下五个方法,并实现代码:
publicboolAddStorage(Storagegoods)方法
publicStorageGetModel(intsid)方法
publicDataSetGetStorageByCategoryID(intcategoryID)方法;
publicboolModifyStorage(Storagegoods)方法;
publicboolDeleteStorageByID(intID)方法。
4.新建五个存储过程,用于读取指定分类的库存商品信息、获取指定一条记录、添加一条记录、修改指定的记录、删除指定的记录,即无外乎增、删、查、改操作。
5.最后进入界面下的后台,对界面分析的七个动作进行逻辑设计即可完成。
三、仪器、设备、材料
微机(VS2005)
四、实验准备
1.理论知识预习及要求
ASP.NET应用程序开发的一般步骤。
类设计的一般步骤。
2.实验指导书预习及要求
先在草稿纸上编写主要程序代码,再上机调试。
3.其他准备
无
五、实验原理或操作要点简介
1.ASP.NET应用程序开发的一般步骤。
2.掌握三层开发的一般方法。
六、注意事项
⏹及时保存文件,避免死机或断电造成的文件丢失。
⏹实验过程中容易出现的问题:
1.机房装有2个操作系统。
注意选择第二个“应用软件编程系统”。
2.新建项目时,注意选择项目类型“C#”。
3.在C#.NET,窗口比较多,操作不当破坏了窗口的布局后,可通过“工具|选项”命令,在其对话框中选择“重制窗口布局”,恢复默认布局。
七、实验过程与指导
实现步骤如下:
步骤一:
在数据库中添加五个存储过程,代码如下:
//添加商品
CREATEPROCEDUREdbo.AddStorage
(
@NameNVarChar(500),
@TypeIDInt,
@ImageNVarChar(500),
@WriterNVarChar(500),
@PublisherNText,
@PublishDateDateTime,
@PublishTimesInt,
@ISBNNVarChar(50),
@PageCountInt,
@Pricefloat,
@IntroNText,
@ContentsNText,
@StorageCountInt,
@GoodsIDIntOutput
)
AS
INSERTINTOStorage
(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号获取商品
CREATEPROCEDUREdbo.GetStorageBySID
(
@SIDInt
)
AS
SELECT*FROMStorageWHERESID=@SID
//通过分类号获取商品
CREATEPROCEDUREdbo.GetStorageByCategoryID
(
@CategoryIDInt
)
AS
SELECT*FROMStorageWHERESTypeID=@CategoryID
//修改商品
CREATEPROCEDUREdbo.ModifyStorage
(
@NameNVarChar(500),
@ImageNVarChar(500),
@WriterNVarChar(500),
@PublisherNText,
@PublishDateDateTime,
@PublishTimesInt,
@ISBNNVarChar(50),
@PageCountInt,
@Pricefloat,
@IntroNText,
@ContentsNText,
@StorageCountInt,
@GoodsIDInt
)
AS
UPDATEStorage
SET
SName=@Name,
SImage=@Image,
SWriter=@Writer,
SPublisher=@Publisher,
SPublishDate=@PublishDate,
SPublishTimes=@PublishTimes,
SISBN=@ISBN,
SPageCount=@PageCount,
SPrice=@Price,
SIntro=@Intro,
SContents=@Contents,
SStorageCount=@StorageCount
WHERESID=@GoodsID
//删除商品
CREATEPROCEDUREdbo.DeleteStorageByID
@IDint
AS
deletefromStoragewhereSID=@ID
return
步骤二:
由于针对CatogoryTable表的CatogoryTable实体类前面的实验已经实现,这里不再实现,只定义一个针对Storage表的Storage实体类代码如下:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Xml.Linq;
///
///Storage的摘要说明
///
publicclassStorage
{
int_SID;
publicintSID
{
get{return_SID;}
set{_SID=value;}
}
string_SName;
publicstringSName
{
get{return_SName;}
set{_SName=value;}
}
int_STypeID;
publicintSTypeID
{
get{return_STypeID;}
set{_STypeID=value;}
}
string_SImage;
publicstringSImage
{
get{return_SImage;}
set{_SImage=value;}
}
string_SWriter;
publicstringSWriter
{
get{return_SWriter;}
set{_SWriter=value;}
}
string_SPublisher;
publicstringSPublisher
{
get{return_SPublisher;}
set{_SPublisher=value;}
}
DateTime_SPublishDate;
publicDateTimeSPublishDate
{
get{return_SPublishDate;}
set{_SPublishDate=value;}
}
int_SPublishTimes;
publicintSPublishTimes
{
get{return_SPublishTimes;}
set{_SPublishTimes=value;}
}
string_SISBN;
publicstringSISBN
{
get{return_SISBN;}
set{_SISBN=value;}
}
int_SPageCount;
publicintSPageCount
{
get{return_SPageCount;}
set{_SPageCount=value;}
}
string_SPageSize;
publicstringSPageSize
{
get{return_SPageSize;}
set{_SPageSize=value;}
}
int_SWordCount;
publicintSWordCount
{
get{return_SWordCount;}
set{_SWordCount=value;}
}
float_SPrice;
publicfloatSPrice
{
get{return_SPrice;}
set{_SPrice=value;}
}
string_SIntro;
publicstringSIntro
{
get{return_SIntro;}
set{_SIntro=value;}
}
int_SStorageCount;
publicintSStorageCount
{
get{return_SStorageCount;}
set{_SStorageCount=value;}
}
string_SContents;
publicstringSContents
{
get{return_SContents;}
set{_SContents=value;}
}
DateTime_SInTime;
publicDateTimeSInTime
{
get{return_SInTime;}
set{_SInTime=value;}
}
publicStorage()
{
//
//TODO:
在此处添加构造函数逻辑
//
}
}
步骤三:
定义一个针对Storage表操作的StorageAccess数据访问类,实现五个操作方法,代码如下:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Xml.Linq;
usingSystem.Data.SqlClient;
///
///StorageAccess的摘要说明
///
publicclassStorageAccess
{
DataAccessda=newDataAccess();
publicStorageAccess()
{
//
//TODO:
在此处添加构造函数逻辑
//
}
///
///添加商品
///
///
///
publicboolAddStorage(Storagegoods)
{
SqlParameter[]sqlparams=newSqlParameter[]{
newSqlParameter("@Name",SqlDbType.NVarChar,500),
newSqlParameter("@TypeID",SqlDbType.Int),
newSqlParameter("@Image",SqlDbType.NVarChar,500),
newSqlParameter("@Writer",SqlDbType.NVarChar,500),
newSqlParameter("@Publisher",SqlDbType.NText),
newSqlParameter("@PublishDate",SqlDbType.DateTime),
newSqlParameter("@PublishTimes",SqlDbType.Int),
newSqlParameter("@ISBN",SqlDbType.NVarChar,50),
newSqlParameter("@PageCount",SqlDbType.Int),
newSqlParameter("@Price",SqlDbType.Float),
newSqlParameter("@Intro",SqlDbType.NText),
newSqlParameter("@Contents",SqlDbType.NText),
newSqlParameter("@StorageCount",SqlDbType.Int),
newSqlParameter("@GoodsID",SqlDbType.Int)
};
sqlparams[0].Value=goods.SName;
sqlparams[1].Value=goods.STypeID;
sqlparams[2].Value=goods.SImage;
sqlparams[3].Value=goods.SWriter;
sqlparams[4].Value=goods.SPublisher;
sqlparams[5].Value=goods.SPublishDate;
sqlparams[6].Value=goods.SPublishTimes;
sqlparams[7].Value=goods.SISBN;
sqlparams[8].Value=goods.SPageCount;
sqlparams[9].Value=goods.SPrice;
sqlparams[10].Value=goods.SIntro;
sqlparams[11].Value=goods.SContents;
sqlparams[12].Value=goods.SStorageCount;
sqlparams[13].Direction=ParameterDirection.Output;
intresult=da.ExecuteNonQuery("AddStorage",sqlparams);
if(result>0)
{
goods.SID=Convert.ToInt32(sqlparams[13].Value);
returntrue;
}
else
returnfalse;
}
///
///根据分类ID获取货物列表
///
///
///
publicDataSetGetStorageByCategoryID(intcategoryID)
{
SqlParameter[]sqlparams=newSqlParameter[]{
newSqlParameter("@CategoryID",SqlDbType.Int),
};
sqlparams[0].Value=categoryID;
returnda.ExecuteQuery("GetStorageByCategoryID",sqlparams);
}
///
///获取一个商品对象实体
///
///
///
publicStorageGetModel(intsid)
{
SqlParameter[]sqlparams=newSqlParameter[]{
newSqlParameter("@SID",SqlDbType.Int),
};
sqlparams[0].Value=sid;
DataSetds=da.ExecuteQuery("GetStorageBySID",sqlparams);
Storagegoods=newStorage();
if(ds.Tables[0].Rows.Count>0)
{
goods.SID=int.Parse(ds.Tables[0].Rows[0]["SID"].ToString());
goods.SName=ds.Tables[0].Rows[0]["SName"].ToString();
if(ds.Tables[0].Rows[0]["STypeID"].ToString()!
="")
{
goods.STypeID=int.Parse(ds.Tables[0].Rows[0]["STypeID"].ToString());
}
goods.SImage=ds.Tables[0].Rows[0]["SImage"].ToString();
goods.SWriter=ds.Tables[0].Rows[0]["SWriter"].ToString();
goods.SPublisher=ds.Tables[0].Rows[0]["SPublisher"].ToString();
if(ds.Tables[0].Rows[0]["SPublishDate"].ToString()!
="")
{
goods.SPublishDate=DateTime.Parse(ds.Tables[0].Rows[0]["SPublishDate"].ToString());
}
if(ds.Tables[0].Rows[0]["SPublishTimes"].ToString()!
="")
{
goods.SPublishTimes=int.Parse(ds.Tables[0].Rows[0]["SPublishTimes"].ToString());
}
goods.SISBN=ds.Tables[0].Rows[0]["SISBN"].ToString();
if(ds.Tables[0].Rows[0]["SPageCount"].ToString()!
="")
{
goods.SPageCount=int.Parse(ds.Tables[0].Rows[0]["SPageCount"].ToString());
}
if(ds.Tables[0].Rows[0]["SPrice"].ToString()!
="")
{
goods.SPrice=float.Parse(ds.Tables[0].Rows[0]["SPrice"].ToString());
}
goods.SIntro=ds.Tables[0].Rows[0]["SIntro"].ToString();
goods.SContents=ds.Tables[0].Rows[0]["SContents"].ToString();
if(ds.Tables[0].Rows[0]["SStorageCount"].ToString()!
="")
{
goods.SStorageCount=int.Parse(ds.Tables[0].Rows[0]["SStorageCount"].ToString());
}
returngoods;
}
else
{
returnnull;
}
}
///
///根据商品ID号删除指定商品
///
publicboolDelete(intID)
{
SqlParameter[]sqlparams={
newSqlParameter("@ID",SqlDbType.Int,4)};
sqlparams[0].Va