Partager via


Création d'une colonne personnalisée dans un contrôle serveur Web GridView

Mise à jour : novembre 2007

Le contrôle GridView peut générer automatiquement des colonnes à partir des champs fournis par la source de données. En outre, vous pouvez créer une collection de colonnes à afficher au lieu de les générer automatiquement. Toutefois, vous pouvez être amené dans certaines circonstances à devoir personnaliser l'affichage d'une colonne individuelle. Dans ce cas, vous pouvez créer un objet TemplateField pour spécifier une présentation de colonne personnalisée.

Création de modèles

Un objet TemplateField permet de spécifier des modèles qui contiennent un balisage et des contrôles visant à personnaliser la présentation et le comportement d'une colonne dans un contrôle GridView. À l'aide d'un objet ItemTemplate, vous pouvez spécifier la présentation à utiliser lorsque le contrôle GridView affiche des données dans une colonne. Pour spécifier une présentation personnalisée lorsque les utilisateurs modifient les données d'une colonne, vous pouvez créer une propriété EditItemTemplate.

Votre modèle peut contenir des balises, des contrôles serveur Web et des boutons de commande. Pour plus d'informations sur les modèles, consultez Modèles de contrôles serveur Web ASP.NET.

Liaison de données dans un modèle

Dans un modèle, vous pouvez lier des contrôles aux données à l'aide des méthodes Eval et Bind. Utilisez la méthode Eval lorsque le contrôle affiche uniquement des valeurs. Utilisez la méthode Bind lorsque les utilisateurs peuvent modifier la valeur des données, comme dans le cas de mises à jour de données. Vous pouvez utiliser la méthode Eval dans tous les modèles servant à afficher des données. Vous utilisez la méthode Bind dans un modèle incluant des contrôles dans lesquels les utilisateurs peuvent modifier des valeurs, par exemple les contrôles TextBox et CheckBox ou dans un modèle qui autorise la suppression d'un enregistrement. Pour plus d'informations, consultez Vue d'ensemble des expressions de liaison de données.

Exemple

L'exemple suivant illustre la collection Columns d'un contrôle GridView. La collection contient un objet TemplateField, lequel contient lui-même un objet ItemTemplate. Pour afficher une date, l'objet ItemTemplate inclut un contrôle Label qui utilise la méthode Eval. Pour modifier une date, les autres modèles utilisent un contrôle Calendar qui utilise la méthode Bind.

<Columns>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" 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>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField>   
  <asp:HyperLinkField Text="Show Detail"
                      DatahrefFormatString="~/ShowEmployeeDetail.aspx?EmployeeID={0}"
                      DatahrefFields="EmployeeID" />                   
</Columns> 
<Columns>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" 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>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField> 
  <asp:HyperLinkField Text="Show Detail"
                      DatahrefFormatString="~/ShowEmployeeDetail.aspx?EmployeeID={0}"
                      DatahrefFields="EmployeeID" />                   
</Columns> 

Voir aussi

Concepts

Vue d'ensemble des contrôles serveur Web liés aux données ASP.NET

Vue d'ensemble des contrôles de source de données

Référence

Vue d'ensemble du contrôle serveur Web GridView