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 :

Récupérer une image d'une BD, afficher dans une DataGridView


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut Récupérer une image d'une BD, afficher dans une DataGridView
    Bonjour à tous,

    Tout d'abord merci encore pour ce forum super utile.
    Dans mon appli je fais pas mal de requêtes et j'affiche le résultat dans une dataGridView.

    J'ai maintenant besoin de récupérer des images, et je ne sais par quel bout le prendre.
    Dois-je stocker les liens des images dans la base de données, et coté VB récupérer le lien et ensuite comment je l'envoie dans la dataGridView?

    je vous remercie pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonjour Rvaysse !

    Voici un article sur le sujet => http://sqlpro.developpez.com/cours/stockerimages/#L2

    Il commence à dater un peu mais est toujours très intéressant à lire
    Mon expérience personnelle avec cette problématique : Je stockais les liens de toutes les images qui se trouvaient dans un unique répertoire sur mon serveur.

    Tu peux donc également stocker tes images dans la base. Il faut juste que tu saches quelles priorités tu t'accorde pour ton projet :

    - Volume de données en base
    - maintenabilité ?
    - Nombre d'informations à stocker à propos de l'image

    Et peut être que maintenant, cela dépends également de ton SGBD. A voir

    Si tu utilises Access, par exemple, tu peux lire ce petit article => http://office.microsoft.com/fr-be/ac...005280225.aspx

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    Ok, je vais stocker les images dans un répertoire et ensuite stocker le chemin dans ma Base SQL Server 2005

    Comment puis je faire pour ensuite les faire afficher dans une DataGridView?

    je vous remercie

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonjour

    Pour les datagridView, tu as plusieurs solutions pour l'insertion d'images.

    Solution 1 :
    Si tu utilises un gridview dans une page en ASPX, lors de la restitution du navigateur (Clic droit sur ta page web, "afficher le code source"), tu verras qu'elle est traduite en code HTML pour qu'elle soit interprétée (des balises <tr> et <td> Donc si tu places du contenu HTML dans tes cellules, il sera lui aussi interprété par ton navigateur.

    Exemple de chaine que tu passerais en contenu de cellule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<img src='" + s_MonChemin + "' alt='" + s_MonAltText +"' />";
    Solution 2 :

    Comme celle ci en instanciant un objet de type Bitmap lors de l'ajout des enregistrements dans ta source de données.

    Voilà pour les infos

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    Le soucis c'est que moi c'est via une requete que j'alimente ma datagrid

    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
    32
    33
    34
    35
    36
      Protected Sub tableau_result_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles tableau_result.Load
            Dim req As String
            Dim con As String
            Dim req2 As String
     
            con = "Data Source=VAYSSE-PC\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=STAT_FOOT;"
     
            Dim sqlConnection1 As New SqlConnection(con)
            Dim cmd As New SqlCommand
     
            req = "SELECT EQUIPES.logo,Match.EQUIPE1,Match.EQUIPE2,cast(Match.but_1 as varchar(2))+ '-' +cast(Match.but_2 as varchar(2)) as score "
            req = req + " FROM Match, EQUIPES"
            req = req + " WHERE(Match.journee = 1)"
            req = req + " AND Match.EQUIPE1 = EQUIPES.NOM"
            req2 = "select nom_equipe as Equipe,Classement,Victoire, Nul, Defaite as Défaite,Points,Difference from classement_GEN order by CLASSEMENT asc"
     
            Dim dt As New DataTable
            Using query As New SqlCommand(req, sqlConnection1)
                Using adapt As New SqlDataAdapter(query)
                    adapt.Fill(dt)
                End Using
            End Using
     
            Dim dt2 As New DataTable
            Using query As New SqlCommand(req2, sqlConnection1)
                Using adapt As New SqlDataAdapter(query)
                    adapt.Fill(dt2)
                End Using
            End Using
     
            Result.DataSource = dt
            Result.DataBind()
     
            Classement.DataSource = dt2
            Classement.DataBind()
        End Sub
    et l'affichage j'obtiens le chemin qui s'affiche dans la 1ere colonne. Ce qui est logique, mais ej fais comment pour transformer mon chemin en image??

    Merci de votre aide

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonjour

    Ceci relève du langage SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    req = "SELECT CONCAT_WS('','<img src=\"',EQUIPES.logo,'" src=\"', EQUIPES.logo,'\"/>') as equipesLogo,Match.EQUIPE1,Match.EQUIPE2,cast(Match.but_1 as varchar(2))+ '-' +cast(Match.but_2 as varchar(2)) as score "
    req = req + " FROM Match, EQUIPES"
    req = req + " WHERE(Match.journee = 1)"
    req = req + " AND Match.EQUIPE1 = EQUIPES.NOM"
    req2 = "select nom_equipe as Equipe,Classement,Victoire, Nul, Defaite as Défaite,Points,Difference from classement_GEN order by CLASSEMENT asc"
    Ceci devrait faire l'affaire

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    La solution de ptilemare est tout à fait envisageable. Il existe aussi une autre option qui consiste à utiliser l'évènement OnRowDataBound de ta Grid.

    C'est un choix à faire, soit tu rajoutes la balise HTML dans ta requête SQL directement, à la source, soit tu le fais en C#, pendant le chargement de la Grid.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    sans faire le relou, j'ai une erreu au niveau de la concaténation...
    Comme j'utilise pour la 1ere fois cette fonction, d'où peut venir le soucis?

    Merci encore


    Ouvrez les guillemets après la chaîne de caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '<img src=\ FROM Match, EQUIPES WHERE(Match.journee = 1) AND Match.EQUIPE1 = EQUIPES.NOM'. Syntaxe incorrecte vers '<img src=\ FROM Match, EQUIPES WHERE(Match.journee = 1) AND Match.EQUIPE1 = EQUIPES.NOM'.

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    C'est un problème de caractères spéciaux . Il faut que tu jongles avec les ' et les " dans ta chaine de caractères.

    En sachant que le \ est présent pour l'échappement . Courage tu y es presque :p

    Je te conseille de ne pas exécuter directement ta requête mais de l'afficher au préalable pour constater si les guillemets sont à leur place .

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    je suis en SQL Server

    Sur la base j'obtiens ca avec cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT '<img src=' + '"' + EQUIPES.logo + '"/>',Match.EQUIPE1,Match.EQUIPE2,cast(Match.but_1 as varchar(2))
    + '-' +cast(Match.but_2 as varchar(2)) as score 
    FROM Match, EQUIPES
    WHERE (Match.journee = 1)
    AND Match.EQUIPE1 = EQUIPES.NOM
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <img src="C:\Users\vaysse\Documents\Visual Studio 2008\WebSites\WebSite1\images\Nancy.png"/>
    Or dans Visual Studiao, j'ai toujours la meme erreur avec les guillemets... en gros je galère avec la concaténation :

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    bon j'ai réussi à concaténer mais j'ai ca dans la 1ere colonne et non pas l'image...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="C:\Users\vaysse\Documents\Visual Studio 2008\WebSites\WebSite1\images\Nancy.png"/>

    Code
    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
     Dim req As String
            Dim con As String
            Dim req2 As String
            Dim logo As String
            Dim logo_fin As String
     
            con = "Data Source=VAYSSE-PC\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=STAT_FOOT;"
     
            Dim sqlConnection1 As New SqlConnection(con)
            Dim cmd As New SqlCommand
            logo = "<img src="""
            logo_fin = """/>"
     
            req = "SELECT '" + logo + "'+ EQUIPES.logo + '" + logo_fin + "',Match.EQUIPE1,Match.EQUIPE2,cast(Match.but_1 as varchar(2))+ '-' +cast(Match.but_2 as varchar(2)) as score "
            req = req + " FROM Match, EQUIPES"
            req = req + " WHERE(Match.journee = 1)"
            req = req + " AND Match.EQUIPE1 = EQUIPES.NOM"
            req2 = "select nom_equipe as Equipe,Classement,Victoire, Nul, Defaite as Défaite,Points,Difference from classement_GEN order by CLASSEMENT asc"

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Étrange ... Je fais la même chose en C# et tout se passe très bien .

    Essaie de placer toi même manuellement le chemin pour voir si ça change quelque chose à la place du résultat de ta requête.

    Personnellement, mes chemins sont du type "xxx/zzz/monfichier.jpg".

    Si tu fais un clic droit ==> Afficher le code source sur ta fenêtre, tu obtiens quoi là ou ta balise image est placée ?
    Rassure moi, tu es bien en web ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    zut, j'obtiens ca : Il ne prend pas en compte les "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td>&lt;img src=&quot;C:\Users\vaysse\Documents\Visual Studio 2008\WebSites\WebSite1\images\Nancy.png&quot;/&gt;</td>

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    enfin src = &quotC etc....

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    Lorsque j' harcode en HTML, dans la partie Design je vois bien l'image mais quand j'execute le projet, je ne vois pas l'image mais juste l'icone windows d'une image

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
          <div>
    	<table cellspacing="2" cellpadding="4" rules="all" border="3" id="Table1" style="color:Black;background-color:#CCCCCC;border-color:#999999;border-width:3px;border-style:Solid;height:211px;width:521px;margin-left: 159px; 
              margin-top: 6px">
    		<tr style="color:White;background-color:Black;font-weight:bold;">
    			<th scope="col">Column1</th><th scope="col">EQUIPE1</th><th scope="col">EQUIPE2</th><th scope="col">score</th>
    		</tr><tr style="background-color:White;">
    			<td><img src="C:\Users\vaysse\Documents\Visual Studio 2008\WebSites\WebSite1\images\Nancy.png"</td>
    			<td>AS Nancy Lorraine</td><td>Stade Brestois 29</td><td>1-2</td>...

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Evite le multi-post en éditant tes messages pour rajouter les infos

    Pour ce qui est de ton code, on avance
    Dans ton dernier message ou tu montres le code généré, il manque la fin de la balise <img>, à savoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <td><img src="C:\Users\vaysse\Documents\Visual Studio 2008\WebSites\WebSite1\images\Nancy.png"/></td>

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    Désolé...

    Arf, on va y arriver. Je ferme bien la balise mais rien n'y fait, tjrs l'icône Image de Windows.

    Voici la source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<td><img src="C:\Users\vaysse\Documents\Visual Studio 2008\WebSites\WebSite1\images\Nancy.png" /></td>

  18. #18
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonjour,

    Le seul soucis qu'il peut rester c'est un problème de chemin.
    Tu devrais stocker le chemin de l'image depuis ton site et non le chemin complet. De plus, la syntaxe correcte est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="/toto/titi/tata.jpg" alt="toto" />
    Fais quelques tests et dit moi ce qu'il se passe Par exemple modifie le chemin dans ta base pour Nancy et met-y :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "images/Nancy.jpg"

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    Hello, désolé mais je ne comprend pas trop
    "Tu devrais stocker le chemin de l'image depuis ton site et non le chemin complet."

    Sorry...

  20. #20
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonjour

    En fait, tu stockes le chemin depuis la racine de ta machine (C:\toto\titi..)
    L'idéal serait de stocker les chemins depuis la racine de ton site, à savoir


Discussions similaires

  1. [XL-2010] Afficher une image contenant des valeurs changeantes dans une autre cellule
    Par TeethBrush3r dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/08/2013, 18h36
  2. Afficher une image où l'on veut dans une fenêtre
    Par womannosky dans le forum OpenCV
    Réponses: 9
    Dernier message: 18/10/2012, 16h59
  3. Récupérer l'image choisi par l'utilisateur dans une autre interface
    Par sonia06 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 22/04/2008, 16h53
  4. Afficher une image JPG qui se trouve dans une bdd
    Par Harry dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/02/2004, 11h51

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