GridView remplacement d'un champ en fonction de la valeur

Résolu
id060261 Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 27 juillet 2008 - 26 juil. 2008 à 17:15
id060261 Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 27 juillet 2008 - 27 juil. 2008 à 11:34
Bonjour,

J'ai une collone dans ma GridView qui affiche 1 ou 0 si un produit est de stock ou pas.
Dans ma base de donéne SQL Server, j'ai donc un champs "stock" avec la valeur 1 si le produit est de stock, et 0 s'il ne l'est pas.

Pour que ce soit plus présentable, je voudrais que dans ma GridView ASP.net s'affiche une petite image picto verte si ma valeur En Stock est égale à 1 (à la place de juste afficher un petit "1"), et ne rien afficher si la valeur est égale à 0.

Ma question est donc : Comment remplacer une valeur d'une de mes colones de mon GridView et pouvoir afficher une image à la place si cette valeur est égale à "1" ?

D'avance merci :-)
Marc

4 réponses

ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
26 juil. 2008 à 22:32
Bonsoir,

En créant un templatefield et en mettant une image dans l'itemtemplate, tu peux faire comme cela, sur l'événement rowcreated du gridview :

Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim im As Image = CType(e.Row.FindControl("Image1"), Image)
            Dim p As Integer = DataBinder.Eval(e.Row.DataItem, "TonChampdeTable")
            If p = 0 Then
                im.ImageUrl = "../tonImage1.png"
            Else
                im.ImageUrl = "../tonImage2.png"
            End If
        End If  
    End Sub

Cordialement,

GGtry
3
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
27 juil. 2008 à 10:13
Bonjour,

Ton champ email est une chaîne de caractères, pas un Integer. D'autre part, not ... is nothing n'est pas approprié.
N'oublie pas non plus de changer "im" en ton "imMail"
Tu peux faire plutôt (en supposant donc que s'il n'y a pas d'e-mail, le champ est Null) :

If IsDBNull(DataBinder.Eval(e.Row.DataItem, "email")) = False Then
                imMail.ImageUrl = "../mail.png"
            Else
                imMail.Visible = False
End If

GGtry
3
id060261 Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 27 juillet 2008
27 juil. 2008 à 01:53
Bonsoir

Merci ! Ca fonctionne à merveille
Juste une autre petite question en rapport : J'ai aussi un champ e-mail qui contient des adresse e-mails dans ma table. Je voudrais que si le champ e-mail est rempli, il affiche une image, mais que si celui-ci est vide, il n'affiche rien.

J'ai fais

        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim imMail As Image = CType(e.Row.FindControl("ImageMail"), Image)
            Dim pMail As Integer = DataBinder.Eval(e.Row.DataItem, "email")
            If Not pMail Is Nothing Then
                im.ImageUrl = "../mail.png"
            End If
        End If  

Mais ca ne fonctionne pas. Une idée ?

Encore merci
0
id060261 Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 27 juillet 2008
27 juil. 2008 à 11:34
Nickel !
Encore une fois merci  C'est parfait.

A++
Marc
0
Rejoignez-nous