1、第三篇 数据操作篇,东鹏电子信息有限公司,2,内容,第 7 章 数据库与 ADO.NET 基础 第 8 章 Web 窗体的数据控件 第 9 章 ASP.NET 操作数据库 第 10 章 访问其他数据源,3,第 8 章 Web 窗体的数据控件,主讲:Jayce_Zou,4,本章内容 主讲:Jayce_Zou,数据源控件 数据列表控件 数据绑定控件,5,SQL 数据源控件(SqlDataSource) 主讲:Jayce_Zou,SqlDataSource 控件代表一个通过 ADO.NET 连接到 SQL 数据库提供者的数据源控件 。 并且 SqlDataSource 能够与任何一种 ADO.NET
2、 支持的数据库进行交互,这些数据库包括 SQL Server、ACCESS、 Oledb、Odbc 以及 Oracle。SqlDataSource 控件能够支持数据的检索、插入、更新、删除、排序等,以至于数据绑定控件可以在这些能力被允许的条件下自动的完成该功能,而不需要手动的代码实现。并且 SqlDataSource 控件所属的页面被打开时,SqlDataSource 控件能够自动的打开数据库,执行 SQL 语句或存储过程,返回选定的数据,然后关闭连接。SqlDataSource 控件强大的功能极大的简化了开发人员的开发,缩减了开发中的代码。但是SqlDataSource 控件也有一些缺点,就
3、是在性能上不太适应大型的开发,而对于中小型的开发,SqlDataSource控件已经足够了。,6,建立 SqlDataSource 控件 主讲:Jayce_Zou,ASP.NET 提供的 SqlDataSource 控件能够方便的添加到页面,当 SqlDataSource 控件被添加到 ASP.NET页面中时,会生成 ASP.NET 标签,示例代码如下所示:切换到视图模式下,点击 SqlDataSource 控件会显式【配置数据源】,单击【配置数据源】连 接时,系统能够智能的提供 SqlDataSource 控件配置向导。,7,SqlDataSource 控件配置向导 主讲:Jayce_Zou
4、,8,主讲:Jayce_Zou,9,主讲:Jayce_Zou,10,主讲:Jayce_Zou,11,主讲:Jayce_Zou,12,主讲:Jayce_Zou,13,主讲:Jayce_Zou,14,主讲:Jayce_Zou,15,Access 数据源控件(AccessDataSource) 主讲:Jayce_Zou,SqlDataSource 能够与任何一种ADO.NET 支持的数据源进行交互,这些数据源包括SQL Server、Access、Oledb、Odbc 以及Oracle。但是Access 数据库有专门的数据源控件,就是AccessDataSource。AccessDataSource
5、 控件同配置 SqlDataSource 控件基本相同。与 SqlDataSource 不同的是,SqlDataSource 主要采用的是 ConnectionString 属性连接数据库,而 Access 则采用的是 AccessDataSource 方式连接数据库。因为 Access 数据库是以文件的形式存在于系统中的,所以主要采用 DataFile 属性直接以文件地址的方式进行连接。要连接 Access 数据库,则必须选择 Access 数据库文件。,16,目标数据源控件(ObjectDataSource) 主讲:Jayce_Zou,大多数 ASP.NET 数据源控件,如 SqlData
6、Source 都是在两层应用程序层次结构中使用。在该层次结构中,表示层(ASP.NET 网页)可以与数据层(数据库和 XML 文件等)直接进行通信。但是,常用的应用程序设计原则是将表示层与业务逻辑相分离,而将业务逻辑封装在业务对象中。这些业务对象在表示层和 数据层之间形成一层,从而生成一种三层应用程序结构ObjectDataSource 控件通过提供一种将相关页上的数据控件绑定到中间层业务对象的方法,为三层结构提供支持。ObjectDataSource 使用中间层业务对象以声明方式对数据执行选择、插入、更新、删除、分页、排序、缓存 和筛选操作。ObjectDataSource 的业务对象是可以
7、用检索或更新数据的业务对象,例如 Bin 或 App_Code 目录中定义的对象,,17,主讲:Jayce_Zou,18,主讲:Jayce_Zou,19,Xml 数据源控件(XmlDataSource) 主讲:Jayce_Zou,与 AccessDataScource 相同的是,XmlDataSource 控件同样使用 DataFile 属性指定 XML 文件并加载 XML 数据,数据源是 XML 文件,单击【浏览】按钮选择数据文件, 选择数据源后,单击确定并完成数据源的配置即可,配置完成数据源后,XmlDataSource 控件的 HTML 代码如下所示:,20,主讲:Jayce_Zou,当
8、配置完成 XmlDataSource 后,就可以和数据绑定控件结合使用。在使用数据绑定控件前,先配置 XML数据文件,示例代码如下所示:新闻标题 1 2008 guojing 这是新闻正文 新闻标题 2 2008 guojing 这是新闻正文 ,21,主讲:Jayce_Zou,配置完成后,可以通过数据绑定控件来访问,可以使用 TreeView 控 件,示例代码如下所示:上述代码只能够显示 XML 数据文件中各个节点的名称,并不能显示各个节点的值,必须为显示的节点 做配置。在控件侧边单击【TreeNode 数据绑定】选项,并选择相应的列进行节点配置。,22,站点导航控件(SiteMapDataS
9、ource) 主讲:Jayce_Zou,如果需要使用 SiteMapDataSource 控件,用户必须在 Web.sitemap 文件中描述站点的结构,示例代码如下所示:,23,主讲:Jayce_Zou,SiteMapDataSource 控件无需配置,拖放一个 TreeView 控件和一个 SiteMapDataSource 控件在页面,指定 TreeView 数据源即可。,24,数据列表控件(DataList) 主讲:Jayce_Zou,DataList 控件支持各种不同的模板的样式,通过为 DataList 指定不同的样式,可以自定义 DataList 控件 的外观。DataList
10、控件常用属性如下所示:AltermatingItemStyle:编写交替行的样式。 EditItemStyle:正在编辑的项的样式。 FooterStyle:列表结尾处的脚注的样式。 HeaderStyle:列表头部的标头的样式。 ItemStyle:单个项的样式。 SelectedItemStyle:选定项的样式。 SeparatorStyle:各项之间分隔符的样式。,25,主讲:Jayce_Zou,通过修改 DataList 控件的相应的属性,能够实现复杂的 HTML 样式。而 DataList控件能够套用自定义格式实现更多的效果。 通过属性生成器,同样可以通过勾选相应的项目来生成属性,这
11、些属性能够极大的方便开发人员制作 DataList 控件的界面样式。,26,主讲:Jayce_Zou,编号姓名用户名密码年龄“,27,GridView 数据视图对象 主讲:Jayce_Zou,GridView 是 ASP.NET 中功能非常丰富的控件之一,它可以以表格的形式显示数据库的内容并通过数据源控件自动绑定和显示数据。开发人员能够通过配置数据源控件对 GridView 中的数据进行选择、排序、分页、编辑和删除功能进行配置。GridView 控件还能够指定自定义样式,在没有任何数据时可以自定义无数据时的 UI 样式。GridView 控件为开发人员提供了强大的管理方案,同样 GridVie
12、w 也支持内置格式,单击【自动套用格式】连接可以选择 GridView 中的默认格式。GridView 控件提供两个用户绑定到数据的选项,其一是使用 DataSourceID 进行数据绑定,这种方法通常情况下是绑定数据源控件;而另一种则是使用 DataSource 属性进行数据绑定,这种方法能够将 GridView 控件绑定到包括 ADO.NET 数据和数据读取器内的各种对象。,28,GridView 控件的常用事件 主讲:Jayce_Zou,RowCommand:在 GridView 控件中单击某个按钮时发生。此事件通常用于在该控件中单击某个按钮时执行某项任务。PageIndexChangi
13、ng:在单击页导航按钮时发生,但在 GridView 控件执行分页操作之前。此事件通常用于取消分页操作。PageIndexChanged:在单击页导航按钮时发生,但在 GridView 控件执行分页操作之后。此事件通常用于在用户定位到该控件中不同的页之后需要执行某项任务时。SelectedIndexChanging:在单击 GridView 控件内某一行的 Select 按钮(其 CommandName 属性设置为“Select”的按钮)时发生,但在 GridView 控件执行选择操作之前。此事件通常用于取消选择操作。SelectedIndexChanged:在单击 GridView 控件内某
14、一行的 Select 按钮时发生,但在 GridView 控件执行选择操作之后。此事件通常用于在选择了该控件中的某行后执行某项任务。,29,主讲:Jayce_Zou,RowCreated:在 GridView 控件中创建新行时发生。此事件通常用于在创建某个行时修改该行的布局或外观。RowDeleting:在单击 GridView 控件内某一行的 Delete 按钮(其 CommandName 属性设置为 “Delete”的按钮)时发生,但在 GridView 控件从数据源删除记录之前。此事件通常用于取消删 除操作。RowDeleted:在单击 GridView 控件内某一行的 Delete 按
15、钮时发生,但在 GridView 控件从数据 源删除记录之后。此事件通常用于检查删除操作的结果。RowEditing:在单击 GridView 控件内某一行的 Edit 按钮(其 CommandName 属性设置为“Edit” 的按钮)时发生,但在 GridView 控件进入编辑模式之前。此事件通常用于取消编辑操作。RowUpdated:在单击 GridView 控件内某一行的 Update 按钮时发生,但在 GridView 控件更新记 录之后。此事件通常用来检查更新操作的结果。,30,主讲:Jayce_Zou,示例代码如下所示:/ target=“_blank“查看详情 修改,31,数据绑
16、定控件(FormView) 主讲:Jayce_Zou,FormView 控件只能显示数据库中一行的数据,并且提供对数据的分页操作,FormView 控件可以以一种不规则的外观来将数据呈现给用户。FormView 控件同样支持模板,以方便开发人员自定义 FormView 控件的 UI,FormView 控件支持的模板如下所示: ItemTemplate:用于在 FormView 种呈现一个特殊的记录。 HeaderTemplate:用于指定一个可选的页眉行。 FooterTemplate:用于指定一个可选的页脚行。 EmptyDataTemplate:当 FormView 的 DataSourc
17、e 缺少记录的时候,EmptyDataTemplate 将会代替 ItemTemplate 来生成控件的标记语言。 PagerTemplate:如果 FormView 启用了分页的话,这个模板可以用于自定义分页的界面。 EditItemTemplate / InsertItemTemplate:如果 FormView 支持编辑或插入功能,那么这两种模板可以用于自定义相关的界面。,32,数据绑定控件(DetailsView) 主讲:Jayce_Zou,DetailsView 控件与 FormView 在很多情况下非常类似,DetailsView 控件通常情况下也只能够显示一行的数据,同FormV
18、iew,DetailsView 控件支持对数据源控件中的数据进行插入、删除和更新。DetailsView 控件与 FormView 控件不同的是,DetailsView 控件不支持 ItemTemplate 模板,这也就是说,DetailsView 控件是以一种表格的形式所呈现的。 DetailsView 控件能够支持 Ajax。DetailsView 控件可以通过选择是否包括更新,删除等操作,而无需手动的添加相应的事件,比 FormView 控件更加方便。,33,主讲:Jayce_Zou,当选择了【启用分页】选项后 DetailsView 控件就能够自动进行分页。开发人员可以配置 Pager
19、Settings 属性自定义 DetailsView 控件生成分页用户界面的外观,PagerSettings 属性的常用模式有:NextPrevious:以前一个,下一个形式显示。NextPreviousFirstLast:以前一个,下一个,最前一个,最后一个形式显示。Numeric:以数字形式显示。NumericFirstLast::以数字,最前一个,最后一个形式显示。,34,数据绑定控件(ListView) 主讲:Jayce_Zou,ListView 控件是介于 GridView 控件和 DataList 之间的另一种数据绑定控件,相对于 GridView 来说,它有着更为丰富的布局手段,
20、开发人员可以在 ListView 控件的模板内写任何 HTML 标记或者控件。相比于 GridView 和 DataList 控件而言,ListView 支持的模板如下所示:AlternatingItemTemplate:交替项目模板,用不同的标记显示交替的项目,便于查看者区别连续不断的项目。EditItemTemplate:编辑项目模板,控制编辑时的项目显示。EmptyItemTemplate:空项目模板,控制空项目的显示。GroupSeparatorTemplate:组分隔模板,控制项目组内容的显示。,35,主讲:Jayce_Zou,GroupTemplate:组模板,为内容指定一个容器对
21、象,如一个表行、div 或 span 组件。InsertItemTemplate:插入项目模板,用户插入项目时为其指定内容。ItemSeparatorTemplate:项目分隔模板,控制项目之间内容的显示。ItemTemplate 项目模板:控制项目内容的显示。LayoutTemplate:布局模板,指定定义容器对象的根组件,如一个 table、div 或 span 组件,它们包装 ItemTemplate 或 GroupTemplate 定义的内容。SelectedItemTemplate:已选择项目模板,指定当前选中的项目内容的显示。 其中最为常用的控件包括 LayoutTemplate
22、和 ItemTemplate,,36,示例代码 主讲:Jayce_Zou,ID: / TITLE: /,37,DataPager控件 主讲:Jayce_Zou,DataPager 控件通过实现 IPageableItemContainer 接口实现了控件的分页。在 ASP.NET 中,ListView 控件适合可以使用 DataPager 控件进行分页操作。要在 ListView 中使用 DataPager 控件只需 要在 LayoutTemplate 模板中加入 DataPager 控件。DataPager 控件包括两种样式,一种是“上一页/下一页”样式, 第二种是“数字”样式 :,38,主
23、讲:Jayce_Zou,当使用“上一页/下一页”样式时,DataPager 控件的 HTML 实现代码如下所示:,39,主讲:Jayce_Zou,使用“数字”样式时,DataPager 控件的 HTML 实现代码如下所示:除了默认的方法来显示分页样式,还可以通过向 DataPager 中的 Fields 中添加 TemplatePagerField 的方法来自定义分页样式。,40,小结 主讲:Jayce_Zou,本章介绍了有关 ASP.NET 中绑定数据和数据源相关的控件,在 ASP.NET 中,这些控件强大的功能让开发变得更加的简单。在 ASP.NET 中,正是因为这些数据源控件和数据绑定控件,让开发人员在页面开发时,无需更多的操作即可实现强大的功能,解决了在传统的 ASP 中难以解决的问题。本章还包括:ADO.NET:讲解了 ADO.NET,并介绍了使用 ADO.NET 连接数据库。 数据源控件:包括 SqlDataSource 等常用的数据源控件。 数据绑定控件:讲解了常用的数据绑定控件并使用数据绑定控件对数据进行更新,删除等操作。 数据操作无论是在 Web 开发还是在 WinForm 开发中,都是要经常使用的,数据控件能够极大的简化开发人员对数据的操作,让开发更加迅速。,