GridView
是ASP.NET 1.x的DataGrid控件的后继者。它提供了相同的基本功能集,同时增加了大量扩展和改进。如前所述,DataGrid(ASP.NET 2.0仍然完全支持)是一个功能非常强大的通用控件。然而,它有一个重大缺陷:它要求我们编写大量定制代码,甚至处理比较简单而常见的操作,诸如分页、排序、编辑或删除数据等也不例外。GridView控件旨在解决此限制,并以尽可能少的数据实现双向数据绑定。该控件与新的数据源控件系列紧密结合,而且只要底层的数据源对象支持,它还可以直接处理数据源更新。
这种实质上无代码的双向数据绑定是新的GridView控件最著名的特征,但是该控件还增强了很多其他功能。该控件之所以比DataGrid控件有所改进,是因为它能够定义多个主键字段、新的列类型以及样式和模板选项。GridView还有一个扩展的事件模型,允许我们处理或撤销事件。
GridView
控件为数据源的内容提供了一个表格式的类网格视图。每一列表示一个数据源字段,而每一行表示一个记录。该类声明如下:
public class GridView : CompositeDataBoundControl,
ICallbackContainer,
ICallbackEventHandler
该基类确保数据绑定和命名容器支持。ICallbackContainer和ICallbackEventHandler接口提供了比现在支持的更有效的分页和排序功能。它通过使用新的脚本回调技术的客户端的out-of-band调用来完成。(稍候将会更详细地讨论这一点。)首先让我们来看看GridView控件的编程接口。
1. GridView
控件的属性
GridView
支持大量属性,这些属性属于如下几大类:行为、可视化设置、样式、状态和模板。表10.6详细描述了影响的行为的属性。
表10.6 GridView控件的行为属性
属性
|
描述
|
AllowPaging
|
指示该控件是否支持分页。
|
AllowSorting
|
指示该控件是否支持排序。
|
AutoGenerateColumns
|
指示是否自动地为数据源中的每个字段创建列。默认为true。
|
AutoGenerateDeleteButton
|
指示该控件是否包含一个按钮列以允许用户删除映射到被单击行的记录。
|
AutoGenerateEditButton
|
指示该控件是否包含一个按钮列以允许用户编辑映射到被单击行的记录。
|
AutoGenerateSelectButton
|
指示该控件是否包含一个按钮列以允许用户选择映射到被单击行的记录。
|
DataMember
|
指示一个多成员数据源中的特定表绑定到该网格。该属性与DataSource结合使用。如果DataSource是有一个DataSet对象,则该属性包含要绑定的特定表的名称。
|
DataSource
|
获得或设置包含用来填充该控件的值的数据源对象。
|
DataSourceID
|
指示所绑定的数据源控件。
|
EnableSortingAndPagingCallbacks
|
指示是否使用脚本回调函数完成排序和分页。默认情况下禁用。
|
RowHeaderColumn
|
用作列标题的列名。该属性旨在改善可访问性。
|
SortDirection
|
获得列的当前排序方向。
|
SortExpression
|
获得当前排序表达式。
|
UseAccessibleHeader
|
规定是否为列标题生成<th>标签(而不是<td>标签)。
|
SortDirection
和SortExpression属性规定当前决定行的排列顺序的列上的排序方向和排序表达式。这两个属性都是在用户单击列的标题时由该控件的内置排序机制设置的。整个排序引擎通过AllowSorting属性启用和禁用。EnableSortingAndPagingCallbacks属性打开和关闭该控件的使用脚本回调进行分页和排序,而不用往返于服务器并改变整个页面的功能。
GridView
控件内显示的每一行对应于一种特殊的网格项。预定义的项目类型几乎等于DataGrid的项目类型,包括标题、行和交替行、页脚和分页器等项目。这些项目是静态的,因为它们在控件的生命期内在应用程序中保持不变。其他类型的项目在短暂的时间(即,完成某种操作所需的时间)内是活动的。动态项目是编辑行、所选的行和EmptyData项。当网格绑定到一个空的数据源时,EmptyData标识该网格的主体。
0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" href="https://i-blog.csdnimg.cn/blog_migrate/024738c6d0593e2e6d647252d6dbca49.png">
注意
GridView
控件提供了几个专门为了可访问性而设计的属性。这些属性是
UseAccessibleHeader
、
Caption
、
CaptionAlign
和
RowHeaderColumn
。设置
RowHeaderColumn
时,将用默认的标题样式
(
黑体字
)
输出该列的所有单元。然而,
ShowHeader
、
HeaderStyle
和其他与标题相关的属性并不会影响由
RowHeaderColumn
指示的列。
表10.7详细描述了GridView控件上可用的样式属性。
表10.7 GridView控件的样式属性
样式
|
描述
|
AlternatingRowStyle
|
定义表中每隔一行的样式属性。
|
EditRowStyle
|
定义正在编辑的行的样式属性。
|
FooterStyle
|
定义网格的页脚的样式属性。
|
HeaderStyle
|
定义网格的标题的样式属性。
|
EmptyDataRowStyle
|
定义空行的样式属性,这是在GridView绑定到空数据源时生成。
|
PagerStyle
|
定义网格的分页器的样式属性。
|
RowStyle
|
定义表中的行的样式属性。
|
SelectedRowStyle
|
定义当前所选行的样式属性。
|
表10.8列出了影响控件外观的大多数属性,而表10.9列出了模板属性。
表10.8 GridView控件的外观属性
属性
|
描述
|
BackImageUrl
|
指示要在控件背景中显示的图像的URL。
|
Caption
|
在该控件的标题中显示的文本。
|
CaptionAlign
|
标题文本的对齐方式。
|
CellPadding
|
指示一个单元的内容与边界之间的间隔(以像素为单位)。
|
CellSpacing
|
指示单元之间的间隔(以像素为单位)。
|
GridLines
|
指示该控件的网格线样式。
|
HorizontalAlign
|
指示该页面上的控件水平对齐。
|
EmptyDataText
|
指示当该控件绑定到一个空的数据源时生成的文本。
|
PagerSettings
|
引用一个允许我们设置分页器按钮的属性的对象。
|
ShowFooter
|
指示是否显示页脚行。
|
ShowHeader
|
指示是否显示标题行。
|
PagerSettings
对象把所有可以对分页器设置的可视化属性组织在一起。其中有很多属性在DataGrid程序员看来应该是熟悉的。PagerSettings类还添加了一些新属性以满足新的预定义的按钮(第1页和最后一页),并在链接中使用图像代替文本。(我们需要合计出一条和使用DataGrid时相同的诀窍。)
表10.9 GridView控件的模板属性
模板
|
描述
|
EmptyDataTemplate
|
指示该控件绑定到一个空的数据源时要生成的模板内容。如果该属性和EmptyDataText属性都设置了,则该属性优先采用。如果两个属性都没有设置,则把该网格控件绑定到一个空的数据源时不生成该网格。
|
PagerTemplate
|
指示要为分页器生成的模板内容。该属性覆盖我们可能通过PagerSettings属性作出的任何设置。
|
最后剩下的是状态属性,表10.10列出了这些属性。状态属性返回有关控件的内部状态的信息。
表10.10 状态属性
属性
|
描述
|
BottomPagerRow
|
返回表格该网格控件的底部分页器的GridViewRow对象。
|