GridView控件具有一个很明显的特点,一次可以从数据源中获取大量的数据,并且通过表格的形式将数据显示出来。在某些时候用户希望看到一次只看到某一行中所包含数据字段的详细数据。ASP.NET2.0提供了DetailsView控件。该控件能够以表格形式,详细显示每一行数据中各个数据字段的具体内容。下面介绍一下DetailsView控件的基本知识、常用属性、方法等。通过一个示例说明使用DetailsView控件显示和增删改数据的方法。
1、 DetailsView控件简介
DetailsView控件的主要功能是以表格形式现实和处理来自数据源的单条数据记录,其表
格只包含两个数据列。一行数据列逐行显示数据列名,另一个数据列显示与对应列名相关的详细数据值。这种显示方式对于数据列较多,需要逐行显示详细数据的情况非常有帮助。DetailsView控件可与GridView控件结合使用,以便实现主细表信息显示。DetailsView控件具有以下功能。
l 支持与数据源控件绑定,例如,SqlDataSource等。
l 内置数据添加功能。
l 内置更新、删除、分页功能。
l 支持以编程方式访问DetailsView对象模型,动态设置属性、处理事件等。
l 可通过主题和样式进行自定义的外观。
2、 DetailsView控件的声明:
<asp:DetailsView ID="DetailsView1" runat="server" DataSource="" AutoGenerateDeleteButton="true" AutoGenerateEditButton="true" AutoGenerateInsertButton="true" AutoGenerateRows="false">
<Fields>
<asp:BoundField DataField="" HeaderText="" ReadOnly="true" SortExpression="" />
</Fields>
</asp:DetailsView>
以上代码列举了DetailsView控件的常用属性,实际上DetailsView控件的多数属性与GridView控件的属性,在属性名称、类型、功能等方面非常类似。例如,DetailsView控件也是适用DataSource属性实现与数据源控件的连接,也是适用DataKeyNames设置主键名称。同时,适用类似AutoGenerateEditButton名称的属性,启用编辑、添加、删除、自动生成等功能。另外,GridView控件和DetailsView控件也有不同。例如设置自动生成数据行的属性是AutoGenerateRows,而GridView控件使用的是AutoGenerateColumns,又如,自定义设置数据绑定行的过程中,DetailsView控件使用了<Fields>标签,而GridView控件使用的是<Columns>。
DetailsView控件中的每个数据行是通过声明一个字段控件创建的。不同的行字段类型确定控件中各行的行为。字段控件派生自DataControlField。以下列出了可以在DetailsView控件中使用的7种不同行字段类型。
l BoundField字段:以文本形式数据源中某个字段的值。
l ButtonField字段:在DetailsView控件中显示一个命令按钮。允许自定义按钮。
l CheckBoxField字段:在DetailsView控件中显示一个复选框。显示具有布尔型的字段。
l CommandField字段:显示用来执行编辑、插入或删除操作的内置命令按钮。
l HyperLinkField字段:将数据源中某个字段的值显示为超级连接。
l ImageField字段:在DetailsView控件中显示图像。
l TemplateField字段:根据指定的模板,为DetailsView控件中的行显示用户自定义的内容。
以上7个行字段只有当AutoGenerateRows属性设置为False时才能使用。在默认情况下,AutoGenerateRows属性设置为true,即允许DetailsView控件自动生成数据行。此时,每个行字段将以文本形式,按其出现在数据源中的顺序显示在表格中。自动生成行提供了一种显示记录中每个字段的快速简单的方式。
3、 DetailsView控件常用属性列表
行为属性:
属性 | 数据类型 | 说明 |
AllowPaging | bool | 获取或设置一个值,该值指示是否启用分页功能。 |
AllowSorting | bool | 获取或设置一个值,该值指示是否启用排序功能。 |
AutoGenerateRows | bool | 获取或设置一个值,该值指示是否启用控件自动生成数据绑定行字段的功能。 |
AutoGenerateDeleteButton | bool | 获取或设置一个值 ,用于表示是否为DetailsView中正在显示的数据记录添加一个删除命令按钮。 |
AutoGenerateEditButton | bool | 获取或设置一个值用于表示是否为DetailsView中正在显示的数据记录添加一个编辑命令按钮。 |
AutoGenerateInsertButton | bool | 获取或设置一个值用于表示是否为DetailsView中正在显示的数据记录添加一个选择插入按钮。 |
DefaultMode | DetailsViewMode | 获取或者设置控件默认数据起始模式。 |
EnablePagingCallbacks | bool | 获取或者设置一个布尔值,用于表示是否在执行分页时,启用客户端回调功能。 |
外观属性:
属性 | 数据类型 | 说明 |
BackImageUrl | string | 获取或设置要在 DetailsView 控件的背景中显示的图像的 URL。 |
Caption | string | 获取或设置要在 DetailsView 控件内的 HTML 标题元素中呈现的文本。 |
CaptionAlign | TableCaptionAlign | 获取或设置 DetailsView 控件中的 HTML 标题元素的水平或垂直位置。 |
CellPadding | int | 获取或设置单元格的内容和单元格的边框之间的空间量。 |
CellSpacing | int | 获取或设置单元格间的空间量。 |
EmptyDataText | string | 获取或设置在 DetailsView 控件绑定到不包含任何记录的数据源时所呈现的空数据行中显示的文本。 |
FooterText | string | 获取或设置要在 DetailsView 控件的脚注行中显示的文本。 |
HeaderText | string | 获取或设置要在 DetailsView 控件的标题行用户自定义的文本 |
常用样式属性:
属性 | 数据类型 | 说明 |
AlternatigRowStyle | TableItemStyle | 获取对 TableItemStyle 对象的引用,该对象允许您设置 DetailsView 控件中的交替数据行的外观。 |
CommandRowStyle | TableItemStyle | 获取对 TableItemStyle 对象的引用,该对象允许您设置 DetailsView 控件中的命令行的外观。 |
EditRowStyle | TableItemStyle | 获取一个对 TableItemStyle 对象的引用,该对象允许您设置在 DetailsView 控件处于编辑模式时数据行的外观。 |
FooterStyle | TableItemStyle | 获取对 TableItemStyle 对象的引用,该对象允许您设置 DetailsView 控件中的脚注行的外观。 |
HeaderStyle | TableItemStyle | 获取对 TableItemStyle 对象的引用,该对象允许您设置 DetailsView 控件中的标题行的外观。 |
InsertRowStyle | TableItemStyle | 获取一个对 TableItemStyle 对象的引用,该对象允许您设置在 DetailsView 控件处于插入模式时 DetailsView 控件中的数据行的外观。 |
PagerStyle | TableItemStyle | 获取对 TableItemStyle 对象的引用,该对象允许您设置 DetailsView 控件中的页导航行的外观。 |
RowStyle | TableItemStyle | 获取对 TableItemStyle 对象的引用,该对象允许您设置 DetailsView 控件中的数据行的外观。 |
常用模板:
属性 | 数据类型 | 说明 |
EmptyDataTemplate | ITemplate | 获取或设置当 DetailsView 控件绑定到不包含任何记录的数据源时所呈现的空数据行的用户定义内容。 |
FooterTemplate |
| 获取或设置 DetailsView 控件中的脚注行的用户定义内容。 |
HeaderTemplate |
| 获取或设置 DetailsView 控件中的标题行的用户定义内容。 |
PagerTemplate |
| 获取或设置 DetailsView 控件中页导航行的自定义内容。 |
常用状态属性:
属性 | 数据类型 | 说明 |
BottomPagerRow | DetailsViewRow | 获取一个 DetailsViewRow 对象,该对象表示 DetailsView 控件中的底部页导航行。 |
CurrentMode | DetailsViewMode | 获取 DetailsView 控件的当前数据输入模式。 |
DataItem | object | 获取绑定到 DetailsView 控件的数据项。 |
DataItemCount | int | 获取基础数据源中的项数。 |
DataItemIndex | int | 从基础数据源中获取 DetailsView 控件中正在显示的项的索引。 |
DataKey | DataKey | 获取一个 DataKey 对象,该对象表示所显示的记录的主键。 |
DataKeyName | string[] | 获取或设置一个数组,该数组包含数据源的主键字段的名称。 |
Fields | DataControlField Collection | 获取 DataControlField 对象的集合,这些对象表示 DetailsView 控件中显式声明的行字段。 |
FooterRow | DetailsViewRow | 获取表示 DetailsView 控件中的脚注行的 DetailsViewRow 对象。 |
HeaderRow | DetailsViewRow | 获取表示 DetailsView 控件中的标题行的 DetailsViewRow 对象。 |
PageCount | int | 获取数据源中的记录数。 |
PageIndex | int | 获取或设置所显示的记录的索引。 |
PagerSettings | PagerSettings | 获取对 PagerSettings 对象的引用,该对象允许您设置 DetailsView 控件中的页导航按钮的属性。 |
Rows | DataControlField Collection | 获取表示 DetailsView 控件中数据行的 DetailsViewRow 对象的集合。 |
SelectedValue | object | 获取 DetailsView 控件中的当前记录的数据键值。 |
TopPagerRow | DetailsViewRow | 获取一个 DetailsViewRow 对象,该对象表示 DetailsView 控件中的顶部页导航行。 |
常用事件:
属性 | 说明 |
ItemCommand | 该事件发生在控件中某个按钮被单击时。通常,可以自定义实现一些任务。该事件的事件处理程序为OnItemCommand |
ItemCreated | 该事件放发生在创建一个新纪录时。通常,可以实现一些任务,例如,添加数据内容等。该事件的事件处理程序为OnItemCreated |
ItemDeleted | 该事件发生在单击删除按钮,而执行删除操作之后。通常,在事件中检查删除操作的结果。该事件的事件处理程序为ItemDeleted |
ItemDeleting | 该事件发生在单击删除按钮,而执行删除操作之前。通常,在事件中执行取消删除操作。该事件的事件处理程序为ItemDeleting |
ItemInserted | 该事件发生在单击添加按钮,而执行添加操作之后。通常,在事件中检查添加操作的结果。该事件的事件处理程序为ItemInserted |
ItemInserting | 该事件发生在单击添加按钮,而执行添加操作之前。通常,在事件中执行取消添加操作。该事件的事件处理程序为ItemInserting |
ItemUpdated | 该事件发生在单击更新按钮,而执行更新操作之后。通常,在事件中检查添加更新的结果。该事件的事件处理程序为ItemUpdated |
ItemUpdating | 该事件发生在单击更新按钮,而执行更新操作之前。通常,在事件中执行取消更新操作。该事件的事件处理程序为ItemUpdating |
PageIndexChanged | 该事件发生在PageIndex属性的值在分页操作后更改时发生。该事件的事件处理程序为PageIndexChanged |
PageIndexChanging | 该事件发生在PageIndex属性的值在分页操作前更改时发生。该事件的事件处理程序为PageIndexChanging |