GridView remplacement d'un champ en fonction de la valeur [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
27 juillet 2008
-
id060261
Messages postés
5
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
27 juillet 2008
-
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

Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
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
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
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
Messages postés
5
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
27 juillet 2008

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
Messages postés
5
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
27 juillet 2008

Nickel !
Encore une fois merci  C'est parfait.

A++
Marc