版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ASP.NET网站开发技术ASP.NET网站开发技术第六学习情境:商品采购管理系统学习情境:商品采购管理系统6.1 6.1 学习情境引入学习情境引入6.2 6.2 基础知识基础知识1 1:网上书店系统的数据库(选学):网上书店系统的数据库(选学)6.3 6.3 基础知识基础知识1 1: 数据源控件与静态查询数据源控件与静态查询6.4 6.4 基础知识基础知识2 2:常用数据绑定控件及基本数据操作:常用数据绑定控件及基本数据操作6.5 6.5 基础知识基础知识3 3:编程实现复杂的动态查询:编程实现复杂的动态查询 6.6 6.6 决策与计划决策与计划 6.7 6.7 实施实施 6.8 6.8 检
2、查与评价检查与评价ASP.NET网站开发技术6.1 6.1 学习情境引入学习情境引入6.1.1 6.1.1 网上书店后台管理的功能需求网上书店后台管理的功能需求6.1.2 6.1.2 网上书店后台管理的展示网上书店后台管理的展示( (参见第一章参见第一章) )6.1.3 6.1.3 网上书店后台管理技术分解网上书店后台管理技术分解ASP.NET网站开发技术.1网上书店后台管理的功能需求网上书店的后台管理需要多种管理功能。订单管理:订单查询、处理功能。 入库管理:新书入库、入库记录查询功能。图书管理:图书信息修改、类别管理功能。会员管理功能。ASP.NET网站开发技术6.1.36
3、.1.3网上书店后台管理技术技能分解网上书店后台管理技术技能分解1 1技术分解技术分解开发一个完整的系统需要很多技术,如商品采购管理系统主要应用了以下多种技术。(1)数据获取技术(2)数据绑定控件ASP.NET网站开发技术6.1.3 6.1.3 商品采购管理系统开发技能分解商品采购管理系统开发技能分解2 2学习安排学习安排本书按照资讯、学习情境引入、基础知识讲解、实施、小结等几个阶段来创建一个学习情境,读者要把自己置身于这个情境之中,既是学习者,又是项目实施者。ASP.NET网站开发技术6.2 6.2 基础知识:项目的开发环境基础知识:项目的开发环境6.2.1 6.2.1 创建数据库的操作创建
4、数据库的操作.2业务数据表业务数据表.3数据表间关系数据表间关系 .4存储过程和触发器存储过程和触发器ASP.NET网站开发技术6.2.1 创建数据库的操作创建数据库的操作1 1新建数据库新建数据库在“解决方案管理器”中,用鼠标右键单击网站名,选择“添加新项”选项,在出现的对话框中选择“SQL Server数据库”,输入数据库文件名“bookStore.mdf”,单击“添加”按钮,系统出现如图6-2所示的警示对话框,选择“是”,这样就会建立一个空数据库,而且在“服务器资源管理器”中将自动建立与该数据库的连接,另外,ASP.NET的保护机制不允许客
5、户端下载“App_Data”文件夹中的文件,从而可以使数据受到保护。ASP.NET网站开发技术在“服务器资源管理器”中,也可以创建SQL Server数据库。但要注意的是,数据库文件默认存放位置,是所选SQL Server服务器的数据文件夹,比如,SQL Server 2005 Express服务器的默认数据库文件位置为:“C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLData”,此文件夹中的数据库文件,在发布网站时,需要再将其复制到“App_Data”文件夹中,并修改网站的连接字符串。6.2.1 创建数据库的操作创建数据库的操作ASP.NET网
6、站开发技术6.2.1 6.2.1 创建数据库的操作创建数据库的操作2 2 添加数据库对象添加数据库对象在“App_Data”文件夹中创建新数据库后,在“服务器资源管理器”中,展开新数据库bookStore.MDF节点,将自动连接该数据库,并可定义各种数据库对象ASP.NET网站开发技术(1)添加表右击“表”节点,选择“添加新表”,会出现表结构文档选项卡,就可以定义表结构,保存时,会提示输入表名。6.2.1 6.2.1 创建数据库的操作创建数据库的操作ASP.NET网站开发技术(2)添加数据库关系图右击“数据库关系图”节点,选择“添加新关系图”,即可选择已有表,在表视图间拖动鼠标,即可在表间建立
7、外键关系,如图 6 4,按住OrderDetails表BookID列左侧拖动到Books上,将出现两个对话框,供选择表和列,以及修改外键关系的属性,默认情况下,单击“确定”即可。按住此处拖动图 6 4 可视化添加新关系图按住此处拖动6.2.1 6.2.1 创建数据库的操作创建数据库的操作ASP.NET网站开发技术(3)添加存储过程右击“存储过程”节点,选择“添加新存储过程”,会出现可供编辑的存储过程文档选项卡,并已有“Create Procedure”语句,编辑完成后,单击工具栏的保存按钮,即可运行此创建存储过程的语句。6.2.1 6.2.1 创建数据库的操作创建数据库的操作ASP.NET网站
8、开发技术(4)添加触发器在已经添加完成Orders表的情况下,展开“表”节点,右击“Orders”,选择“添加新触发器”,会出现可供编辑的触发器文档选项卡,并已有“Create Trigger”语句,编辑和保存方法与存储过程6.2.1 6.2.1 创建数据库的操作创建数据库的操作ASP.NET网站开发技术6.2.2 6.2.2 业务数据表业务数据表网上书店数据库包含自动生成的ASP.NET角色和成员资格数据部分,以及业务数据部分,本章仅涉及根据需求建立的业务数据部分。ASP.NET网站开发技术6.2.2 6.2.2 业务数据表业务数据表1 1、图书类别表、图书类别表用于保存图书类别信息,命名为
9、Categorys。类别信息本身是树形结构的,通过每个类别的“父类别ID”来转化为关系结构。该表设计结构如图 6 5所示。ASP.NET网站开发技术6.2.2 6.2.2 业务数据表业务数据表2 2、图书信息表、图书信息表用于保存图书信息,在进货、销售、库存链条中,用作库存表,命名为Books,其结构如图 6 6。ASP.NET网站开发技术3 3、入库表、入库表用于记录进货信息,如图 6 7所示。6.2.2 6.2.2 业务数据表业务数据表ASP.NET网站开发技术6.2.2 6.2.2 业务数据表业务数据表4 4 、用户表、用户表保存了用户(会员)信息,会员账户的其他信息保存在自动生成的AS
10、P.NET角色和成员资格数据表中,故此表命名为User2,其结构如图 6 8。关于ASP.NET角色和成员资格,参见后续章节的介绍。ASP.NET网站开发技术6.2.2 6.2.2 业务数据表业务数据表5 5、送货方式表、送货方式表为规范管理送货方式信息,防止用户输入混乱,专门建立了送货方式表,命名为SendModes,如图 6 9。ASP.NET网站开发技术6.2.2 6.2.2 业务数据表业务数据表6 6、付款方式表、付款方式表与送货方式类似,建立了付款方式表,命名为PayModes,图 6 10示出了该表结构。ASP.NET网站开发技术6.2.2 6.2.2 业务数据表业务数据表7 7、
11、订单表、订单表用户的订单信息,保存在Orders表中,其结构如图 6 11所示。订单表中并不保存订购的图书信息。ASP.NET网站开发技术6.2.2 6.2.2 业务数据表业务数据表8 8、订单详细表、订单详细表每个订单中订购的图书详细信息,保存在表OrderDetails中,其结构如图 6 12ASP.NET网站开发技术6.2.3 6.2.3 数据表间关系数据表间关系为避免误操作,根据业务需求,建立如图 6 13所示的外键关系。CategorysCategorysCategoryID FK_Books_CategorysOrdersOrdersOrderIDUserNameSendModeI
12、DPayModeIDUser2User2UserName FK_Orders_PayModes FK_Orders_SendModesOrderDetailsOrderDetailsPkOrderIDBookID FK_OrderDetails_Books FK_OrderDetails_Orders FK_Orders_User2BooksBooksBookIDCategoryIDSendModesSendModesSendModeIDPayModesPayModesPayModeIDInputInputInputIDBookID FK_Input_BooksASP.NET网站开发技术6.2
13、.46.2.4存储过程和触发器存储过程和触发器1 1、存储过程、存储过程(1)新书入库存储过程该存储过程接收某种将入库新书的所有信息作为输入参数,将其无条件插入到入库表Input中,并查询Books表中是否已经存在该种图书,若已经存在,除了库存数量一定要更新,还分别根据是否提供了图片文件、图书摘要、图书目录三个参数,决定是否更新图片文件、图书摘要、图书目录信息;若不存在,则将新书信息插入Books表。ASP.NET网站开发技术.4存储过程和触发器存储过程和触发器ASP.NET网站开发技术根据此流程,编写新书入库存储过程BookInput的T-SQL代码如下:CREATE PRO
14、CEDURE dbo.BookInputBookName nvarchar(50),BookPrice decimal(18,2),InputPrice decimal(18,2),BookPublisher nvarchar(50),BookISBN nvarchar (20),BookPublishDate datetime,BookAuthor nvarchar (50),BookQuantity int,CategoryID int,BookImage nvarchar (256),BookPageCount int,BookAddTime datetime,BookAbstract
15、nvarchar(4000),BookContents nvarchar (4000)asbegin declare bookId int,cmdStr nvarchar(1024)begin transaction .4存储过程和触发器存储过程和触发器ASP.NET网站开发技术-如果在Books表中已经存在,只更新数量,另判断图片文件、摘要、目录是否需要更新select bookId=BookID from Books where BookName=BookName and BookPrice=BookPrice and BookPublisher=BookPublisher
16、 and BookISBN=BookISBN and BookPublishDate=BookPublishDateand BookAuthor=BookAuthor and CategoryID=CategoryID and BookPageCount=BookPageCountif(bookId is not null)beginset cmdStr=update Books set BookQuantity=BookQuantity+.4存储过程和触发器存储过程和触发器ASP.NET网站开发技术+Convert(varchar,BookQuantity)-若提供了Book
17、Abstract参数,则以此为准更新对应字段-若此参数为null,则不更新,BookContents和BookImage类似。if(BookAbstract is not null)set cmdStr=cmdStr+,BookAbstract=+BookAbstractif(BookContents is not null)set cmdStr=cmdStr+,BookContents=+BookContentsif(BookImage is not null)set cmdStr=cmdStr+,BookImage=BookImageset cmdStr=cmdStr+ where Boo
18、kID=+Convert(varchar,bookId) exec(cmdStr).4存储过程和触发器存储过程和触发器ASP.NET网站开发技术endelsebegininsert into Books values (BookName,BookPrice,10.0,BookPublisher,BookISBN,BookPublishDate,BookAuthor,BookQuantity,CategoryID,BookImage,BookPageCount,BookAddTime,BookAbstract,BookContents)set bookId=scope_ident
19、ity()endinsert into Inputvalues(bookId,InputPrice,BookQuantity,BookAddTime)commit transactionendGO .4存储过程和触发器存储过程和触发器ASP.NET网站开发技术代码中“-”是T-SQL语言的注释符号。T-SQL中自定义变量均须以“”符号开头。“Convert(varchar,BookQuantity)”是T-SQL的转换函数,将BookQuantity变量转换为varchar类型。“exec(cmdStr)”用于将cmdStr字符串解释为T-SQL命令,并执行。“scope_id
20、entity()”将返回上一个Insert语句所影响的标识列值,此处即Books表中新增图书的BookID值。.4存储过程和触发器存储过程和触发器ASP.NET网站开发技术(2)新建订单存储过程由于订单表Orders的主键列OrderID是一个自动增量的标识列,所以,新建订单操作分为两个步骤:在Orders表中插入新记录,得到新增记录的OrderID;使用上述OrderID,在订单明细表OrderDetails表中插入该订单所属的若干购书信息记录。由于购书信息来自前台购物车,并且使用前台C#语言的循环语句能够简化编程,所以,存储过程中仅包括第步的功能,T-SQL代码如下所示:C
21、REATE proc dbo.NewOrderUserName nvarchar(256),Recipient nvarchar(20),Address nvarchar(256),.4存储过程和触发器存储过程和触发器ASP.NET网站开发技术Postalcode char(6),Phone varchar(50),SendModeID int,PayModeID int,OrderTime datetime,TreatRemark nvarchar(256),Outputed bit,TreatCompleted bitasbegininsert into Orders va
22、lues(UserName,Recipient,Address,Postalcode,Phone,SendModeID,PayModeID,OrderTime,TreatRemark,Outputed,TreatCompleted)-返回新建订单的ID,供插入订单明细表使用select scope_identity()endGO .4存储过程和触发器存储过程和触发器ASP.NET网站开发技术.4存储过程和触发器存储过程和触发器 2 2、触发器、触发器对于出库操作,用订单表Orders的Update触发器,实现Books表中的库存数量按订单明细减少功能。当然,有兴
23、趣的读者也可以尝试改为存储过程。管理员在订单处理时的任何修改,以及会员对个人订单的任何修改,都会运行该触发器,因此需要判断是否正在进行出库操作:管理员设置某订单(由OrderID确定该订单)的“是否已出库”Outputed字段,将其由false变为true,bit值为从0变1,即为出库操作。此时需要在OrderDetails表中查找此OrderID的所有图书(由BookID确定某图书)的购书数量,在Books表中将对应BookID图书的库存数量做相应减少。ASP.NET网站开发技术6.3 6.3 数据源控件与静态查询数据源控件与静态查询6.3.1 6.3.1 数据源控件的种类数据源控件的种类6
24、.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静态查询数据源控件实现静态查询ASP.NET网站开发技术ASP.NET的数据源控件现有7种类型,分别用于访问不同的数据来源:SqlDataSourceObjectDataSourceXmlDataSourceSiteMapDataSourceLinqDataSourceEntityDataSource.1数据源控件的种类数据源控件的种类ASP.NET网站开发技术.1数据源控件的种类数据源控件的种类1 1、SqlDataSourceSqlDataSource用于访问支持
25、SQL标准的数据库,比如MS SQL Server系列,实际上可以访问ADO.NET支持的所有数据源,连接种类包含SqlConnection、OleDbConnection、OracleConnection、OdbcConnection。由于数据库的普及应用,SqlDataSource数据源是ASP.NET中使用最普遍的数据源控件。ASP.NET网站开发技术.1数据源控件的种类数据源控件的种类2 2、AccessDataSourceAccessDataSource用于访问无用户名密码的Access数据库文件,不需提供连接字符串。如果Access数据库文件需要密码访问,还是必须使
26、用SqlDataSource。Access是微软提供的桌面数据库管理系统,功能有限。其使用方法和SqlDataSource类似,ASP.NET网站开发技术.1数据源控件的种类数据源控件的种类3 3、ObjectDataSourceObjectDataSource用于访问对象数据源。对象及其来源是非常广泛的:数据表可以对象化为DataTable或数组等对象,某个文件夹下的所有文件名及其属性可以对象化为DataTable或数组等对象,我们可以根据业务逻辑将任意元素都定义为对象。这样,ObjectDataSource就为我们提供了自由广泛的业务逻辑空间,而同时摆脱了绑定、排序、分页等
27、一般性的繁琐处理。ASP.NET网站开发技术.1数据源控件的种类数据源控件的种类4 4、XmlDataSourceXmlDataSource用于访问XML文件,XML(扩展标记语言)已经成为重要的跨平台信息表达、传输标准。XML文档最适合表达可以描述为层次结构的信息,所以,XmlDataSource一般绑定到TreeView、Menu等层次型(树型)的控件。ASP.NET网站开发技术.1数据源控件的种类数据源控件的种类5 5、SiteMapDataSourceSiteMapDataSource用于访问网站根目录的Web.sitemap文件,绑定到TreeView
28、、Menu等导航控件,而为网站提供站点地图功能。SiteMapDataSource是XmlDataSource的一个特例,只绑定到特定的Web.sitemap文件,该文件是一个标准的XML文档,包含了网站中的各级页面标题、页面地址等层次信息。ASP.NET网站开发技术.1数据源控件的种类数据源控件的种类6 6、LinqDataSourceLinqDataSource使用LinqDataSource访问数据库时,需要先建立LINQ对象,然后将其指定给LinqDataSource的属性。在网站中“添加新项”,添加“LINQ to SQL 类”,并进一步建立LINQ对象与数据库表、存
29、储过程之间的“1:1”映射,数据表映射为类,存储过程映射为方法,触发器因不会被前台调用而不会被映射。ASP.NET网站开发技术.1数据源控件的种类数据源控件的种类7 7、EntityDataSourceEntityDataSource使用EntityDataSource访问数据库时,需要先建立实体数据模型(EDM),即实体对象,然后将其指定给EntityDataSource的属性。在网站中“添加新项”,添加“ADO.NET Entity Data Model”,并按照向导提示做进一步的操作,即可生成相关的实体对象。ASP.NET网站开发技术6.3.2 6.3.2 使用使用Sql
30、DataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询SqlDataSource控件不但封装了ADO.NET无连接访问数据库的功能,还包含了绑定、排序、分页的功能。由于ASP.NET的数据源控件与页面数据绑定控件结合非常紧密,共同实现数据操作功能,本节将以GridView数据绑定控件为例来说明SqlDataSource数据源的使用ASP.NET网站开发技术6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询1 1、配置、配置SqlDataSourceSqlDataSource实现无条
31、件查询实现无条件查询例 6 1 配置SqlDataSource显示Input表的全部记录。新建一个Web窗体页,命名为InputQuery.aspx,在设计器代码视图输入其title为“入库单查询”(或在属性面板修改Title属性)。从工具箱“数据”选项卡中,拖一个GridView控件到页面上ASP.NET网站开发技术6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术单击GridView任务按钮,在“选择数据源”下拉框中选择“”,出现“数据源配置向导”对话框。6.3.2 6.3.2 使用使用
32、SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术单击“数据库”图标,系统将自动生成SqlDataSource类型的数据源,修改数据源ID为“SqlDataSourceInput”,如图 6 16,单击“确定”按钮,出现“配置数据源-SqlDataSourceInput”对话框,如图 6 17所示。在图中下拉列表里已经包含了“服务器资源管理器”中已经建立的所有连接和“App_Data”文件夹下的数据库文件的连接,一般情况下,选择一个即可。单击“新建连接”按钮,则可在“添加连接”对话框中,进一步输入服务器名和数据库名,创建或
33、附加一个数据库。在已经按照6.2.1创建数据库之后,我们在图 6 17中选择下拉列表中的“bookStore.mdf”即可,单击“下一步”按钮,如果是本网站首次使用此数据库,向导将出现图 6 18所示的提示。ASP.NET网站开发技术建议要保存此连接到配置文件中,配置文件即网站根目录下的web.config文件。如果不保存,整个网站中,每个访问此数据库的控件都将独立保存一个连接字符串,假如数据库文件的路径变了,修改起来比较麻烦。单击“下一步”,进入向导的“配置Select语句”环节,如图 6 19 ASP.NET网站开发技术如果选择“指定自定义SQL语句或存储过程”单选钮,则进入“定义自定义语
34、句或存储过程”对话框可以输入SQL语句(或使用查询生成器)或者指定已经存在的存储过程。网上书店管理系统Default.aspx页面中的“SqlDataSourceChangXiaoPaiHang”数据源控件,就使用了自定义查询语句;Managers/BookInput.aspx页面中的SqlDataSourceBooks数据源控件则使用了存储过程。如果选择“指定来自表或视图的列”,可以在下拉列表中选择某个表或视图,然后选择列,并自动生成对应的Select语句。“只返回唯一行”将为Select语句添加Distinct关键词;单击“WHERE(W)”按钮、“ORDER BY(R)”按钮将分别出现为
35、Select语句添加Where子句和OrderBy子句的对话框;单击“高级(V)”按钮则可以选择是否根据Select语句自动生成Insert、Delete、Update修改语句,以及修改时是否使用“开放式并发”,选择“开放式并发”,将会为Delete、Update语句的Where子句增添包含全部字段的旧值比较逻辑。6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术在本例中,我们选择“指定来自表或视图的列”,选择“Input”表,选择“*”,即所有列,单击“下一步”按钮,进入测试查询阶段,如图
36、 6 20。如果使用了自定义Select语句,为了分析Select语句是否正确,可以单击“测试查询”按钮进行测试,本例中我们单击“完成”按钮即可。6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术现在,注意观察使用向导完成数据源控件配置后,InputQuery.aspx页面标记代码中,增加了SqlDataSourceInput标记,并已经给ConnectionString和SelectCommand属性赋值,代码如下:asp:SqlDataSource ID=SqlDataSourceInp
37、ut runat=server ConnectionString= SelectCommand=SELECT * FROM Input其中“”,是一个ASP.NET表达式,ASP.NET表达式在aspx标记代码中以“%$”开头,最常见的用途就是在数据源控件中引用配置文件的连接字符串,运行时,将由配置文件中的连接字符串代替此处表示引用配置文件中“ConnectionStrings”节的name属性为“bookStoreConnectionString”的连接字符串,此时,我们可以对照观察图 6 18中保存连接字符串后,web.config文件中添加了以下配置代码:6.3.2 6.3.2 使用使用
38、SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术 ASP.NET网站开发技术最后,右击页面InputQuery.aspx,选择“在浏览器中查看”,则可看到如图 6 21的运行结果,无需编写任何代码,就已经能够显示入库表中数据。ASP.NET网站开发技术6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询2 2、配置、配置SqlDataSourceSqlDataSource实现单条件查询实现单条件查询例 6 1是把Input表中的所有记录都显示在了
39、页面中,而实际应用中一般都是按照用户输入的条件来查询,这当然需要有条件值的来源,比如页面上的一个文本框,用户在文本框的输入将用作查询参数,即SqlDataSource的SelectParameters属性。ASP.NET网站开发技术在“列”下列列表中列出了Input表的所有字段,选择“BookID”;“运算符”选择“=”;“源”下拉列表中列出了查询参数的可能来源,简单介绍如下:None:参数不是根据某个来源动态设置的,必须在“参数属性”部分输入常量值。Control:参数来自于页面控件,必须在“参数属性”部分选择当前页面已有的控件ID,也可输入默认值,以免发生异常,默认值是在用户还没有在控件中
40、输入值时的查询参数。Cookie:参数来源于客户端请求中所包含的一个Cookie。Form:参数来源于Form字段。Profile:参数来源于用户的配置文件。用户配置文件默认存储于ASP.NET角色和成员资格数据库中,类似于存储于数据库的Session,但其属性对象是强类型的。QueryString:参数来源于客户端请求URL中包含的一个查询字符串。Session:参数来源于Session变量。6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术现在,注意观察完成where子句配置后,Inpu
41、tQuery.aspx页面代码中SqlDataSourceInput的标记代码如下:asp:SqlDataSource ID=SqlDataSourceInput runat=server ConnectionString= SelectCommand=SELECT * FROM Input WHERE (BookID = BookID) 6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据
42、源控件实现静态查询态查询3 3、配置、配置SqlDataSourceSqlDataSource实现多条件查询实现多条件查询有时我们需要多条件查询,条件中的运算符也不一定是“等于”,比如:查询进货数量“超过”1000或者进价“高于”10元的入库记录。这样的查询实际上是在查询语句的where子句中包含多个条件。实现多条件查询,也可以仅用向导完成SqlDataSource的配置,而无需编写代码。除了使用SqlDataSource控件的任务按钮启动“数据源配置向导”,通过SqlDataSource控件的“SelectQuery”属性,还可以使用“命令和参数编辑器”向导,也属于数据源配置向导的一种,供开
43、发者更自由地设置查询条件。ASP.NET网站开发技术在InputQuery.aspx页面设计视图中,依次做如下操作:选中已有静态文本、TextBoxBookID控件,敲Delete键删除;重新输入静态文本:“查询进货数量多于”;拖入TextBox控件,ID设为“TextBoxInputQuantity”;输入静态文本:“或者进价高于”;拖入TextBox控件,ID设为“TextBoxInputPrice”;输入静态文本:“的入库记录”;此处不使用“SqlDataSourceInput”控件任务按钮启动配置数据源向导。选中“SqlDataSourceInput”控件,在属性面板中,单击“Sele
44、ctQuery”属性后的按钮,启动“命令和参数编辑器”向导,如图 6 25;单击“查询生成器”按钮,出现“查询生成器”对话框 6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术在“查询生成器”第二窗格中编辑,删除“BookID”列的筛选器,输入“InputPrice”列的筛选器为“ price”,再输入“InputQuantity”列的“或”筛选器为“ quantity”,此处的“price”和“quantity”是自定义的变量名,编辑完毕,单击“执行查询” 单击“查询生成器”的“确定”按钮
45、,返回如图 6 25的“命令和参数编辑器”,应注意到Select命令已经变化了,当然,也可以在“命令和参数编辑器”中手工输入Select命令语句,而不使用“查询生成器”;在“命令和参数编辑器”中,选中参数“BookID”,单击按钮,然后单击“刷新参数”按钮;选中“price”参数,选择“Control”参数源,选择ControlID为“TextBoxInputPrice”,选择后,参数值自动变为“TextBoxInputPrice.Text”,这是应为Text是文本框的缺省属性,如果所选控件的缺省属性不是所需要的参数来源,可以单击“显示高级属性”链接,进一步选择所选控件的哪个属性作为参数来源;
46、类似地设置“quantity”的参数源,设置完毕后 单击“确定”按钮。6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术在InputQuery.aspx页面设计视图中,依次做如下操作:选中已有静态文本、文本框控件,敲Delete键删除;重新输入静态文本:“请输入要查询的起始入库日期:”;拖入TextBox控件,ID设为“TextBoxInputTimeStart”;拖入ImageButton控件,ID设为“ImageButtonShowHideCalendarStart”;拖入Calenda
47、r控件,ID设为“CalendarStart”,Visible设为false,使用任务按钮自动套用格式,选择“彩色型1”,如图 6 31;回车;输入静态文本:“请输入要查询的终止入库日期:”;拖入TextBox控件,ID设为“TextBoxInputTimeEnd”;拖入ImageButton控件,ID设为“ImageButtonShowHideCalendarEnd”;拖入Calendar控件,ID设为“CalendarEnd”,Visible设为false,使用任务按钮自动套用格式,选择“彩色型2”,以与CalendarStart控件区别显示;回车 6.3.2 6.3.2 使用使用SqlD
48、ataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术使用与上例相似的步骤,通过“SqlDataSourceInput”控件的“SelectQuery”可视属性,使用“命令和参数编辑器”,修改其命令和参数单击“确定”,完成SqlDataSourceInput的配置。双击“ImageButtonShowHideCalendarStart”按钮,在InputQuery.aspx.cs代码编辑器中编写其Click事件委托函数如下:protected void ImageButtonShowHideCalendarStart_Click(ob
49、ject sender, ImageClickEventArgs e) CalendarStart.Visible = !CalendarStart.Visible;代码中只有一个赋值语句,将“CalendarStart”控件的Visble属性置为原来的相反值,即若原来日历控件隐藏,单击此图片按钮后就显示;若原来是显示的,单击后就隐藏。6.3.2 6.3.2 使用使用SqlDataSourceSqlDataSource数据源控件实现静数据源控件实现静态查询态查询ASP.NET网站开发技术双击“CalendarStart”控件,在代码编辑器中编写其SelectionChanged事件委托函数如下
50、:protected void CalendarStart_SelectionChanged(object sender, EventArgs e) TextBoxInputTimeStart.Text = CalendarStart.SelectedDate.ToShortDateString(); CalendarStart.Visible = false;这段代码将在用户选择了日历控件的一个日期后,回发并执行。代码中有两个赋值语句,第一句完成将用户在日历控件中选择的日期转换为T-SQL可识别的日期文本,并填入“TextBoxInputTimeStart”文本框的功能;第二句完成隐藏日历控
51、件的功能。ASP.NET网站开发技术对终止日期的“ImageButtonShowHideCalendarEnd”按钮和“CalendarEnd”控件,做上述类似的操作,相关代码如下:protected void ImageButtonShowHideCalendarEnd_Click(object sender, ImageClickEventArgs e) CalendarEnd.Visible = !CalendarEnd.Visible;protected void CalendarEnd_SelectionChanged(object sender, EventArgs e) Text
52、BoxInputTimeEnd.Text = CalendarEnd.SelectedDate.ToShortDateString(); CalendarEnd.Visible = false;在浏览器中查看页面,通过单击图片按钮,显示日历控件,单击日历控件中的一个日期,自动填入查询参数,最后单击“提交”按钮查看查询结果。本例编写了一点程序,只是为了方便用户使用,并没有为配置查询而编写程序。ASP.NET网站开发技术6.4 6.4 基本知识基本知识2 2:常用数据绑定控件及基本:常用数据绑定控件及基本数据操作数据操作6.4.1 DropDownList6.4.1 DropDownList等列表
53、类绑定控件及列表条等列表类绑定控件及列表条件查询件查询6.4.2 GridView6.4.2 GridView控件及主从表显示控件及主从表显示6.4.3 DetailsView6.4.3 DetailsView控件及单条数据修改控件及单条数据修改6.4.4 FormView6.4.4 FormView控件及单条数据修改的灵活布局控件及单条数据修改的灵活布局6.4.5 DataList6.4.5 DataList控件及数据显示的灵活布局控件及数据显示的灵活布局ASP.NET网站开发技术6.4.1 DropDownList6.4.1 DropDownList等列表类绑定控件及列等列表类绑定控件及列
54、表条件查询表条件查询DropDownList控件的列表项可以直接在Items集合属性中指定;也可以做数据绑定,从数据库中获取列表项。每个列表项是一个ListItem类对象,ListItem包含以下主要属性:Text属性:列表项的显示文本;Value属性:列表项的值,一般是显示文本对应的某种编码,也可以与Text相同。DropDownList做数据绑定时,需要设置以下属性:用DataSourceID属性指定数据源;DataTextField属性指定列表项的Text属性;DataValueField属性指定列表项的Value属性。ASP.NET网站开发技术6.4.2 GridView6.4.2 G
55、ridView控件及主从表显示控件及主从表显示GridView控件以表格形式显示数据源的数据,其结构由列(Columns)决定,每数据列对应一个字段(Field),而每数据行对应一条记录。GridView控件是功能强大的数据绑定控件,仅仅配置其基本属性就可以套用格式、实现分页/排序/选择/编辑/删除等功能;还可以详细配置每列的属性;而作为一种模板化的复合控件,除了数据行,还有标题行、脚注行、页导航行等,每种行的每列都可以作为普通控件的容器使用;GridView控件还提供了多种事件,供开发人员编写程序,灵活控制控件的显示和行为。ASP.NET网站开发技术6.4.2 GridView6.4.2 G
56、ridView控件及主从表显示控件及主从表显示1 1、基本配置、基本配置自动套用格式为了美化显示,ASP.NET为GridView预定义了多种显示样式,使用GridView控件的任务按钮,单击首项“自动套用格式”,即可在出现的对话框中选择一种预定义的显示样式,如图 6 40所示。选择“移除格式设置”即为不使用预定义格式。ASP.NET网站开发技术6.4.2 GridView6.4.2 GridView控件及主从表显示控件及主从表显示ASP.NET网站开发技术分页分页分页功能,是为了解决由于客户端一次显示全部数据,而可能会造成的网络拥塞、响应迟缓问题。在数据源控件的支持下,对GridView分页
57、非常简单,只需要在GridView控件的任务按钮中选中“启用分页”即可。“PageSize”属性用于设置每页的数据行数,如果需要改变默认的分页风格,可以进一步设置GridView控件的“PagerSettings”、“PagerStyle”属性。排序排序单击列标题链接按钮,使数据表按照本列进行升、降序排列,实现这一功能,也只需在任务按钮中选中“启用排序”。选定选定在任务按钮中选中“启用选定内容”后,GridView中每个数据行会多出一列,其中包含一个“选择”链接按钮,在浏览器中查看页面时,单击“选择”,就会选中该行,可以设置“SelectedRowStyle”属性以使选中行突出显示 6.4.2
58、 GridView6.4.2 GridView控件及主从表显示控件及主从表显示ASP.NET网站开发技术某行被选中后,GridView控件的一些属性值还会自动发生以下变化:SelectedIndex置为选中数据行的索引;SelectedRow为GirdView控件的选中行,选中行的状态为“Selected”(而不是Normal);SelectedDataKey为选中数据行的主键值(GridView的DataKeyNames属性设置了所绑定数据表的主键字段名称。若是组合主键,各字段名间以逗号分隔,此时SelectedDataKey是可索引的);SelectedValue为选中数据行的第一个主键字
59、段值,即SelectedValue等于SelectedDataKey0。利用上述特性,我们可以进行主从表同步绑定显示。6.4.2 GridView6.4.2 GridView控件及主从表显示控件及主从表显示ASP.NET网站开发技术数据绑定控件在功能上与数据源控件紧密结合。如果数据源控件配置了UpdateCommand和DeleteCommand属性,GridView控件还可以启用编辑和删除功能。即使数据源控件配置了InsertCommand属性,GridView控件也不具备插入功能。跟“启用选定内容”类似,启用了编辑、删除后,将在每个数据行都添加“编辑”、“删除”链接按钮,即GridView
60、控件的数据交互是按照“行”进行管理的。6.4.2 GridView6.4.2 GridView控件及主从表显示控件及主从表显示ASP.NET网站开发技术6.4.2 GridView6.4.2 GridView控件及主从表显示控件及主从表显示2 2、分列详细设置及友好显示、分列详细设置及友好显示前面例子中,数据表的显示很有很多不足,比如:列标题是否可以显示为汉字?时间列是否可以显示为“年月日”的形式显示?“选择”列可否显示为“明细”?可否将“编辑”列放在表格中的最右侧?这些问题,都可以通过单击任务按钮的“编辑列”,在“字段”对话框中进行详细设置来解决。对列做的改动,将会影响标题行、所有数据行、尾
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论