DetailsView Web 服务器控件概述

更新:2007 年 11 月

DetailsView 控件显示数据源的单个记录,其中每个数据行表示记录中的一个字段。此控件经常在主控/详细方案中与 GridView 控件一起使用。

本主题包括:

  • 背景

  • 代码示例

  • 类参考

背景

使用 DetailsView 控件,您可以从它的关联数据源中一次显示、编辑、插入或删除一条记录。默认情况下,DetailsView 控件将记录的每个字段显示在它自己的一行内。DetailsView 控件通常用于更新和插入新记录,并且通常在主/详细方案中使用,在这些方案中,主控件的选中记录决定要在 DetailsView 控件中显示的记录。即使 DetailsView 控件的数据源公开了多条记录,该控件一次也仅显示一条数据记录。

DetailsView 控件依赖于数据源控件的功能执行诸如更新、插入和删除记录等任务。DetailsView 控件不支持排序。

DetailsView 控件可以自动对其关联数据源中的数据进行分页,但前提是数据由支持 ICollection 接口的对象表示或基础数据源支持分页。DetailsView 控件提供用于在数据记录之间导航的用户界面 (UI)。若要启用分页行为,请将 AllowPaging 属性设置为 true。

从关联的数据源选择特定的记录时,可以通过分页到该记录进行选择。由 DetailsView 控件显示的记录是当前选择的记录。

使用 DetailsView 控件进行数据绑定

DetailsView 控件提供了以下用于绑定到数据的选项:

  • 使用 DataSourceID 属性进行数据绑定,此选项使您能够将 DetailsView 控件绑定到数据源控件。建议使用此选项,因为它允许 DetailsView 控件利用数据源控件的功能并提供了内置的更新和分页功能。

  • 使用 DataSource 属性进行数据绑定,此选项使您能够绑定到包括 ADO.NET 数据集和数据读取器在内的各种对象。此方法需要您为任何附加功能(如更新和分页等)编写代码。

当使用 DataSourceID 属性绑定到数据源时,DetailsView 控件支持双向数据绑定。除可以使该控件显示数据之外,还可以使它自动支持对绑定数据的插入、更新和删除操作。

使用 DetailsView 控件数据

DetailsView 控件绑定到数据源控件,后者接下来处理连接到数据存储区及返回所选择的数据的任务。将 DetailsView 控件绑定到数据与以声明方式设置 DataSourceID 属性一样简单。您也可以用编写代码的方式将该控件绑定到数据源。

若要启用编辑操作,请将 AutoGenerateEditButton 属性设置为 true。除呈现数据字段外,DetailsView 控件还将呈现一个**“编辑”按钮。单击“编辑”**按钮可使 DetailsView 控件进入编辑模式。在编辑模式下,DetailsView 控件的 CurrentMode 属性会从 ReadOnly 更改为 Edit,并且该控件的每个字段都会呈现其编辑用户界面,如文本框或复选框等。还可以使用样式、DataControlField 对象和模板自定义编辑用户界面。

s3w1w7t4.alert_note(zh-cn,VS.90).gif说明:

若要使 DetailsView 控件支持编辑操作,绑定数据源必须支持对数据的更新操作。

可以将 DetailsView 控件配置为显示**“删除”“插入”按钮,以便可以从数据源删除相应的数据记录或插入一条新的数据记录。与 AutoGenerateEditButton 属性相似,如果在 DetailsView 控件上将 AutoGenerateInsertButton 属性设置为 true,该控件就会呈现一个“新建”按钮。单击“新建”**按钮时,DetailsView 控件的 CurrentMode 属性会更改为 Insert。DetailsView 控件会为每个绑定字段呈现相应的用户界面输入控件,除非绑定字段的 InsertVisible 的属性设置为 false。

自定义 DetailsView 控件用户界面

DetailsView 控件支持 Fields 集合属性,后者包含类型为 BoundFieldCommandFieldHyperLinkFieldDataControlField 对象。除了 DetailsView 控件将每个字段呈现为一行而不是一列之外,这在功能上与 GridView 控件的 Columns 集合相似。

GridView 控件一样,您可以自定义 DetailsView 控件的用户界面,方法是使用 HeaderStyleRowStyleAlternatingRowStyleCommandRowStyleFooterStylePagerStyleEmptyDataRowStyle 这样的样式属性。

DetailsView 控件通过模板提供了其他自定义方法,使您可以更多地控制某些元素的呈现。可以为 DetailsView 控件定义自己的 EmptyDataTemplateHeaderTemplateFooterTemplatePagerTemplate 属性。还可为通过将 TemplateField 对象添加到 Fields 集合中来为单个字段创建一个模板。

DetailsView 控件公开多个您可以处理的多个事件,以便执行您自己的代码。这些事件在对关联的数据源控件执行插入、更新和删除操作的前后引发。您还可以为 ItemCreatedItemCommand 事件编写处理程序。有关更多信息,请参见 DetailsView Web 服务器控件事件

s3w1w7t4.alert_note(zh-cn,VS.90).gif说明:

DetailsView 控件的事件模型与 GridView 控件的事件模型相似。但是,DetailsView 控件不支持选择事件,因为当前记录始终是所选择的项。

返回页首

代码示例

演练:使用 DetailsView 服务器控件在网页上编辑和插入数据

演练:使用 LinqDataSource 和 DetailsView 控件检索、更新、插入和删除数据

在 DetailsView Web 服务器控件中分页

使用 DetailsView Web 服务器控件修改数据

在 DetailsView Web 服务器控件中创建自定义行

返回页首

类参考

下表列出了与 DetailsView 控件相关的关键类。

成员

说明

DetailsView

控件的主类。

返回页首

请参见

概念

DetailsView Web 服务器控件事件

ASP.NET 数据访问概述

ASP.NET Web 服务器控件模板

参考

GridView Web 服务器控件概述

其他资源

通过 ASP.NET 访问数据