Compartilhar via


Criando uma linha personalizada em um controle de servidor da Web DetailsView

O controle DetailsView pode gerar automaticamente linhas dos campos fornecidos pelo fonte de dados.Além disso, você pode identificar especificamente uma coleção de linhas a serem exibidas, em vez de gerar automaticamente.Entretanto, você pode encontrar um cenário onde você precise personaliza uma linha individual que é exibida.Nesse caso, você pode criar um TemplateField para especificar um layout personalizado.

Criando modelos

Um objeto TemplateField permite a você especificar modelos que contêm a marcação e os controles para personalizar o layout e o comportamento de uma linha em um controle DetailsView.Usando um ItemTemplate, você pode especificar o layout a ser usado quando o controle DetailsView exibe uma linha.Para especificar um layout personalizado para quando os usuários inserirem uma nova linha de dados, você pode criar um InsertItemTemplate.Para especificar um layout personalizado para quando os usuários editarem uma linha de dados, você pode criar um EditItemTemplate.

O modelo pode conter marcações, controles de servidor da Web, e botões de comando.Para obter mais informações sobre modelos, consulte Modelos de controles servidores web ASP.NET.

Vinculação de dados em um modelo

In a template, you can bind controls to data using the Eval and Bind methods.You use the Eval method when the control will only display values.You use the Bind method when users can modify a data value—that is, for data-update scenarios.You can use the Eval method in any of the templates to display data.You use the Bind method in a template with controls in which users might change values, such as TextBox and CheckBox controls, or a template that allows a record to be deleted.Para obter mais informações, consulte Visão geral de expressões de ligação de dados.

Exemplo

The following example shows the Fields collection of a DetailsView control.A coleção contém um objeto TemplateField que, por sua vez contém objetos ItemTemplate, InsertItemTemplate, EditItemTemplate.To display a date, the ItemTemplate includes a Label control that uses the Eval method.Para inserir ou editar uma data, os outros modelos usam um controle Calendar que usa o 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> 

Consulte também

Conceitos

Visão geral de controle servidor Web com dados vinculados

Visão geral sobre controles fonte de dados

Referência

Visão geral do controle de servidor Web DetailsView