Utiliser un IF au sein d'un GridView
- Par: jack
- Le: 25.03.2009 20:17:25
- Dans: Composants ASP
Voici une méthode permettant d'utiliser des conditions sur un champ issu d'une table d'une base de données et d'afficher différents résultats au sein de la section <asp:templatefield> d'un Gridview.
Vous utilisez une zone <asp:templatefield> dans un Gridview pour le personnaliser.
Le problème est d’utiliser une condition sur un champ de la table associée au Gridview.
Par exemple :
Dans votre table vous avez un champ « etat » qui indique numériquement l'état d'une commande.
etat = 0 - Commande en cours
etat= 1 - Commande Envoyée
etat= 2 - Commande Annulée
Vous souhaiteriez afficher à un endroit de votre Gridview une indication sur la commande affichée.
Supposons, que vous ayez un champ label qui assure l'affichage de cette donnée.
Vous ne pouvez pas faire quelque chose du genre :
<% if (DataBinder.Eval(Container, "DataItem.etat") =0 then %>
<asp:Label id ="encours" runat="server" text="Commande en cours"></asp:label>
<% else %>
....
<% end if%>
Vous utilisez une zone <asp:templatefield> dans un Gridview pour le personnaliser.
Le problème est d’utiliser une condition sur un champ de la table associée au Gridview.
Par exemple :
Dans votre table vous avez un champ « etat » qui indique numériquement l'état d'une commande.
etat = 0 - Commande en cours
etat= 1 - Commande Envoyée
etat= 2 - Commande Annulée
Vous souhaiteriez afficher à un endroit de votre Gridview une indication sur la commande affichée.
Supposons, que vous ayez un champ label qui assure l'affichage de cette donnée.
Vous ne pouvez pas faire quelque chose du genre :
<% if (DataBinder.Eval(Container, "DataItem.etat") =0 then %>
<asp:Label id ="encours" runat="server" text="Commande en cours"></asp:label>
<% else %>
....
<% end if%>
La solution consiste simplement à créer en codeBehind une fonction qui va se charger de faire le test pour vous, et renvoyer la valeur que vous souhaitez.
La fonction :
Protected Function affiche_etat_commande (ByVal text) As String
Dim stext As String = ""
select case text
case 0
stext = "<font color=""Gray"">Commande en cours</font>"
case 1
stext = "<font color=""Green"">Commande envoyé</font>"
case 2
stext = "<font color=""Red"">Commande annulée</font>"
end select
Return stext
End Function
Ainsi vous devez créer un contrôle <label> dans notre la zone templatefield du Gridview :
<asp:Label ID="etat" runat="server" Text='<%# affiche_etat_commande(DataBinder.Eval(Container, "DataItem.etat"))%>'></asp:Label>
La fonction :
Protected Function affiche_etat_commande (ByVal text) As String
Dim stext As String = ""
select case text
case 0
stext = "<font color=""Gray"">Commande en cours</font>"
case 1
stext = "<font color=""Green"">Commande envoyé</font>"
case 2
stext = "<font color=""Red"">Commande annulée</font>"
end select
Return stext
End Function
Ainsi vous devez créer un contrôle <label> dans notre la zone templatefield du Gridview :
<asp:Label ID="etat" runat="server" Text='<%# affiche_etat_commande(DataBinder.Eval(Container, "DataItem.etat"))%>'></asp:Label>