FormView Web 服务器控件概述

更新:2007 年 11 月

FormView 控件用于一次显示数据源中的一个记录。在使用 FormView 控件时,可创建模板来显示和编辑绑定值。这些模板包含用于定义窗体的外观和功能的控件、绑定表达式和格式设置。FormView 控件通常与 GridView 控件一起用于主控/详细信息方案。

本主题包括:

  • 背景

  • 代码示例

  • 类参考

背景

DetailsView 控件类似,FormView 控件可让您使用数据源中的单个记录。FormView 控件和 DetailsView 控件之间的差别在于 DetailsView 控件使用表格布局,在该布局中,记录的每个字段都各自显示为一行。而 FormView 控件不指定用于显示记录的预定义布局,而将创建一个模板,其中包含用于显示记录中的各个字段的控件。该模板中包含用于创建窗体的格式、控件和绑定表达式。

FormView 控件通常用于更新和插入新记录。该控件通常用于主/从方案,在此方案中,主控件的选定记录决定要在 FormView 控件中显示的记录。有关更多信息及示例,请参见使用 FormView Web 服务器控件修改数据

FormView 控件依赖于数据源控件的功能执行诸如更新、插入和删除记录的任务。即使 FormView 控件的数据源公开了多条记录,该控件一次也仅显示一条数据记录。

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

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

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

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

使用 FormView 控件进行数据绑定

FormView 控件提供了这些用于绑定到数据的选项:

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

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

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

有关更多信息,请参见数据源 Web 服务器控件

创建 FormView 控件用户界面

可以通过创建模板来为 FormView 控件生成用户界面 (UI)。为不同操作指定不同的模板。您可以为显示、插入和编辑模式创建一个 ItemTemplate 模板。您可以使用 PagerTemplate 模板控制分页,还可以使用 HeaderTemplateFooterTemplate 模板分别自定义 FormView 控件的页眉和页脚。通过使用 EmptyDataTemplate,还可以指定在数据源不返回任何数据时显示的模板。有关更多信息,请参见为 FormView Web 服务器控件创建模板

FormView 控件创建的项模板指定控件的内容。使用 DetailsView 控件,您还可以通过使用样式属性(例如 EditRowStyleEmptyDataRowStyleFooterStyleHeaderStyleInsertRowStylePagerStyleRowStyle 属性)自定义 FormView 控件的显示格式。

下面的示例演示一个 ASP.NET 页,该页使用 FormView 控件来显示数据。

<%@ Page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:FormView ID="ProductsFormView"
                DataSourceID="ProductsSqlDataSource"
                AllowPaging="true"
                runat="server">

                <HeaderStyle forecolor="white" backcolor="Blue" />                

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel" runat="server" Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel" runat="server" Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel" runat="server" Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel" runat="server" Text='<%# Eval("UnitPrice") %>' /></td>
                    </tr>
                  </table>                 
                </ItemTemplate>

                <PagerTemplate>
                  <table>
                    <tr>
                      <td><asp:LinkButton ID="FirstButton" CommandName="Page" CommandArgument="First" Text="<<" RunAt="server"/></td>
                      <td><asp:LinkButton ID="PrevButton"  CommandName="Page" CommandArgument="Prev"  Text="<"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="NextButton"  CommandName="Page" CommandArgument="Next"  Text=">"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="LastButton"  CommandName="Page" CommandArgument="Last"  Text=">>" RunAt="server"/></td>
                    </tr>
                  </table>
                </PagerTemplate>

              </asp:FormView>

            </td>
          </tr>
        </table>

        <asp:SqlDataSource ID="ProductsSqlDataSource" 
          SelectCommand="SELECT * FROM [Products]" 
          connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" 
          RunAt="server"/>

      </form>
  </body>
</html>
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:FormView ID="ProductsFormView"
                DataSourceID="ProductsSqlDataSource"
                AllowPaging="true"
                runat="server">

                <HeaderStyle forecolor="white" backcolor="Blue" />                

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel" runat="server" Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel" runat="server" Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel" runat="server" Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel" runat="server" Text='<%# Eval("UnitPrice") %>' /></td>
                    </tr>
                  </table>                 
                </ItemTemplate>

                <PagerTemplate>
                  <table>
                    <tr>
                      <td><asp:LinkButton ID="FirstButton" CommandName="Page" CommandArgument="First" Text="<<" RunAt="server"/></td>
                      <td><asp:LinkButton ID="PrevButton"  CommandName="Page" CommandArgument="Prev"  Text="<"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="NextButton"  CommandName="Page" CommandArgument="Next"  Text=">"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="LastButton"  CommandName="Page" CommandArgument="Last"  Text=">>" RunAt="server"/></td>
                    </tr>
                  </table>
                </PagerTemplate>

              </asp:FormView>

            </td>
          </tr>
        </table>

        <asp:SqlDataSource ID="ProductsSqlDataSource" 
          SelectCommand="SELECT ProductID, ProductName, CategoryID, QuantityPerUnit, UnitPrice FROM [Products]" 
          connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" 
          RunAt="server"/>

      </form>
  </body>
</html>

返回页首

代码示例

为 FormView Web 服务器控件创建模板

在 FormView Web 服务器控件中分页

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

FormView Web 服务器控件事件

演练:使用 FormView Web 服务器控件在网页中显示格式化数据

返回页首

类参考

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

成员

说明

FormView

控件的主类。

返回页首

请参见

概念

ASP.NET 数据访问概述

ASP.NET Web 服务器控件模板

其他资源

数据工具箱控件