5.4 网格视图控件GridView
GridView控件又称为网格视图控件,它能够以数据网格形式显示数据,并能够对这些数据进行编辑、排序、分页、自定义样式等操作。
5.4.1 GridView控件概述
GridView控件可以显示、编辑、排序、分页、删除其数据源中的数据。其中,这些数据源可以是数据库(如SQL Server、Access、Oracle等)、XML文件、公开数据的业务对象等。GridView控件能够实现如下功能。
显示数据,即把数据源绑定到控件。
行选择功能。
编辑数据,包括更新和删除数据等。
排序功能,可以按照列对显示的数据进行排序。
分页功能,可以对数据源中的数据进行分页显示。
同时保存多个键字段的值。
自定义控件的列样式和外观。
动态处理GridView控件的事件。
GridView控件的基本属性如表5-19所示。
表5-19 GridView控件的基本属性
属 性 |
描 述 |
AutoGenerateColumns |
是否为数据源中的每个字段自动创建绑定字段 |
AutoGenerateDeleteButton |
是否为每一个数据行添加【删除】按钮 |
AutoGenerateEditButton |
是否为每一个数据行添加【编辑】按钮 |
续表
属 性 |
描 述 |
AutoGenerateSelectButton |
是否为每一个数据行添加【选择】按钮 |
BackImageUrl |
控件背景图像的URL |
Caption |
控件的标题 |
CaptionAlign |
控件的标题排列方式,可以是水平排列或垂直排列 |
CellPadding |
单元格的内容和单元格的边框之间的空间量 |
CellSpacing |
单元格间的空间量 |
Columns |
控件中列的集合 |
DataKeyNames |
控件的项的主键字段的名称的集合 |
DataKeys |
控件中的每一行的数据键值的集合 |
EditIndex |
编辑行的索引 |
GridLines |
控件的网格线样式 |
HorizontalAlign |
控件在页面上的水平对齐方式 |
RowHeaderColumn |
控件的列标题的列的名称 |
Rows |
控件中行的集合 |
SelectedDataKey |
控件中选定行的数据键值 |
UseAccessibleHeader |
控件是否以易于访问的格式呈现其标题 |
SelectedIndex |
控件中的选定行的索引 |
SelectedValue |
控件中选定行的数据键值 |
ShowHeader |
是否在控件中显示标题行 |
ShowFooter |
是否在控件中显示脚注行 |
EmptyDataText |
当控件的数据源为空时,控件显示的文本 |
5.4.2 GridView控件的模板和行
GridView控件支持两种模板:EmptyDataTemplate和PagerTemplate。当GridView控件的数据源为空时,控件显示第一个模板的内容(如果定义了该模板)。PagerTemplate模板定义了GridView控件的与页导航相关内容的模板。
DataList控件称它的数据行为“Item”,GridView控件称它的数据行为“Row”。GridView控件也包含了与DataList控件相对应的行,如HeaderRow、FooterRow、SeletedRow等。同时,GridView控件还定义了行的样式,如HeaderStyle、FooterStyle、SelectedRowStyle等。GridView控件中与模板、行及其样式相关的属性如表5-20所示。
表5-20 GridView控件的模板、行或样式
模板、行或样式名称 |
描 述 |
EmptyDataTemplate |
空数据模板。当控件绑定的数据源为空时,显示该模板的内容 |
PagerTemplate |
页模板,与页导航行相关的内容 |
EmptyDataRowStyle |
空数据模板的样式 |
续表
模板、行或样式名称 |
描 述 |
PagerStyle |
页模板的样式 |
HeaderRow |
控件的标题行 |
SelectedRow |
控件的选定行 |
FooterRow |
控件的脚注行 |
TopPagerRow |
控件中的页导航顶部行 |
BottomPagerRow |
控件中的页导航底部行 |
HeaderStyle |
标题行的样式 |
RowStyle |
数据行的样式 |
AlternatingRowStyle |
交替行的样式 |
SelectedRowStyle |
选定行的样式 |
EditRowStyle |
编辑行的样式 |
FooterStyle |
脚注行的样式 |
下面的代码实例声明了一个GridView控件和一个SqlDataSource控件。其中,GridView控件的ID属性的值为gvUser。该控件声明了两种模板:EmptyDataTemplate和PagerTemplate。另外,gvUser控件使用SqlDataSource控件myDSUser作为数据源,显示用户表User中的记录。
注意 |
当gvUser控件的数据源为空时,该控件才显示EmptyDataTemplate模板定义的内容。在此,笔者添加了ID属性值为btnEmpty的按钮。用户单击该按钮,就把gvUser控件的数据源设置为空,此时可以看到EmptyDataTemplate模板定义的内容。 |
<!-- Sample_05_04的Column.aspx页面 -->
<%@ Page Language="C#" %>
<script runat="server">
protected void btnEmpty_Click(object sender,EventArgs e)
{
gvUser.DataSourceID = "";gvUser.DataSource = null;gvUser.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"><title>GridView控件的模板列</title></head>
<body><form id="form1" runat="server">
<asp:GridView ID="gvUser" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#336666" BorderStyle="Double"
BorderWidth="3px" CellPadding="4" GridLines="Horizontal"
AllowPaging="True" DataKeyNames="ID" DataSourceID="myDSUser">
<EmptyDataTemplate>
当数据为空时,显示该模板列的内容。
</EmptyDataTemplate>
<PagerTemplate>
<asp:LinkButton ID="lbFirst" runat="server">首页</asp:LinkButton>
<asp:LinkButton ID="lbPrev" runat="server">上一页</asp:LinkButton>
<asp:LinkButton ID="lbNext" runat="server">下一页</asp:LinkButton>
<asp:LinkButton ID="lbLast" runat="server">末页</asp:LinkButton>
</PagerTemplate>
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"
InsertVisible="False" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="Email" HeaderText="Email"
SortExpression="Email" />
<asp:BoundField DataField="CreateDate" HeaderText="CreateDate"
SortExpression="CreateDate" />
</Columns>
</asp:GridView>
<asp:Button ID="btnEmpty" runat="server" OnClick="btnEmpty_Click"
Text="设置数据源为空" />
<asp:SqlDataSource ID="myDSUser" runat="server" ConnectionString="<%$
ConnectionStrings:WEB2ASPNET2DBConnectionString %>"
SelectCommand="SELECT [ID], [UserName], [Email], [CreateDate]
FROM [User]"></asp:SqlDataSource>
</form></body>
</html>
上述代码实例的执行之后,Column.aspx页面如图5.25所示。单击【设置数据源为空】按钮,把gvUser控件的数据源设置为空。此时,gvUser控件显示EmptyDataTemplate模板定义的内容,如图5.26所示。
图5.25 Column.aspx页面初始界面 图5.26 gvUser控件显示空模板的内容
5.4.3 GridView控件的域
GridView控件的Columns属性表示该控件中域(Field)的集合。该集合中的每一个元素的基类型都为DataControlField。GridView控件共包括7种域,如BoundField、ButtonField等。它们的具体说明如表5-21所示。
表5-21 GridView控件的域
域 名 称 |
描 述 |
BoundField |
绑定域,显示数据源中字段的值 |
ButtonField |
按钮域,显示一个命令按钮 |
CommandField |
命令按钮域,显示执行选择、编辑或删除操作的预定义命令按钮 |
CheckBoxField |
复选框域,一般用来显示具有布尔值的字段的值 |
HyperLinkField |
超链接域,将数据源中某个字段的值显示为超链接 |
ImageField |
图像域,显示一个图像 |
TemplateField |
模板域,用户可以自定义该域的内容 |
下面的代码实例声明了一个GridView控件和一个SqlDataSource控件。其中,GridView控件的ID属性的值为gvUser。该控件声明了9个域。其中,第1、7和8个域为Command域;第2个域为HyperLink域;第3、4个域为Bound域;第5个域为Image域;第6个域为CheckBox域;第9个域为Button域。另外,gvUser控件使用SqlDataSource控件myDSUser作为数据源,显示用户表User中的记录。
<!-- Sample_05_04的Field.aspx页面 -->
<%@ Page Language="C#" %>
<script runat="server"></script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"><title>GridView控件的域</title></head>
<body><form id="form1" runat="server">
<asp:GridView ID="gvUser" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#336666" BorderStyle="Double"
BorderWidth="3px" CellPadding="4" GridLines="Horizontal"
DataKeyNames="ID" DataSourceID="myDSUser">
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:HyperLinkField DataTextField="UserName" HeaderText="Username"
DataNavigateUrlFields="ID" DataNavigateUrlFormatString="#{0}"/>
<asp:BoundField DataField="Email" HeaderText="Email"
SortExpression="Email" />
<asp:BoundField DataField="CreateDate" HeaderText="CreateDate"
SortExpression="CreateDate" />
<asp:ImageField DataImageUrlField="ID" HeaderText="标记"
DataImageUrlFormatString="~/Images/xp.gif" ></asp:ImageField>
<asp:CheckBoxField Text="可见"/>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:ButtonField Text="链接" ButtonType="Link"
DataTextField="Username" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="myDSUser" runat="server" ConnectionString="<%$
ConnectionStrings:WEB2ASPNET2DBConnectionString %>"
SelectCommand="SELECT [ID], [UserName], [Email], [CreateDate]
FROM [User]"></asp:SqlDataSource>
</form></body>
</html>
上述代码实例的执行结果如图5.27所示。
图5.27 使用GridView控件的域
5.4.4 编辑数据
GridView控件对数据具有内置的编辑功能,它能够直接修改或删除数据源中的数据。该控件的CommandField域中可以提供【编辑】、【取消】、【更新】和【删除】按钮。这些按钮分别执行编辑状态、取消编辑、更新数据和删除数据等操作。
默认情况下,GridView控件以只读模式显示数据。若控件启用了编辑功能,且处于编辑模式时,则被编辑行的位置不再显示文本,而是显示可编辑控件(如TextBox、CheckBox等控件)。此时,用户可以在可编辑控件中直接编辑数据。单击【取消】按钮,可以取消编辑操作,单击【更新】按钮,将把编辑的结果提交到数据库中。另外,GridView控件还提供了6个与编辑相关的事件,如表5-22所示。
表5-22 GridView控件与编辑相关的事件
事 件 |
描 述 |
RowEditing |
单击【编辑】按钮以后,在控件进入编辑模式之前发生 |
RowCancelingEdit |
单击【取消】按钮以后,在该行退出编辑模式之前发生 |
RowUpdating |
单击【更新】按钮以后,在执行更新操作之前发生 |
RowUpdated |
单击【更新】按钮以后,在执行更新操作之后发生 |
RowDeleting |
单击【删除】按钮以后,在执行删除操作之前发生 |
RowDeleted |
单击【删除】按钮以后,在执行删除操作之后发生 |
下面的代码实例声明了一个GridView控件和一个SqlDataSource控件。其中,GridView控件的ID属性的值为gvUser。该控件声明了四个BoundField和两个CommandField。其中,四个BoundField分别显示用户的ID、名称、Email和创建时间。两个CommandField分别显示【编辑】按钮和【取消】按钮。另外,gvUser控件使用SqlDataSource控件myDSUser作为数据源,显示用户表User中的记录。
注意 |
SqlDataSource控件myDSUser提供了对数据的选择、插入、编辑、删除等功能。 |
<!-- Sample_05_04的Edit.aspx页面 -->
<%@ Page Language="C#" %>
<script runat="server"></script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"><title>编辑数据</title></head>
<body><form id="form1" runat="server">
<asp:GridView ID="gvUser" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#336666" BorderStyle="Double"
BorderWidth="3px" CellPadding="4" GridLines="Horizontal"
DataKeyNames="ID" DataSourceID="myDSUser" Font-Size="9pt">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"
InsertVisible="False" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="Email" HeaderText="Email"
SortExpression="Email" />
<asp:BoundField DataField="CreateDate" HeaderText="CreateDate"
SortExpression="CreateDate" ReadOnly="True" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="myDSUser" runat="server" ConnectionString="<%$
ConnectionStrings:WEB2ASPNET2DBConnectionString %>"
SelectCommand="SELECT [ID], [UserName], [Email], [CreateDate]
FROM [User]" DeleteCommand="DELETE [User] WHERE ID = @ID"
InsertCommand="INSERT INTO [User](Username,Email,RoleID,CreateDate)
VALUES(@Username,@Email,1,GetDate())"
UpdateCommand="UPDATE [User] SET Username = @Username,
Email = @Email,CreateDate = GetDate() WHERE ID = @ID">
<DeleteParameters><asp:Parameter Name="ID" /></DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Username" />
<asp:Parameter Name="Email" />
<asp:Parameter Name="ID" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Username" /><asp:Parameter Name="Email" />
</InsertParameters>
</asp:SqlDataSource>
</form></body>
</html>
上述代码实例的执行之后,Edit.aspx页面如图5.28所示。单击第3行中的【编辑】链接,gvUser控件处于编辑状态,如图5.29所示。
图5.28 Edit.aspx页面的初始界面 图5.29 gvUser控件编辑数据
5.4.5 排序数据
GridView控件内置了排序功能,能够对显示的数据按列排序。若要启用GridView控件的排序功能,只要把它的AllowSorting属性的值设置为true即可。此时,GridView控件把每一列的标题显示为链接。单击每一列的标题可以对该列数据进行排序。GridView控件与排序相关的属性如表5-23所示。
表5-23 GridView控件与排序相关的的属性
属 性 |
描 述 |
AllowSorting |
是否启用排序功能 |
SortDirection |
排序的方向,即正序还是倒序 |
SortExpression |
排序表达式 |
下面的代码实例声明了一个GridView控件和一个SqlDataSource控件。其中,GridView控件的ID属性的值为gvUser。该控件声明了4个BoundField,它们分别显示用户的ID、名称、Email和创建时间。gvUser控件还启用了排序功能。另外,gvUser控件使用SqlDataSource控件myDSUser作为数据源,显示用户表User中的记录。
<!-- Sample_05_04的Sort.aspx页面 -->
<%@ Page Language="C#" %>
<script runat="server"></script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"><title>排序数据</title></head>
<body><form id="form1" runat="server">
<asp:GridView ID="gvUser" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#336666" BorderStyle="Double"
BorderWidth="3px" CellPadding="4" GridLines="Horizontal"
DataKeyNames="ID" DataSourceID="myDSUser" Font-Size="9pt"
AllowSorting="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"
InsertVisible="False" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="Email" HeaderText="Email"
SortExpression="Email" />
<asp:BoundField DataField="CreateDate" HeaderText="CreateDate"
SortExpression="CreateDate" ReadOnly="True" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="myDSUser" runat="server" ConnectionString="<%$
ConnectionStrings:WEB2ASPNET2DBConnectionString %>"
SelectCommand="SELECT [ID], [UserName], [Email], [CreateDate]
FROM [User]" DeleteCommand="DELETE [User] WHERE ID = @ID"
InsertCommand="INSERT INTO [User](Username,Email,RoleID,CreateDate)
VALUES(@Username,@Email,1,GetDate())"
UpdateCommand="UPDATE [User] SET Username = @Username,
Email = @Email,CreateDate = GetDate() WHERE ID = @ID">
<DeleteParameters><asp:Parameter Name="ID" /></DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Username" />
<asp:Parameter Name="Email" />
<asp:Parameter Name="ID" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Username" /><asp:Parameter Name="Email" />
</InsertParameters>
</asp:SqlDataSource>
</form></body>
</html>
上述代码实例的执行之后,Sort.aspx页面如图5.30所示。单击第3列的标题【Email】链接,gvUser控件对第3列进行排序,如图5.31所示。
图5.30 Sort.aspx页面的初始界面 图5.31 gvUser控件对数据进行排序
5.4.6 分页数据
GridView控件提供了内置分页功能,它能够以分页方式显示数据源中的数据。若要启用GridView控件的分页功能,只要把它的AllowPaging属性的值设置为true即可。GridView控件与分页相关的属性如表5-24所示。
表5-24 GridView控件与分页相关的属性
属 性 |
描 述 |
AllowPaging |
是否启用分页功能 |
PageCount |
显示数据源记录所需的页数 |
PageIndex |
当前显示页的索引 |
PagerSettings |
PagerSettings对象,可以设置控件中的页导航按钮的属性 |
PageSize |
每页显示记录的数量 |
注意 |
如果GridView控件启用了分页功能,那么它的数据源必须实现了ICollection接口(集合接口)或数据集,否则将引发分页事件异常。特别地,此时,GridView控件不能使用SqlDataReader对象作为数据源。 |
GridView控件的分页模式由它的PagerSettings属性指定。该属性还可以指定分页使用的向前和向后导航的方向控件。GridView控件支持以下4种分页模式。
NextPrevious,显示【上一页】和【下一页】分页导航链接。
NextPreviousFirstLast,显示【首页】、【上一页】、【下一页】和【尾页】分页导航链接。
Numeric,使用分页后的页码编号作为分页导航链接。
NumericFirstLast,使用【首页】、页码编号和【尾页】作为分页导航链接。
下面的代码实例声明了一个GridView控件和一个SqlDataSource控件。其中,GridView控件的ID属性的值为gvUser。该控件声明了4个BoundField,它们分别显示用户的ID、名称、Email和创建时间。gvUser控件还启用了分页功能。另外,gvUser控件使用SqlDataSource控件myDSUser作为数据源,显示用户表User中的记录。
<!-- Sample_05_04的Paging.aspx页面 -->
<%@ Page Language="C#" %>
<script runat="server"></script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"><title>分页数据</title></head>
<body><form id="form1" runat="server">
<asp:GridView ID="gvUser" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#336666" BorderStyle="Double"
BorderWidth="3px" CellPadding="4" GridLines="Horizontal"
DataKeyNames="ID" DataSourceID="myDSUser" Font-Size="9pt"
AllowPaging="True" PageSize="5">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"
InsertVisible="False" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="Email" HeaderText="Email"
SortExpression="Email" />
<asp:BoundField DataField="CreateDate" HeaderText="CreateDate"
SortExpression="CreateDate" ReadOnly="True" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="myDSUser" runat="server" ConnectionString="<%$
ConnectionStrings:WEB2ASPNET2DBConnectionString %>"
SelectCommand="SELECT [ID], [UserName], [Email], [CreateDate]
FROM [User]" DeleteCommand="DELETE [User] WHERE ID = @ID"
InsertCommand="INSERT INTO [User](Username,Email,RoleID,CreateDate)
VALUES(@Username,@Email,1,GetDate())"
UpdateCommand="UPDATE [User] SET Username = @Username,
Email = @Email,CreateDate = GetDate() WHERE ID = @ID">
<DeleteParameters><asp:Parameter Name="ID" /></DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Username" />
<asp:Parameter Name="Email" />
<asp:Parameter Name="ID" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Username" /><asp:Parameter Name="Email" />
</InsertParameters>
</asp:SqlDataSource>
</form></body>
</html>
上述代码实例执行之后,Paging.aspx页面如图5.32所示。单击分页区域下方的【3】链接,gvUser控件显示第3页的数据,如图5.33所示。
图5.32 Paging.aspx页面的初始界面 图5.33 gvUser控件显示第3页的数据
5.4.7 GridView控件的事件
GridView控件提供了与行的行为、以及对行的数据进行选择、编辑、更新、删除等操作相关的事件,如表5-25所示。
表5-25 GridView控件的事件
事 件 |
描 述 |
RowCreated |
控件创建行时发生 |
RowDataBound |
控件绑定行的数据时发生 |
DataBound |
控件绑定到数据源后发生 |
RowCommand |
单击控件中的按钮时发生 |
SelectedIndexChanging |
单击【选择】按钮以后,在选择操作进行处理之前发生 |
SelectedIndexChanged |
单击【选择】按钮以后,在选择操作进行处理之后发生 |
RowEditing |
单击【编辑】按钮以后,在控件进入编辑模式之前发生 |
续表
事 件 |
描 述 |
RowCancelingEdit |
单击【取消】按钮以后,在该行退出编辑模式之前发生 |
RowUpdating |
单击【更新】按钮以后,在执行更新操作之前发生 |
RowUpdated |
单击【更新】按钮以后,在执行更新操作之后发生 |
RowDeleting |
单击【删除】按钮以后,在执行删除操作之前发生 |
RowDeleted |
单击【删除】按钮以后,在执行删除操作之后发生 |
Sorting |
单击【排序】超链接以后,在排序操作进行处理之前发生 |
Sorted |
单击【排序】超链接以后,在排序操作进行处理之后发生 |
PageIndexChanging |
单击【导航】按钮以后,在处理分页操作之前发生 |
PageIndexChanged |
单击【导航】按钮以后,在处理分页操作之后发生 |
下面的代码实例声明了一个GridView控件,并定义了该控件的Init、Load、DataBinding、DataBound、RowCreated、RowCommand、RowDataBound和PreRender事件,并且每一个事件在执行时将显示该事件的名称。如果事件与控件的行(Row)相关,则显示当前行(Row)的索引值。
<!-- Sample_05_04的Click.aspx页面 -->
<%@ Page Language="C#" %>
<script runat="server">
protected void gvUser_DataBinding(object sender,EventArgs e)
{ ///显示事件的名称
Response.Write("gvUser_DataBinding()事件正在执行……<br />");
}
protected void gvUser_DataBound(object sender,EventArgs e)
{ ///显示事件的名称
Response.Write("gvUser_DataBound()事件正在执行……<br />");
}
protected void gvUser_RowDataBound(object sender,GridViewRowEventArgs e)
{ ///显示事件的名称
Response.Write("第" + (e.Row.RowIndex + 1).ToString()
+ "正在执行gvUser_RowDataBound()事件……<br />");
}
protected void gvUser_RowCreated(object sender,GridViewRowEventArgs e)
{ ///显示事件的名称
Response.Write("第" + (e.Row.RowIndex + 1).ToString()
+ "正在执行gvUser_RowCreated()事件……<br />");
}
protected void gvUser_Init(object sender,EventArgs e)
{ ///显示事件的名称
Response.Write("gvUser_Init()事件正在执行……<br />");
}
protected void gvUser_Load(object sender,EventArgs e)
{ ///显示事件的名称
Response.Write("gvUser_Load()事件正在执行……<br />");
}
protected void gvUser_PreRender(object sender,EventArgs e)
{ ///显示事件的名称
Response.Write("gvUser_PreRender()事件正在执行……<br />");
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"> <title>GridView控件的事件</title></head>
<body><form id="form1" runat="server">
<asp:GridView ID="gvUser" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#336666" BorderStyle="Double"
BorderWidth="3px" CellPadding="4" GridLines="Horizontal"
DataKeyNames="ID" DataSourceID="myDSUser" Font-Size="9pt"
OnDataBinding="gvUser_DataBinding"
OnDataBound="gvUser_DataBound"
OnRowDataBound="gvUser_RowDataBound"
OnRowCreated="gvUser_RowCreated"
OnInit="gvUser_Init" OnLoad="gvUser_Load"
OnPreRender="gvUser_PreRender">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"
InsertVisible="False" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="Email" HeaderText="Email"
SortExpression="Email" />
<asp:BoundField DataField="CreateDate" HeaderText="CreateDate"
SortExpression="CreateDate" ReadOnly="True" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="myDSUser" runat="server" ConnectionString="<%$
ConnectionStrings:WEB2ASPNET2DBConnectionString %>"
SelectCommand="SELECT [ID], [UserName], [Email], [CreateDate]
FROM [User]"></asp:SqlDataSource>
</form></body>
</html>
上述代码实例的执行结果如图5.34所示。
图5.34 显示GridView控件的事件执行结果