GridView

 

GridView控件

GridView Control

由于在网页中包括一个可以工作的数据源控件,所以可以把这个控件绑定到一个控件上来显示所获取的数据。您将使用GridView控件,它是ASP.NET中增强的DataGrid控件。

GridView 控件派生自BaseDataBoundControl类,还有其他多个控件也从该类派生,例如,AdRotator、DetailsView和 FormView控件;还有ListControl类的成员,例如,CheckBoxList,RadioButtonList等;还有组合控件,例如 Password,Wizard控件等。DataGrid和DataList控件从BaseDataList派生,而不是从 BaseDataBoundControl派生(在第3章的图3-3中包括有关System.Web.UI.Control的类结构图)。虽然这些控件派 生自不同的基类,但是GridView和DataList(将在本章后文介绍)有许多相同属性。

提示:现在,ASP.NET 1.x的用户很可能使用GridView而不是DataGrid控件。GridView能够实现DataGrid的所有功能,并且还能够做得更多。该控件 可提供更简单的分页和排序功能。DataGrid与ASP.NET 2.0完全兼容,当该控件在新版本中运行时,无须对现有项目作任何修改。

许多经常使用的GridView控件属性不是从Control或者WebControl类继承而来的,表9-1列出了这些属性。许多属性将在下一章中介绍并使用。

表9-1  不从WebControl继承的GridView控件属性

属  性

类  型

说  明

AllowPaging

Boolean

×

×

true、false

是否启用分页。默认为false

AllowSorting

Boolean

×

×

true、false

是否启用排序。默认为false

AlternatingRowStyle

TableItem-

Style

×

派生自WebControls.St- yle类,这是交替行的样式属性

AutoGenerateColumns

Boolean

×

×

true、false

如果为true,会为每一个数据源中的字段生成绑定字段。默认值为true

AutoGenerate-

DeleteButton

Boolean

×

×

true、false

如果为true,每一行都会自动添加上一个Delete按钮。默认值为false

AutoGenerate-

EditButton

Boolean

×

×

true、false

如果为true,每一行都会自动添加上一个Edit按钮。默认值为false

AutoGenerate-

SelectButton

Boolean

×

×

true、false

如果为true,每一行都会自动添加上一个Select按钮。默认值为false

BottomPagerRow

GridView-

Row

×

将底部的分页行作为一个GridViewRow对象返回

Caption

String

×

×

以HTML caption元素呈现的文本

CaptionAlign

TableCaption-Align

×

×

Bottom、Left、NotSet、Right、Top

设定caption元素放置位置。如果CaptionAlign属性为NotSet,将使用浏览器的默认值

续表9-1  不从WebControl继承的GridView控件属性

属  性

类  型

说  明

CellPadding

Integer

×

×

单元格内容和边框之间的像素数

CellSpacing

Integer

×

×

单元格之间的像素数

Columns

DataControl-

FieldCollection

×

返回DataControlField对象的集合

DataKeyNames

String

×

×

主键字段的数组

DataKeys

DataKey-

Collection

×

每条记录的主键值的集合

DataMember

String

×

×

设定多成员数据源中的数据成员

DataSource

Object

×

×

为控件设置数据源

EditIndex

Integer

×

×

编辑的行,从零开始的行索引。-1(默认值)表示没有行被编辑

EditRowStyle

TableItemStyle

×

派生自WebControl.Sty- le类,目前选中的编辑行的样式

EmptyDataRowStyle

TableItemStyle

×

派生自WebControls.St- yle类,空数据行的样式

EmptyDataTemplate

ITemplate

×

×

当某行没有数据时,用户定义的显示内容

EmptyDataText

String

×

×

当控件绑定到一个空的数据源时,显示的文本

EnableSortingAnd-

PagingCallbacks

Boolean

×

×

true、false

如果为true,排序和分页将使用客户端回调。默认值为false

FooterRow

GridViewRow

×

将页脚行作为一个Grid- ViewRow对象返回

FooterStyle

