IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[VB.NET] Afficher une image dynamiquement


Sujet :

ASP.NET

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut [VB.NET] Afficher une image dynamiquement
    bonjour

    Je voudrais afficher une image dynamiquement en fonction de ce que je récupère dans une BDD.

    J'ai mis un repeater qui me permet d'afficher tout un tas de données. Parmi ces données, j'ai une image que je dois afficher dynamiquement. Je pensais que poser un webcontrol image dans mon repeater allait être une solution rapide et efficace, mais en vain...

    Aurirez vous svp une méthode ? une solution ?

    D'avance merci pr vos messages
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut à moitié résolu, mais pas entier
    Ok, les images s'affichent grace à cette facon dans mon repeater :

    <asp:image id="imgTest" runat="server" ImageUrl='<%# String.Format("/MonChemin/{0}.jpg", DataBinder.Eval(Container.DataItem,"Numero")) %>'></asp:image>

    Cependant, il est possible selon les cas que j'ai pas d'image physiquement. Je me retrouve donc avec une croix rouge...
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  3. #3
    Membre régulier
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Points : 97
    Points
    97
    Par défaut
    Que voudrais tu que ça fasse lorsqu'il n'y a pas d'image?
    Est ce que tu as fais attention à la propriété AlternateText du controle Image?

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut vivi
    et bien qu'il n'y ait pas de croix rouge en retour...

    Notez bien que je parcours une table d'une BDD et les images peuvent ou pas y être pr un enregistrement.

    Donc, j'aimerais en réponse à ta question qu'il n'y ai pas cette croix rouge (que l'objet image ne soit pas créé quoi)

    AlternateText permet simplement de rajouter un commentaire dynamiquement au survol de l'image...
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  5. #5
    Membre régulier
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Points : 97
    Points
    97
    Par défaut
    Et bien je pense que tu es obligé de faire un test du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%# if Not DataBinder.Eval(Container.DataItem,"Numero") is DbNull %>
    <asp:image id="imgTest" runat="server" ImageUrl='<%# String.Format("/MonChemin/{0}.jpg", DataBinder.Eval(Container.DataItem,"Numero")) %>'></asp:image> 
    <%# end if %>
    Je ne suis pas sûre de la syntaxe... Ni du test d'ailleur. (cela pourrait être une chaine de caractère de longueur 0)

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    Bien vu, mais le Numero est une simple clé primaire. Même si j'ai un numéro, je peux ne pas avoir d'image associé à ce numéro. C'est bien l'absence d'image et non l'absence du Numero
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 92
    Points : 114
    Points
    114
    Par défaut
    Remplace ta donnée par une image transparente ...

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    c'est ce que je voulais faire à la base, mais si je fais c'est que je sais forcément qu'il n'y a pas de d'image. Donc si pas d'image, j'affiche pas.
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 29
    Points : 35
    Points
    35
    Par défaut
    y'a pas la commande du genre "if FileExist( Server.MapPath(String.Format("/MonChemin/{0}.jpg", DataBinder.Eval(Container.DataItem,"Numero"))= ) then .....
    voir dans l'objet File (System.IO je crois)

    hope this help,
    ++

  10. #10
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    tout repose sur ça ! c'est clair

    mais pr être franc, je ne suis pas arrivé à le coder

    En fait, c'est mon 1er site en aspX et le truc, en asp, c'est pas un souci.

    Mais le code que tu décrit devrait être coté Code Behind et non, dans la page aspx directement. Donc, je suis un peu paumé là
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  11. #11
    Membre régulier
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Points : 97
    Points
    97
    Par défaut
    Le pb en aspx, à mon sense, c'est la très mauvaise interaction entre codebehind et code html en ce qui concerne le DataBinding. ça m'énerve toujours de ne pas arrivé à gérer des cas particuliers comme le tiens facilement
    Enfin bref, pour ton pb :

    - tu peux gérer le cas particulier dans l'évènement ItemCreated de repeater

    - tu peux faire ce que t'ai proposé plus haute mais en remplaçant mon test par celui d'Idle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%# if if FileExist( Server.MapPath(String.Format("/MonChemin/{0}.jpg")) %> 
    <asp:image id="imgTest" runat="server" ImageUrl='<%# String.Format("/MonChemin/{0}.jpg", DataBinder.Eval(Container.DataItem,"Numero")) %>'></asp:image> 
    <%# end if %>
    Ceci ne se met pas dans le code behind bien sûr, mais dans le côté design.

    En fait en aspx tu peux développer de la même façon qu'en asp, mais il n'y a pas trop d'intérêt. Sauf pour ce genre de choses je pense.

  12. #12
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    Le pb en aspx, à mon sense, c'est la très mauvaise interaction entre codebehind et code html en ce qui concerne le DataBinding. ça m'énerve toujours de ne pas arrivé à gérer des cas particuliers comme le tiens facilement
    C'est trés facile à gérer si on se donne la peine d'utiliser une couche metier intermédiaire en ne bindant pas directement le Repeater sur un DataSet...

    On crée une collection (si y'a qu'une photo un simple array suffira).
    On rempli le tableau avec un dataReader en testant si la valeur du Path isdbNull puis si le le fichier existe ou pas avec File.Exists.
    Si le fichier existe On met "<img src=Path>" dans le tableau, s'il n'existe pas on met "&nbsp;" ou "<img src=NoPhoto>"
    Puis on déclare le Tableau comme source de donnée du repeater...

    Si on veut faire propre on crée un Objet Photo qui a une propriété ReadOnly Path et une collection de Photos comme Source du repeater.
    Il suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%#Container.DataItem.Path%>
    dans le html qui n'est pas fait pour avoir du code...

  13. #13
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    ok, je vais tester ceci sur le champ

    Merci pr la réponse
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  14. #14
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    erf... je crois que c'est un peu complexe à l'heure d'aujourd'hui pour mettre en place la solution de bifidus

    Je pensais qu'il y avait quelque chose de plus simple tout de même. Un controle ou autre
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  15. #15
    Membre régulier
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Points : 97
    Points
    97
    Par défaut
    Pourtant moi je la trouve bien sa solution à bifidus. Ce n'est pas si compliqué que ça et c'est propre puisque tu travailles dans le code behind. Le webdesigner n'a rien à faire en prog, c'est nickel. Et puis, le moyen de faire autrement?

  16. #16
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    oui, bien sur, mais je veux dire que je me sens pas encore capable de la développer. Mais une question sur :

    ne bindant pas directement le Repeater sur un DataSet...
    Donc au final, c'est ma collection que je vais binder ?
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  17. #17
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    1) Tu fais une Classe ImageClass qui a une propriété Path et une propriété Src qui va te renvoyer ce que tu veux suivant que le fichier existe ou pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public ImageClass
    Dim _Path as string
    Public Property Path as string
      Get
        return me._Path
      En Get
      Set(value as string)
        me._Path = value
      End Set
    End Property
    Public ReadOnly Property Src as string
      Get
        if file.exists(me._Path) then return "<img src=""" & me._Path & """ />" else return "&nbsp;"
      End Get
    End Property
    End Class
    2) Tu fais une Collection Typée d'images qui hérite de collection Base (ou n'importe quoi qui implémente IList)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Public Class ImagesCollection
      Inherits CollectionBase
     
      Public Default Shadows Property Item As ImageClass
          Get
            Return CType(Me._innerlist(index), ImageClass)
          End Get
        End Property
     
      Public Overrides Sub Add(Image as ImageClass)
         me._innerlist.add(Image)
      End Sub
     
      Public Sub Load(db as connection)
     
      db.Open()
      dim CMD as SQlCommand
      CMD = db.CreateCommand
      CMD.CommandText = "SELECT * FROM IMAGES"
      Dim RD As DataReader = CMD.ExecuteReader
      Do While RD.Read
        Dim Image as New ImageClass
          if not RD("Path") Is dbnull then Image.Path = RD("Path") 
          Me.Add(Image)
      Loop
      RD.Dispose()
      CMD.Dispose()
      db.Close()        
    End Sub
     
    End Class
    3) Tu bindes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Images as new ImagesCollection
    Images.Load(MaConnection)
    RepeaterImages.dataSource = Images
    RepeaterImages.DataBind
    4) Le Html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:Repeater id=RepeaterImage runat=server >
      <ItemTemplate>
        <tr><td><%#Container.DataItem.Src%></td></tr>	
      </ItemTemplate>
    </asp:Repeater>
    Ok ca fait beaucoup de Code, mais avec ca tu fais ce que tu veux sans mettre des kilometres de code kabalistique dans le html.
    Tu mets tes classes ImagesClass et ImagesCollections dans une feuille à Part voire dans un Projet à part et tu réutilise quand tu veux, au pire il suffit de rajouter un parametre sql si on doit charger la collection a partir de code sql différent.
    De plus il est trés simple d'hériter des Classes ImageClass et ImagesCollection pour developper des trucs plus compliqués alors qu'avec des trucs du genre
    <asp:image id="imgTest" runat="server" ImageUrl='<%# String.Format("/MonChemin/{0}.jpg", DataBinder.Eval(Container.DataItem,"Numero")) %>'></asp:image>
    Bonjour la réutilisabilité du Code !

  18. #18
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    mes images ne sont pas en base de données :

    CMD.CommandText = "SELECT * FROM IMAGES"
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  19. #19
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    Je voudrais afficher une image dynamiquement en fonction de ce que je récupère dans une BDD.
    mes images ne sont pas en base de données
    Faudrait savoir...
    De toute facon je voie pas ce que ca change au principe...

  20. #20
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    je me suis mal exprimé :/

    quand j'ai dit en fonction de ce je récupère dans la base de donnée, je veux dire par là que j'ai une table avec un ID et que l'image a le même nom que cet ID.

    Exemple : enregistrement avec l'ID 1, image : 1.jpg (qui n'est pas en base). C'est à dire qu'en asp, je savais que si l'image avait été uploadée, ca aurait été 1.jpg

    le truc banal if (file.exists....) je ne sais pas si ca t'éclaire, mais apparement, tu me dis que c'est pareil, que ca ne change pas le problème...
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Afficher une image dynamique dans une servlet
    Par reg01 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 03/04/2008, 11h28
  2. [vb.net]afficher une image
    Par Alex35 dans le forum VB.NET
    Réponses: 25
    Dernier message: 29/12/2006, 10h37
  3. [CR] afficher une image dynamiquement
    Par Jacques Bergeron dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 16/02/2006, 07h59
  4. [Crystal Report] Afficher une image dynamiquement
    Par ntondini dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 09/08/2005, 09h58
  5. [VB.NET] afficher une image stockée dans une table
    Par matonfire dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/03/2004, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo