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 :

Charger données type IMAGE dans GRIDVIEW


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 48
    Points
    48
    Par défaut Charger données type IMAGE dans GRIDVIEW
    Bonsoir,

    j'ai une base de données qui sert à stocker une personne et son image ( un champ personimage de type IMAGE ) . et je voudrais bien recuperer les données et les afficher dans un GRIDVIEW , et afficher egalement le champ personimage à l'aide de <itemtemplate> ..


    voici le code que j'utilise , tout se passe bien , sauf que les images ne s'affichent 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
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <asp:DataGrid 
    
                                        ID="DG_Persons" 
    
                                             
    
                                        Runat="server">
    
                            <Columns>
    
                                        <asp:TemplateColumn HeaderText="Name">
    
                                                    <ItemTemplate>
    
                                                                <asp:Label ID="Label1" 
    
                                                                            Runat="server" 
    
                                                                            Text='<%# DataBinder.Eval(Container.DataItem, "PersonName") %>' />
    
                                                    </ItemTemplate>                               
    
                                        </asp:TemplateColumn>                 
    
     
    
                                        <asp:TemplateColumn HeaderText="Email">
    
                                                    <ItemTemplate>
    
                                                                <asp:Label ID="Label2" 
    
                                                                            Runat="server" 
    
                                                                            Text='<%# DataBinder.Eval(Container.DataItem, "PersonEmail") %>' />
    
                                                    </ItemTemplate>                               
    
                                        </asp:TemplateColumn>
    
                                        
    
                                        <asp:TemplateColumn HeaderText="Sex">
    
                                                    <ItemTemplate>
    
                                                                <asp:Label ID="Label3" 
    
                                                                            Runat="server" 
    
                                                                            Text='<%# DataBinder.Eval(Container.DataItem, "PersonSex") %>' />
    
                                                    </ItemTemplate>                               
    
                                        </asp:TemplateColumn>
    
                                        
    
                                        <asp:TemplateColumn HeaderText="Date of Birth">
    
                                                    <ItemTemplate>
    
                                                                <asp:Label ID="Label4" 
    
                                                                            Runat="server" 
    
                                                                            Text='<%# DataBinder.Eval(Container.DataItem, "PersonDOB") %>' />
    
                                                    </ItemTemplate>                               
    
                                        </asp:TemplateColumn>
    
                                        
    
                                        <asp:TemplateColumn HeaderText="Image">
    
                                                    <ItemTemplate>
    
                                                                <asp:Image ID="Image1" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "PersonImage") %>' 
    
                                                                            Width="150" Height="125" 
    
                                                                           
    
                                                                            Runat="server" />
    
     
    
                                                    </ItemTemplate>                               
    
                                        </asp:TemplateColumn>                                                                                                     
    
                            </Columns>
    
    
    
                            </asp:DataGrid>

    et dans la PAGE _ LOAD :


    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 myCommand As SqlCommand = New SqlCommand("select * from person", myConnection)
     
     
     
     
            Try
     
                myConnection.Open()
     
                DG_Persons.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
     
                DG_Persons.DataBind()
     
            Catch SQLexc As SqlException
     
                Response.Write("Error occured while Generating Data. Error is " & SQLexc.ToString())
     
            End Try
    est ce que quelqu'un pourrait m'aider à resoudre mon probleme s'il vous plait ??
    Merci de m'aider

  2. #2
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 48
    Points
    48
    Par défaut
    Bonjour ,

    Merci d'avoir repondu :-)

    en fait , je cherchait une solution il y a des jours , et finalement j'avance un peu aujourd'hui grâce aux liens que vous m'avez proposés ... Mais il me reste un petit probleme , c'est que je voudrais afficher tous les enregistrements dans Gridview .. et donc je suppose que je devrais enlever le parametre id ?? et donc , il m'affiche meme image dans tous les enregistrements


    voici le 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Public Class afficher : Implements IHttpHandler
     
        Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            context.Response.ContentType = "image/jpeg"
            Dim strm As Stream = ShowEmpImage()
            Dim buffer As Byte() = New Byte(4095) {}
            Dim byteSeq As Integer = strm.Read(buffer, 0, 4096)
     
            Do While byteSeq > 0
                context.Response.OutputStream.Write(buffer, 0, byteSeq)
                byteSeq = strm.Read(buffer, 0, 4096)
            Loop
     
        End Sub
     
        Public Function ShowEmpImage() As Stream
            Dim connection As New SqlConnection("data source=PC-de-Mouad;initial catalog=image;integrated security=sspi")
     
            Dim sql As String = "SELECT image FROM entreprise "
            Dim cmd As SqlCommand = New SqlCommand(sql, connection)
            cmd.CommandType = CommandType.Text
            connection.Open()
            Dim img As Object = cmd.ExecuteScalar()
            Try
                Return New MemoryStream(CType(img, Byte()))
            Catch
                Return Nothing
            Finally
                connection.Close()
            End Try
        End Function
     
        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
    End Class

    et le gridview devrait etre celui ci :

    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
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" 
                BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" 
                DataSourceID="SqlDataSource1" Width="600px">
                <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
                <Columns>
                    <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" 
                        ReadOnly="True" SortExpression="id" />
                    <asp:BoundField DataField="nom" HeaderText="nom" SortExpression="nom" />
                    <asp:TemplateField HeaderText="image" SortExpression="image">
                        
                        <ItemTemplate>
                            <asp:Image ID="Image1" runat="server" Height="141px" 
                                ImageUrl="~/afficher.ashx" Width="168px" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
                <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
            </asp:GridView>

    MERCI de me repondre ,

  4. #4
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    A :mon avis il faut que tu passes l'identifiant de ton objet à ton ashx avec un ?id=<%# DataBinder.Eval(Container.DataItem, "Identifiant") %> ou quelque chose comme ça.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 48
    Points
    48
    Par défaut
    alors j'ai crée une fonction qui ressemble à celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Function FormatURL(ByVal strArgument As Integer) As String
     
            Return ("~/afficher.ashx?id=" & strArgument)
     
        End Function

    et dans GRIDVIEW l 'imageURL va etre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "id")) %>'
    ya pas d'erreur mais il retourne le meme resultat .. il affiche toujours meme image sur tous les enregistrements ..

    Sinon , dans afficher.ashx , que dois je faire ??

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 48
    Points
    48
    Par défaut
    ouiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii , c'est booooooon , ça marche


    pour ceux qui sont interessés , fichier AFFICHER.ASHX :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <%@ WebHandler Language="VB" Class="afficher" %>
     
    Imports System
    Imports System.Configuration
    Imports System.Web
    Imports System.IO
    Imports System.Data
    Imports System.Data.SqlClient
     
    Public Class afficher : Implements IHttpHandler
     
        Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
            Dim empno As Int32
            If Not context.Request.QueryString("id") Is Nothing Then
                empno = Convert.ToInt32(context.Request.QueryString("id"))
            Else
                Throw New ArgumentException("No parameter specified")
            End If
     
            context.Response.ContentType = "image/jpeg"
            Dim strm As Stream = ShowEmpImage(empno)
            Dim buffer As Byte() = New Byte(4095) {}
            Dim byteSeq As Integer = strm.Read(buffer, 0, 4096)
     
            Do While byteSeq > 0
                context.Response.OutputStream.Write(buffer, 0, byteSeq)
                byteSeq = strm.Read(buffer, 0, 4096)
            Loop
            'context.Response.BinaryWrite(buffer);
        End Sub
     
        Public Function ShowEmpImage(ByVal empno As Integer) As Stream
            Dim connection As New SqlConnection("data source=PC-de-Mouad;initial catalog=image;integrated security=sspi")
     
            Dim sql As String = "SELECT image FROM entreprise WHERE id = @ID"
            Dim cmd As SqlCommand = New SqlCommand(sql, connection)
            cmd.CommandType = CommandType.Text
            cmd.Parameters.AddWithValue("@ID", empno)
            connection.Open()
     
            Dim img As Object = cmd.ExecuteScalar()
            Try
                Return New MemoryStream(CType(img, Byte()))
            Catch
                Return Nothing
            Finally
                connection.Close()
            End Try
        End Function
     
        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
     
     
     
    End Class




    DEFAULT.ASPX :


    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
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" 
                BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" 
                DataSourceID="SqlDataSource1" Width="600px">
                <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
                <Columns>
                    <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" 
                        ReadOnly="True" SortExpression="id" />
                    <asp:BoundField DataField="nom" HeaderText="nom" SortExpression="nom" />
                    
                    <asp:TemplateField HeaderText="IMAGE">
                    
                    <ItemTemplate>
                    
                    <asp:Image ID="image1" ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "id")) %>' 
     ImageAlign="Middle" runat="server" Width="170" Height="170" />
                    
                    </ItemTemplate>
                    
                    </asp:TemplateField>
                    
                    
                </Columns>
                <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
                <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
            </asp:GridView>

    definir la fonction formaturl dans default.ASPX.VB ::


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Function FormatURL(ByVal strArgument As Integer) As String
     
            Return ("~/afficher.ashx?id=" & strArgument)
     
        End Function


    et enfin , je voudrais te remercier pour le FEEDBACK


    Bonne Journée

  7. #7
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    De rien, bonne continuation
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 48
    Points
    48
    Par défaut
    Juste une toute petite derniere question

    est-ce que ce code est valide meme pour les fichiers .DOC ??

    par exemple si je veux stocker les CV dans une base de données , est ce que le champ sera de type Image ??

    MERCI

  9. #9
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Tu ne pourrais pas plutôt stocké tes documents .doc dans un répertoire et mettre en base de données uniquement le nom du document ? Ce serait certainement plus simple.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 48
    Points
    48
    Par défaut
    ouii ça devrait etre facile , mais je saurai pas comment faire cela !


    Est-ce possible de stocker le chemin du fichier dans un champ de type "Varchar" sans binaire , ni rien ?? et ensuite je veux recuperer ce chemin dans une colonne de type " hyperlink " se trouvant dans un Gridview , et une fois cliqué sur ce lien , on telecharge ce fichier ??

    existe t-il un tutoriel par hasard ? :p


    MERCI BEAUCOUP

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

Discussions similaires

  1. Données de type IMAGE dans Delphi et SQLSever
    Par typhon_186 dans le forum Bases de données
    Réponses: 10
    Dernier message: 12/11/2012, 11h24
  2. Données binaires (image) dans un flux XML
    Par SheikYerbouti dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 14/08/2007, 15h32
  3. Le type image dans une procedure stockée
    Par telynor dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/02/2007, 15h16
  4. Réponses: 2
    Dernier message: 03/11/2005, 20h26
  5. Champ de type "Image" dans SQL Server
    Par Edouard Kaiser dans le forum ASP
    Réponses: 5
    Dernier message: 09/09/2005, 07h43

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