TableItemStyle

×

派生自WebControls.Sty- le类,页脚部分的样式属性

续表9-1  不从WebControl继承的GridView控件属性

属  性

类  型

说  明

GridLines

GridLines

×

×

Both、Horizontal、None、Vertical

设置显示哪些网格线。默认值为None

HeaderRow

GridViewRow

×

将标题行作为GridView- Row返回

HeaderStyle

TableItemStyle

×

派生自WebControls.St- yle类,标题部分的样式属性

HorizontalAlign

HorizontalAlign

×

×

Center、Justify、Left、NotSet、Right        

设置容器中项的水平对齐,例如单元格。默认值为NotSet

PageCount

Integer

×

显示数据所需要的页面数

PageIndex

Integer

×

×

当前页的索引,从0开始

PagerSettings

PagerSettings

×

见后续提示

返回一个PagerSetting对象,这样可以设置Pager按钮

PagerStyle

TableItemStyle

×

见后续提示

派生自WebControls.St- yle类,Pager行的样式属性。表后面的段落对本属性有详细讲解

PagerTemplate

ITemplate

×

×

用户定义的要显示的Pager行的内容

PageSize

Integer

×

×

一个页面上要显示的记录的数量

RowHeaderColumn

String

×

×

列标题的可选设置

Rows

GridView-

RowCollection

×

返回由控件中的数据组成的GridViewRow对象的集合

RowStyle

TableItemStyle

×

派生自WebControls.St- yle类,控件中行的默认样式属性

SelectedDataKey

DataKey

×

返回DataKey,其中包含了当前选中行的键值

续表9-1  不从WebControl继承的GridView控件属性

属  性

类  型

说  明

SelectedIndex

Integer

×

×

当前选中的项的索引,从0开始。如果没有选中任何项,或者要清除对某项的选择,将值设置为-1

SelectedRow

GridViewRow

×

返回当前选中的行

SelectedRowStyle

TableItemStyle

×

派生自WebControls.St- yle类,控件中选中行的默认样式属性

SelectedValue

Object

×

返回当前选中行的Data- Key值

ShowFooter

Boolean

×

×

true、false

是否显示页脚,默认值为true。仅当FooterTem- plate不为null时有效

ShowHeader

Boolean

×

×

true、false

是否显示标题行,默认值为true。仅当HeaderTem- plate属性不为null时有效

SortDirection

SortDirection

×

Ascending、Descending

返回当前使用的排序方向

SortExpression

String

×

返回排序的列名

TopPagerRow

GridViewRow

×

将顶部的Pager行作为一个GridViewRow对象返回

提示:下面将对PagerSettings属性作进一步的解 释。该属性返回一个PagerSetting类的实例。PagerSettings类的最重要的属性是Mode,该属性有四个枚举值: NextPrevious、NextPrev- iousFirstLast、Numeric和NumericFirstLast,每个值都可以用于进行分页设置。如果选择设置除Numberic外的任 何一个值,那么就可以通过设置其他属性,例如,FirstPageText、Next- PageText等来设置非数字按钮的文本。作为替代,可以使用FirstPageImageURL、NextPageImageURL等属性来设定非数 字按钮的图片。

将一个GridView控件拖动到页面中。GridView控件能够识别出页面中已经包括了一个SqlDataSource控件,那么它就不用自己创建一个。单击“GridView”控件的智能标签,并选择“Choose Data Source”项,如图9-6所示。

图9-6:选择一个现存的数据源

一旦设置了数据源,GridView控件则会使用数据源返回的每个数据字段所对应的列来刷新自身。此时,列标题已经填充好了。再次打开智能标签,单击“Paging”项(这可以让GridView控件在每页中显示有限数量的记录,便于查看)。

切换到源视图,检查GridView控件的声明,如示例9-1所示。

示例9-1:将GridView控件绑定到数据源

