文章教程

13.3DetailsView和FormView控件

8/31/2020 9:37:14 PM 人评论 次浏览

13.3 DetailsView和FormView控件

DetailsView控件主要用来显示数据源的单个记录,其中,每个数据行表示记录中的一个字段。FormView控件用于一次显示数据源中的一个记录。使用Formview控件也可以实现显示、分页、编辑、插入和删除数据记录的操作。FormView与DetailsView和GridView的区别在于,FormView不支持AJAX,完全由模板驱动的。FormView在布局表单时可以有很大的灵活性,同时,在FormView上添加验证控件要比DetailsView控件方便。

13.3.1 DetailsView控件简介

DetailsView控件经常与GridView控件一起联合使用,默认情况下,DetailsView控件将记录的每个字段显示在它自己的一行内。DetailsView控件通常用于更新和插入新记录,并且在主控/详细方案中使用,在这些方案中,主控件的选中记录决定在DetailsView控件中显示的记录。即使DetailsView控件的数据源公开了多条记录,该控件一次也仅显示一条数据记录。DetailsView控件依赖于数据源控件的功能执行诸如更新、插入和删除记录的任务。DetailsView控件不支持排序。

DetailsView控件可以自动对其关联数据源中的数据进行分页,若要启用分页行为,需要将AllowPaging属性设置为true。

从关联的数据源选择特定的记录时,可以通过分页到该记录进行选择。由DetailsView控件显示的记录是当前选择的记录,如图13-34所示DetailsView控件在工具箱中的图标。

alt

图13-34 DetailsView控件图标

DetailsView控件支持以下功能。

(1)绑定至数据源控件,如SqlDataSource。

(2)内置插入功能。

(3)内置更新和删除功能。

(4)内置分页功能。

(5)以编程方式访问DetailsView对象模型以动态设置属性、处理事件等。

(6)可通过主题和样式进行自定义的外观。

13.3.2 使用DetailsView绑定数据源

示例13-4:DetailsView控件绑定到数据源

(1)新建一网站,并添加窗体:Default.aspx。

(2)将DetailsView控件从“工具箱”面板拖放到网页上,为该控件指定数据源。

(3)在“设计”视图中,右键单击DetailsView控件,在弹出的菜单中选择“显示智能标记”。在“DetailsView任务”菜单上,单击“选择数据源”下拉列表中的现有数据源或“<新数据源...>”命令,如图13-35所示。

alt

图13-35 DetailsView任务

这里选择“<新数据源...>”命令,在“数据源配置向导”中选择前面建好的数据连接字符串:TestConnectionString,如图13-36所示。

alt

图13-36 DetailsView任务

(4)在“配置Select语句”对话框中,选择表为UserInfo,如图13-37所示,并且单击“高级”按钮,如图13-38所示,选择“生成INSERT、UPDATE、DELETE语句”项。

alt

图13-37 选择表为UserInfo

alt

图13-38 高级SQL生成选项

(5)单击“确定”按钮,完成配置数据源向导后,设计视图如图13-39所示。

alt

图13-39 DetaisView配置数据源后

(6)选择“启用分页”、“启用插入”、“启用编辑”、“启用删除”等后,视图如图13-40所示。

alt

图13-40 启用编辑功能

(7)测试该页面,如图13-41所示。

alt

图13-41 显示效果

至此,我们没有编写任何代码,即使用DetaisView实现了编辑、更新、删除等操作。当然,对于DetaisView在页面中显示的字段名称,还可以进一步编辑,如图13-42所示,可以把HeaderText等属性设置为页面中显示的名称等。

alt

图13-42 编辑字段

13.3.3 DetailsView与GridView的联合使用

在GridView控件中,可以编辑、更新数据,但不能插入新记录,而DetailsView控件可以插入、更新和删除记录。在实际应用中,经常使用DetailsView控件与GridView控件,即在主/从方案中,主控件(如GridView控件)中的所选记录决定DetailsView控件显示的记录。下面通过示例演示DetailsView与GridView的联合使用。

示例13-5:DetailsView与GridView的联合

(1)新建一个网站,添加一Web窗体:Default.aspx。

(2)在页面上放置一个SqlDataSource控件,并配置其数据源,在连接下拉列表中,选择前面创建并存储的连接:TestConnectionString,指定表为UserInfo,在“列”框中,只选择“UserID”。

(3)在页面上再放置一个GridView控件,配置好数据源为SqlDataSource1,选择“GridView”控件,启用分页,并在GridView任务面板中菜单中选择“编辑列”,显示“字段”对话框,在“可用字段”下,打开“命令字段”节点,选择“选择”命令,单击“添加”按钮,将其添加到“选定的字段”列表中;在“选定的字段”列表中,选择“选择”命令,在“CommandField”属性网格中,将其“SelectText”属性设置为“详细信息”,如图13-43所示。

alt

图13-43 字段设置

(4)单击“确定”按钮,关闭“字段”对话框,具有“详细信息”超链接的新列即添加到GridView控件的面板中,如图13-44所示。

alt

图13-44 设置后的GridView控件

(5)选择“GridView”控件,在“属性”窗口中确认其“DataKeyNames”属性设置为UserID。

(6)添加DetailsView控件到页面上,该控件用来显示详细信息记录,并添加一个新的SqlDataSource控件。

