Compartir a través de


Crear una fila personalizada en un control de servidor Web DetailsView

Actualización: noviembre 2007

El control DetailsView puede generar automáticamente filas de los campos proporcionados por el origen de datos. Además, puede identificar específicamente una colección de filas que se va a mostrar en lugar de generarlas automáticamente. Sin embargo, es posible que encuentre un escenario donde necesite personalizar cómo se muestra una fila individual. En ese caso, puede crear un TemplateField para especificar un diseño personalizado.

Crear plantillas

Un objeto TemplateField le permite especificar plantillas que contienen el código de formato y los controles para personalizar el diseño y el comportamiento de una fila en un control DetailsView. Con ItemTemplate, puede especificar el diseño que se va a utilizar cuando el control DetailsView muestra una fila. Para especificar un diseño personalizado cuando los usuarios inserten una nueva fila de datos, puede crear InsertItemTemplate. Para especificar un diseño personalizado cuando los usuarios editen una fila de datos, puede crear EditItemTemplate.

Su plantilla puede contener código de formato, controles de servidor Web y botones de comando. Para obtener más información sobre las plantillas, vea Plantillas de controles de servidor Web ASP.NET.

Enlazar datos en una plantilla

En una plantilla, puede enlazar los controles a los datos utilizando los métodos Eval y Bind. Utilice el método Eval cuando el control sólo muestre valores. Utilice el método Bind cuando los usuarios puedan modificar un valor de los datos, es decir, para escenarios de actualización de datos. Utilice el método Eval en cualquiera de las plantillas para mostrar los datos. Utilice el método Bind en una plantilla con controles en los que los usuarios puedan cambiar valores, como los controles TextBox y CheckBox, o en una plantilla que permite eliminar un registro. Para obtener más información, vea Información general sobre las expresiones de enlace de datos.

Ejemplo

El ejemplo siguiente muestra la colección Fields de un control DetailsView. La colección contiene un objeto TemplateField, que a su vez contiene objetos ItemTemplate, InsertItemTemplate, EditItemTemplate. Para mostrar una fecha, ItemTemplate incluye un control Label que utiliza el método Eval. Para insertar o editar una fecha, las otras plantillas utilizan un control Calendar que utiliza el método Bind.

<Fields>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" InsertVisible="False" ReadOnly="true"/>                    
  <asp:BoundField DataField="FirstName"  HeaderText="First Name"/>
  <asp:BoundField DataField="LastName"   HeaderText="Last Name"/>                    
  <asp:TemplateField HeaderText="Birth Date">
    <ItemTemplate> 
      <asp:Label ID="BirthDateLabel" Runat="Server" 
                 Text='<%# Eval("BirthDate", "{0:d}") %>' />
    </ItemTemplate>
    <InsertItemTemplate>
      <asp:Calendar ID="InsertBirthDateCalendar" Runat="Server"
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </InsertItemTemplate>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField>                    
</Fields> 
<Fields>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" InsertVisible="False" ReadOnly="true"/>                    
  <asp:BoundField DataField="FirstName"  HeaderText="First Name"/>
  <asp:BoundField DataField="LastName"   HeaderText="Last Name"/>                    
  <asp:TemplateField HeaderText="Birth Date">
    <ItemTemplate> 
      <asp:Label ID="BirthDateLabel" Runat="Server" 
                 Text='<%# Eval("BirthDate", "{0:d}") %>' />
    </ItemTemplate>
    <InsertItemTemplate>
      <asp:Calendar ID="InsertBirthDateCalendar" Runat="Server"
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </InsertItemTemplate>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField>                    
</Fields> 

Vea también

Conceptos

Información general sobre los controles de servidor Web ASP.NET enlazados a datos

Información general sobre los controles de origen de datos

Referencia

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