<asp:GridView ID="GridView1" runat="server"

              PageSize="4"

              DataSourceID="SqlDataSource1"

              AutoGenerateColumns="False"

              DataKeyNames="CustomerID">

    <Columns>

        <asp:BoundField ReadOnly="True" HeaderText="CustomerID"

                        DataField="CustomerID" SortExpression="CustomerID">

        </asp:BoundField>

        <asp:BoundField HeaderText="CompanyName"

                        DataField="CompanyName" SortExpression="CompanyName">

        </asp:BoundField>

        <asp:BoundField HeaderText="ContactName"

                        DataField="ContactName" SortExpression="ContactName">

        </asp:BoundField>

        <asp:BoundField HeaderText="ContactTitle"

                        DataField="ContactTitle" SortExpression="ContactTitle">

        </asp:BoundField>

        <asp:BoundField HeaderText="Address"

                        DataField="Address" SortExpression="Address">

        </asp:BoundField>

        <asp:BoundField HeaderText="City"

                        DataField="City" SortExpression="City">

        </asp:BoundField>

        <asp:BoundField HeaderText="Region"

                        DataField="Region" SortExpression="Region">

        </asp:BoundField>

        <asp:BoundField HeaderText="PostalCode"

                        DataField="PostalCode" SortExpression="PostalCode">

        </asp:BoundField>

        <asp:BoundField HeaderText="Country"

                        DataField="Country" SortExpression="Country">

        </asp:BoundField>

        <asp:BoundField HeaderText="Phone"

                        DataField="Phone" SortExpression="Phone">

        </asp:BoundField>

        <asp:BoundField HeaderText="Fax"

                        DataField="Fax" SortExpression="Fax">

        </asp:BoundField>

    </Columns>

</asp:GridView>

VS2005已 经完成了很多工作。VS2005会检查数据源,并为数据中的每个列创建一个BoundField。同时,它还会将HeaderText设置为 DataField的名称。最后,须注意在GridView控件声明中,AutoGenerateColumns属性已经被设置为false(在示例9- 1中高亮显示)。

如果您手工创建 过GridView控件,若希望让GridView控件根据获得的数据创建所有的列,那么可以通过设置AutoGenerateColumns属性为 True来简化代码。为了看到效果,可进入源视图,在刚刚创建的内容文件的下面,创建第二个GridView。

<asp:GridView ID="GridView2" runat="server"

              AllowPaging="true"PageSize="4"

              DataSourceID="SqlDataSource1"

              AutoGenerateColumns="True"

              DataKeyNames="CustomerID"/>

运行应用程序。应该能够看到两个表格,一个在另一个的上面,如图9-7所示。

以上二者根本无 法区分。那么为什么VS2005要创建一个更加复杂的版本呢?通过将AutoGenerate列属性设置为false,VS2005将提供一个更加强大的 控件来显示数据。例如,可以设置列标题(例如,将ContactTitle改为Title),移除不需要的列,添加带有控件的新列来编辑数据行。

为了实现修改,可以在源视图中手工编写HTML代码,或者单击GridView控件的智能标签,然后选择“Edit Columns”项,这样将弹出“Fields”对话框,如图9-8所示。

以上对话框主要 分成了三个区域:变量字段列表、选中字段列表(带有移除字段或者重新对列表排序的箭头)、右面的“Bound Field Properties”窗口。单击“Selected Fields”(例如,ContactTitle),则可以设置GridView控件中字段显示的方式(例如,改变标题为Title)。

图9-7:创建两个GridView,其中一个使用手工方式创建

图9-8:Fields对话框

由于正在学习如 何使用GridView控件,那么可以把它变得更漂亮些。首先,删除(或者注释)第二个(相对简单的)GridView。接着,打开第一个 GridView控件的智能标签。单击“AutoFormat”,并且选择一个格式化选项。(当然,可以手工格式化控件,但是为什么要这么辛苦呢?)此处 将选择“Brown Sugar”项,因为它在印刷的书中显示起来更好。

单击“Enable Sorting”(太快了!这就可以对列进行排序了),并且运行应用程序,最终将看到如图9-9所示的输出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值