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 :

afichage photo de type "image"


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Par défaut
    Salut tout le monde,

    y a t il quelqu'un qui peut m'indiquer comment puis je afficher dans mon GridView une photo de type image en vb.net

    Merci,

    EDIT
    J'ai mis ceci sur ma page aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <asp:GridView ID="GridView1" CssClass="grid" Width="50%" AutoGenerateColumns="false" runat="server">
        <Columns>
                <asp:imagefield dataimageurlfield="Photo"
                alternatetext="Photo"
                nulldisplaytext="Photo inexisatnte"
                headertext="Photo"  
                readonly="true"/>
        </Columns>
    </asp:GridView>
    Mais ça donne une croix rouge.
    je pense que ceci marche si la photo est entant que chemin mais là j'ai un type image

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Pas trop compris la question. L'image est dans un folder du site ? Dans ce cas il suffit de spécifier le chemin.

    A défaut le plus simple est d'utiliser un HttpHanlder qui renvoie l'image. Il existe de nombreux tutos sur le sujet.

    En espérant t'avoir aidé.

  3. #3
    Membre expérimenté Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Par défaut
    En fait t'as deux solutions possibles vu ton cas (stockage de l'image en base de données)

    1- Tu crée un fichier temporaire par image récupérée de la base de données dans un dos (Gestion de cache s'en suit)

    2-Tu lis directement l'image dans la base de données avec Un MemoryStream et tu fait Image.FromStream(ton MemoryStream), par contre tu doit modifier "asp:imagefield" par "asp:TemplateField"

    En fin c'est ce que je pense

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Par défaut
    Merci pour vos réponses :-)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Par défaut
    Bonjour,

    j'ai utilisé le Handler comme suit:
    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
    37
    38
    39
    40
    41
    42
    <%@ WebHandler Language="VB" Class="ImgHandler" %>
     
    Imports System.Collections.Generic
     
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.IO
    Imports System.Data.Sql
    Imports System.Data.SqlClient
    Imports System.Configuration
    Imports System.Data
     
    Imports System
    Imports System.Web
     
    Public Class ImgHandler : Implements IHttpHandler
     
        Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            Dim connection As String = ConfigurationManager.ConnectionStrings("GestionConnectionString").ConnectionString
            Dim con As SqlConnection = New SqlConnection(Connection)
            con.Open()
            Dim sql As String = "Select photo from matable where id=2"
            Dim cmd As SqlCommand = New SqlCommand(sql, con)
     
            cmd.Prepare()
            Dim dr As SqlDataReader = cmd.ExecuteReader()
            dr.Read()
     
            context.Response.BinaryWrite(CType(dr("photo"), Byte()))
            dr.Close()
            con.Close()
        End Sub
     
     
        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
    End Class
    et dans mon GridView:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:TemplateField HeaderText="Image">
                    <ItemTemplate>
                       <img alt="Image" height="70px" src='<%# "ImgHandler.ashx" %>' width="70px" />
                    </ItemTemplate>
                </asp:TemplateField>
    ceci m'affiche la photo mais avec un id donné.
    je ne sais pas comment faire passer le paramètre id de la page aspx à mon handler ??

    Merci.

  6. #6
    Membre expérimenté Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Par défaut
    Regarde du coté de cet article

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Par défaut
    Bonjour,

    merci à tous pour votre aide :-)
    sinon ce qu'il fallait mettre pour pouvoir récupérer le id depuis ma page .aspx c'est de changer mon TemplateField comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:TemplateField HeaderText="Mes photos">
                    <ItemTemplate>
                       <img alt="Image" height="70px" src='<%# Eval("id", "ImgHandler.ashx?id={0}")%>' width="70px" />
                    </ItemTemplate>
                </asp:TemplateField>
    mon GridView sera donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <asp:GridView ID="GridView1" CssClass="grid" Width="50%" DataKeyNames="id" AutoGenerateColumns="False" runat="server">
        <Columns> 
     
                <asp:TemplateField HeaderText="Mes photos">
                    <ItemTemplate>
                       <img alt="Image" height="70px" src='<%# Eval("id", "ImgHandler.ashx?id={0}")%>' width="70px" />
                    </ItemTemplate>
                </asp:TemplateField>
     
        </Columns>
    </asp:GridView>
    et voilà le code final de mon Handler:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    <%@ WebHandler Language="VB" Class="ImgHandler" %>
     
    Imports System.Collections.Generic
     
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.IO
    Imports System.Data.Sql
    Imports System.Data.SqlClient
    Imports System.Configuration
    Imports System.Data
     
    Imports System
    Imports System.Web
     
    Public Class ImgHandler : Implements IHttpHandler
     
        Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            Dim connection As String = ConfigurationManager.ConnectionStrings("GestionConnectionString").ConnectionString
            Dim con As SqlConnection = New SqlConnection(Connection)
            con.Open()
            Dim sql As String = "Select photo from maTable where id=@idd"
            Dim cmd As SqlCommand = New SqlCommand(sql, con)
            Dim idimage As SqlParameter = New SqlParameter("@idd", SqlDbType.Int, 0)
            idimage.Value = context.Request.QueryString("id")
            cmd.Parameters.Add(idimage)
            cmd.Prepare()
            Dim dr As SqlDataReader = cmd.ExecuteReader()
            dr.Read()
     
            context.Response.BinaryWrite(CType(dr("photo"), Byte()))
            dr.Close()
            con.Close()
        End Sub
     
     
        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
    End Class
    oups enfin
    pacifiquement.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Par défaut
    bonjour,

    une question svp, quand il s'agit d'une ligne où le champ photo est null je reçois l'erreur suivante:

    Impossible d'effectuer un cast d'un objet de type 'System.DBNull' en type 'System.Byte[]'.
    au niveau de la ligne suivante de mon Handler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    context.Response.BinaryWrite(CType(dr("photo"), Byte()))
    Merci.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Par défaut
    oulaaaaaaaaaaaaaaa résolu :-D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:TemplateField HeaderText="Mes photos">
                    <ItemTemplate>
                       <img alt="Image" height="70px" src='<%# IIf(Typeof(Eval("photo")) is DBNull, "C:\icone.jpg", Eval("id", "ImgHandler.ashx?id={0}"))%>' width="70px" />
                    </ItemTemplate>
                </asp:TemplateField>
    voili voilouuuuu
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

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