(7)配置SqlDataSource2的数据源,在连接下拉列表中,仍然选择前面创建并存储的连接:TestConnectionString,指定表为UserInfo,在“列”框中,选择“*”。在设置条件时,单击“WHERE”按钮,如图13-45所示。

alt

图13-45 配置Select语句

(8)在弹出“添加WHERE子句”对话框中,从“列”列表中,选择“UserID”,从“运算符”列表中,选择“=”,在“源”列表中,选择“Control”,在“参数属性”下的“控件ID”列表中,选择“GridView1”,如图13-46所示。

alt

图13-46 添加WHERE子句

(9)单击“添加”按钮,单击“确定”按钮,关闭“添加WHERE子句”对话框。

(10)在DetailsView任务面板中,选中“启用分页”,把数据源设置为SqlDataSource2,并编辑字段的HeaderText分别为用户编号、姓名、密码、邮箱和地址,如图13-47所示。

alt

图13-47 设置DetailsView控件

(11)运行网站,在GridView中,选择“详细信息”时,DetailsView控件显示与该用户编号相关的详细信息,如图13-48所示。

alt

图13-48 运行效果

13.3.4 FormView控件简介使用

FormView控件用于一次显示数据源中的一个记录。在使用FormView控件时,可创建模板来显示和编辑绑定值。FormView控件通常与GridView控件一起使用。

FormView控件可以绑定到数据源控件(如SqlDataSource、AccessDataSource、ObjectDataSource等),或绑定到实现System.Collections.IEnumerable接口的任何数据源(如System.Data.DataView、System.Collections.ArrayList和System.Collections.Hashtable)。可使用以下方法将FormView控件绑定到适当的数据源类型。

(1)把FormView控件的DataSourceID属性设置为数据源控件的ID值。FormView控件自动绑定到指定的数据源控件,并且可以利用数据源控件的功能执行插入、更新、删除和分页功能,这是绑定到数据的首选方法。

(2)若要绑定到实现System.Collections.IEnumerable接口的数据源,须以编程方式将FormView控件的DataSource属性设置为该数据源,然后调用DataBind方法,使用此方法时,FormView控件不提供内置插入、更新、删除和分页功能,需要编写相应的代码来实现这些功能。

13.3.5 利用模板显示数据

要使FormView控件显示内容,需要为该控件的不同部分创建模板。大多数模板是可选的;但必须为FormView控件的配置模式创建模板,例如,必须为支持插入记录的FormView控件定义插入项模板。表13-3列出了FormView控件的内置模板。

表13-3 FormView控件的内置模板

alt

FormView控件的主要显示模板是ItemTemplate模板。ItemTemplate模板以只读模式显示绑定的数据。ItemTemplate包含的控件是只显示数据的控件,如Label控件。模板还可以包含命令按钮,用于将FormView控件的模式更改为插入或编辑模式,或删除当前记录。可使用包含用于单向数据绑定Eval方法的数据绑定表达式,将模板中的控件绑定到数据,比如,现在要通过模板显示前面配置的数据源控件SqlDataSource1中的数据,步骤如下。

示例13-6:利用FormView控件的模板显示数据

(1)新建一个网站,添加Web窗体,在页面中放置一个SqlDataSource控件。

(2)配置SqlDataSource的数据源,如图13-49所示,选择上节建立的数据源,指定表为UserInfo,并为UserInfo表生成插入、删除、更新等操作,如图13-50所示。

alt

图13-49 选择表

alt

图13-50 生成语句

(3)配置好数据源后,回到页面,添加一个FormView控件,并在任务面板中选择FormView的数据源为SqlDataSource1,选择后,FormView控件立即显示数据源的字段,如图13-51所示。

alt

图13-51 配置FormView控件的数据源

(4)运行网站,效果如图13-52所示。

alt

图13-52 运行效果

通过为FormView控件配置数据源,可以看到,不用编写任何代码,即可实现在页面上显示数据,当然还可以利用FormView控件来编辑数据。

13.3.6 利用FormView编辑数据

FormView控件显示指定的模板以提供允许用户修改记录内容的用户界面(UI)。每个模板都包含用户可以单击以执行编辑或插入操作的命令按钮。用户单击命令按钮时,可使用EditItemTemplate模板允许用户修改现有的记录,以及使用InsertItemTemplate模板来收集要插入到数据源中的新记录值。EditItemTemplate和InsertItemTemplate模板通常包含获取用户输入的控件,如TextBox、CheckBox或DropDownList控件,还可以添加控件显示只读信息,以及添加命令按钮来允许用户编辑当前记录、插入新记录或撤销当前操作。可将EditItemTemplate和InsertItemTemplate模板中的控件绑定到数据,方法是使用包含用于双向数据绑定的Bind方法的数据绑定表达式,如下面的示例所示。

示例13-7:利用FormView控件编辑数据

(1)打开示例13-6。

(2)设置FormView控件的DefaultMOde属性为Edit,如图13-53所示。

alt

图13-53 设置属性为Edit

(3)运行示例,显示为“编辑”状态,如图13-54所示;DefaultMOde属性为Insert时,显示为“插入”效果,如图13-55所示。

alt

图13-54 编辑状态

alt

图13-55 插入状态

当用户单击CommandName值为“Update”的命令按钮时,将加载EditItemTemplate模板;当用户单击CommandName值为“Insert”的命令按钮时,将加载InsertItemTemplate模板。

教程类别