Création d'une ligne personnalisée dans un contrôle serveur Web DetailsView
Mise à jour : novembre 2007
Le contrôle DetailsView peut générer automatiquement des lignes à partir des champs fournis par la source de données. De plus, vous pouvez identifier une collection de lignes spécifique à afficher au lieu de les générer automatiquement. Toutefois, vous pouvez être amené dans certaines circonstances à devoir personnaliser l'affichage d'une ligne individuelle. Dans ce cas, vous pouvez créer un objet TemplateField pour spécifier une présentation personnalisée.
Création de modèles
Un objet TemplateField permet de spécifier des modèles qui contiennent des balises et des contrôles visant à personnaliser la présentation et le comportement d'une ligne dans un contrôle DetailsView. À l'aide d'un objet ItemTemplate, vous pouvez spécifier la présentation à utiliser lorsque le contrôle DetailsView affiche une ligne. Pour spécifier une présentation personnalisée lorsque les utilisateurs insèrent une nouvelle ligne de données, vous pouvez créer une propriété InsertItemTemplate. Pour spécifier une présentation personnalisée lorsque les utilisateurs modifient une ligne de données, 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 Fields d'un contrôle DetailsView. La collection contient un objet TemplateField qui, lui-même, contient les objets ItemTemplate, InsertItemTemplate et EditItemTemplate. Pour afficher une date, l'objet ItemTemplate inclut un contrôle Label qui utilise la méthode Eval. Pour insérer ou modifier une date, les autres modèles utilisent un contrôle Calendar qui utilise la méthode 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>
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