La méthode DataBinder.Eval() permet d'évaluer une expression. Plus concrètement, on utilisera Eval() à l'intérieur d'un TemplateField afin de donner une valeur à un Label, à un TextBox ou à toute autre balise qui doit obtenir une valeur par programmation.
Eval() permet également d'exécuter du code C# à l'intérieur d'une balise afin d'effectuer un traitement plus avancé, comme par exemple initialiser un attribut en fonction d'une condition ou encore de gérer les valeurs nulles.
Puisqu'il s'agit d'évaluer du code C# à l'intérieur d'une balise, on entourera l'appel à Eval() par les symboles <%# ... %>.
Dans le scénario le plus simple, on utilisera Eval() pour évaluer la valeur d'un champ à afficher.
Ex :
<asp:GridView ... >
<Columns>
...
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="labelNom" runat="server" Text='<%# Eval("produit_nom") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Il est également possible d'utiliser Eval() pour initialiser un attribut, comme par exemple l'attribut checked d'un CheckBox.
Ex :
<asp:GridView ... >
<Columns>
...
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="checkBoxDisponible" runat="server"
Checked='<%# Eval("produit_disponible").ToString().Equals("True") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
En utilisant l'opérateur ternaire (?:), aussi appelé « inline if », on peut obtenir des résultats encore plus intéressants.
Ex :
<asp:GridView ... >
<Columns>
...
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="labelDisponible" runat="server"
Text='<%# Convert.ToBoolean(Eval("produit_disponible")) ? "Oui" : "Non" %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
L'exemple suivant démontre qu'avec Eval() et l'opérateur conditionnel, il devient facile de tenir compte des valeurs nulles.
Ex :
<asp:GridView ... >
<Columns>
...
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="imageDisponible" ImageUrl="Medias/Commun/Crochet.png" runat="server"
Visible='<%# Eval("produit_disponible") != DBNull.Value ? Convert.ToBoolean(Eval("produit_disponible")) : false %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
▼Publicité
Site fièrement hébergé chez A2 Hosting.