Share via


Información general sobre FormView (Control de servidor Web)

Actualización: noviembre 2007

El control FormView se utiliza para mostrar cada vez un único registro de un origen de datos. Al utilizar el control FormView, se crean plantillas para mostrar y editar valores enlazados a datos. Las plantillas contienen controles, expresiones de enlace y formato que definen la apariencia y funcionalidad del formulario. El control FormView se utiliza a menudo en combinación con un control GridView para escenarios de detalles maestros.

Este tema contiene:

  • Información general

  • Ejemplos de código

  • Referencia de clase

Información general

El control FormView permite trabajar con un único registro de un origen de datos, similar al control DetailsView. La diferencia entre los controles FormView y DetailsView radica en que el control DetailsView utiliza un diseño tabular donde cada campo del registro se muestra como una fila independiente. En cambio, el control FormView no especifica un diseño predefinido para mostrar el registro. En su lugar, se crea una plantilla que contiene controles para mostrar campos individuales del registro. La plantilla contiene el formato, los controles y las expresiones de enlace que se utilizan para crear el formulario.

El control FormView se utiliza normalmente para actualizar e insertar nuevos registros. Se utiliza a menudo en escenarios de detalles maestros en los que el registro seleccionado del control maestro determina el registro que se muestra en el control FormView. Para obtener más información y un ejemplo, vea Modificar datos mediante un control FormView de servidor Web.

El control FormView se basa en las funciones del control de origen de datos para realizar tareas como actualizar, insertar o eliminar registros. El control FormView muestra solamente un único registro de datos por vez, aunque su origen de datos exponga varios registros.

El control FormView puede paginar automáticamente los datos de su origen de datos asociado un registro cada vez. Esto requiere que un objeto que implementa la interfaz ICollection represente los datos, o que el origen de datos subyacente admita la paginación. El control FormView proporciona la interfaz de usuario para navegar entre los registros. Para habilitar la función de paginación, establezca la propiedad AllowPaging en true y especifique un valor en PagerTemplate.

El control FormView dispone de varios eventos que puede controlar para ejecutar su propio código. Los eventos se desencadenan antes y después de que se produzcan las operaciones de inserción, actualización y eliminación del control de origen de datos asociado. También puede escribir controladores para los eventos ItemCreated y ItemCommand. Para obtener más información, vea Eventos del control de servidor Web FormView.

Nota:

El modelo de eventos del control FormView es como el del control GridView. Sin embargo, el control FormView no admite un evento de selección, porque el registro actual siempre es el elemento seleccionado.

Enlace de datos con el control FormView

El control FormView proporciona estas opciones para enlazar a datos:

  • Enlace de datos mediante la propiedad DataSourceID, que permite enlazar el control FormView a un control de origen de datos. Es el método recomendado, ya que permite al control FormView aprovechar las capacidades del control de origen de datos y proporcionar una funcionalidad integrada para la actualización y la paginación.

  • Enlace de datos mediante la propiedad DataSource, que permite enlazar a distintos objetos, incluidos lectores de datos y conjuntos de datos de ADO.NET. Este método requiere que escriba el código para cualquier funcionalidad adicional, por ejemplo la actualización y la paginación.

Cuando establece un enlace a un origen de datos mediante la propiedad DataSourceID, el control FormView admite el enlace de datos bidireccional. Además de que el control muestre los datos, puede permitir que el control admita automáticamente las operaciones de inserción, actualización y eliminación de los datos enlazados.

Para obtener más información, vea Controles de servidor web de orígenes de datos.

Crear la interfaz de usuario del control FormView

Para generar la interfaz de usuario del control FormView, puede crear plantillas. Debe especificar plantillas distintas para cada acción. Crea una plantilla ItemTemplate para los modos de presentación, inserción y edición. Puede controlar la paginación mediante una plantilla PagerTemplate y puede personalizar el encabezado y el pie de página del control FormView utilizando HeaderTemplate y FooterTemplate, respectivamente. Mediante EmptyDataTemplate, también puede especificar que se muestre una plantilla cuando el origen de datos no devuelva datos. Para obtener más información, vea Crear plantillas para el control FormView de servidor Web.

Las plantillas de elementos que crea para el control FormView especifican el contenido del control. Al igual que con el control DetailsView, también puede personalizar el formato de presentación del control FormView utilizando propiedades de estilo, como EditRowStyle, EmptyDataRowStyle, FooterStyle, HeaderStyle, InsertRowStyle, PagerStyle y RowStyle.

En el ejemplo siguiente se muestra una página ASP.NET que utiliza un control FormView para mostrar datos.

<%@ 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 >
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

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

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

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel"  Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel"  Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel"  Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel"  Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel"  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 >
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

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

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

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

Volver al principio

Ejemplos de código

Crear plantillas para el control FormView de servidor Web

Paginación en un control de servidor Web FormView

Modificar datos mediante un control FormView de servidor Web

Eventos del control de servidor Web FormView

Tutorial: Mostrar datos con formato en páginas web con el control de servidor web FormView

Volver al principio

Referencia de clase

En la tabla siguiente se enumeran las clases clave que se relacionan con el control FormView.

Miembro

Descripción

FormView

Clase principal del control.

Volver al principio

Vea también

Conceptos

Información general sobre el acceso a datos en ASP.NET

Plantillas de controles de servidor Web ASP.NET

Otros recursos

Controles de datos del Cuadro de herramientas