Image dans gridview

Résolu
garnier54 Messages postés 158 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 9 décembre 2018 - 4 déc. 2007 à 15:02
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010 - 4 janv. 2008 à 15:26
Bonjour

j'ai une table SQL qui contient une champs image, j ai fait ma requete dans un data reader qui rempli mon gridviev mais mon champs image apparait avce une X.
je voudrais dans mon gridview afficher l'image au meme titre que mes autre champs dans une colonne de mon gridview  . 

merci de votre aide

nicolas

14 réponses

cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010
20 déc. 2007 à 16:25
Image1.ImageUrl = Page.ResolveUrl("loadimage?Id=" + CSTR(id))

Myke
3
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 1
10 déc. 2007 à 12:09
Bonjour;

je vais essayer de décrire la procédure en détail.

Au début, t'as un SqlDataSource et un GridView.

1 - Je te conseille de mettre le chemin de l'image dans champ image de ta Table SQL (qui va correspondre à un type varchar) ;
2 - Ouvre le Smart Tag de GridView puis tu lui associes le SqlDataSource correspondant ;
3 - Toujours sur le Smart Tag, clique sur Edit Columns ;
4 - Dans la zone Selected fields, sélectionne chaque champ puis clique sur le lien : Convert this flied into a TemplateField (tous les champs) ;
5 - Valide tout ça à l'aide du bouton Ok ;
6 - Toujours sur le Smart Tag, clique sur Edit Templates ;
7 - Ouvre alors le Smart Tag de la fenêtre du Template de GridView, puis ouvre la DropDownList ;
8 - Choisis ta colonne, puis clique sur Item template (tu vas trouvé qu'à l'origine c'est un Label) ;
9 - Tu supprimes ce Label et avec un Glisser/Déplacer, tu ramènes un contrôle Image (redimensionne-le à ta guise : Height : 75px et Width : 70px comme exemple) ;
10 - Sur le Smart Tag du contrôle Image, clique sur DataBindings... ;
11 - Dans le champs : Bindable properties, sélectionne ImageUrl ;
12 - A droite, sélectionne le RadioButton : Field binding ;
13 - Sur la DropDownList, sélectionne ton champ Image (qui contient le chemin de l'image) ;
14 - Valide avec Ok ;
15 - Sur le Smart Tag du GridView, End Template Editing ;
16 - Exécute et t'auras ton résultat.

Ci-dessus, j'ai essayé d'exliquer pas à pas la procédure, tiens moi au courant du résultat et si t'as besoin d'aide, n'hésite pas.

CSharp.
1
garnier54 Messages postés 158 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 9 décembre 2018
11 déc. 2007 à 00:11
merci

mais je crois que je me suis mal explique le champs image ne comtient pas le chemin d'une image
mais c'est un chanps de type image, l'image ce trouve dans ma table sql

nicolas
0
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 1
11 déc. 2007 à 09:06
J'ai bien compris ton message, mais je t'ai conseillé de le faire ainsi... C'est une méthode généralisée où un client pourrait poster même des trucs avec des images et le mieux c'est que la table SQL contient le chemin de l'image.

Je vais voir une solution à ta proposition dont le sens où tu pourras mettre l'image directement dans ta table SQL.

à bientôt.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
garnier54 Messages postés 158 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 9 décembre 2018
13 déc. 2007 à 15:08
merci

mais ca ne marche pas dans mon cas, car j'ai deja un fichier constitué (sans un champs qui contient le chemin) et je desire conserver cette methode plus pratique pour mon developpement. les champs images qui sont dans ma table sont

id_foto         type image     mes fotos
id_type         type varchar  type de l'image   (image/pjpg)

merci de ton aide
nicolas
0
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010
13 déc. 2007 à 19:16
Avec cette exemple je crois que tu peux comprendre copie ce code dans un fichier deafult.aspx




Partial
Class _Default



Inherits
System.Web.UI.Page




Private
_MyPicture

As
Drawing.Bitmap




Private



Function
GetBytesFromBitmap(

ByVal
Img

As
Drawing.Bitmap)

As



Byte
()




Dim
ms

As



New
IO.MemoryStream()




Try



Img.Save(ms, Img.RawFormat)







Return
ms.GetBuffer


Catch
ex

As
Exception


Throw



New
Exception(ex.Message)


Finally

ms.Close()


ms.Dispose()







End



Try






End



Function






Protected



Sub
Button1_Click(

ByVal
sender

As



Object
,

ByVal
e

As
System.EventArgs)

Handles
Button1.Click


REM - Recuperation du chemin du fichier






Dim
Path

As



String
=

Me
.FileUpload1.PostedFile.FileName


REM - Construction du Bitmap






If



String
.IsNullOrEmpty(Path) =

False



Then






Try






Me
._MyPicture =

New
Drawing.Bitmap(Path)


Catch
ex

As
Exception


Throw



New
ApplicationException(

"Photo non valide"
)


End



Try







End



If 








REM ------CONVERSION EN BYTES POUR STOCKER DANS BD SQL






Dim
MyBytes()

As



Byte
=

Me
.GetBytesFromBitmap(

Me
._MyPicture) 


REM -- A CE POINT C'EST COMME SI TU AVAIS AVAIT UN CHAMP BLOB EN MEMOIRE






REM -----CONVERSION EN IMAGE A PATIR DES BYTES

Response.BinaryWrite(MyBytes)







End



SubEnd





Class

<%

@
Page
Language="VB"
AutoEventWireup="false"
CodeFile="Default.aspx.vb"
Inherits="_Default" %>
<!

DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><

htmlxmlns="http://www.w3.org/1999/xhtml"><

headrunat="server">

<title>Untitled Page
</title></

head><

body>

<form
id="form1"
runat="server">

<div>

<asp:FileUpload
ID="FileUpload1"
runat="server"
/>

<br
/>

<br
/>

<br
/>

<br
/>

<br
/>

<br
/>

<asp:Button
ID="Button1"
runat="server"
Text="Charger la photo"
/></div>

</form></

body></

html>
0
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010
13 déc. 2007 à 19:16
Avec cette exemple je crois que tu peux comprendre copie ce code dans un fichier deafult.aspx




Partial
Class _Default



Inherits
System.Web.UI.Page




Private
_MyPicture

As
Drawing.Bitmap




Private



Function
GetBytesFromBitmap(

ByVal
Img

As
Drawing.Bitmap)

As



Byte
()




Dim
ms

As



New
IO.MemoryStream()




Try



Img.Save(ms, Img.RawFormat)







Return
ms.GetBuffer


Catch
ex

As
Exception


Throw



New
Exception(ex.Message)


Finally

ms.Close()


ms.Dispose()







End



Try






End



Function






Protected



Sub
Button1_Click(

ByVal
sender

As



Object
,

ByVal
e

As
System.EventArgs)

Handles
Button1.Click


REM - Recuperation du chemin du fichier






Dim
Path

As



String
=

Me
.FileUpload1.PostedFile.FileName


REM - Construction du Bitmap






If



String
.IsNullOrEmpty(Path) =

False



Then






Try






Me
._MyPicture =

New
Drawing.Bitmap(Path)


Catch
ex

As
Exception


Throw



New
ApplicationException(

"Photo non valide"
)


End



Try







End



If 








REM ------CONVERSION EN BYTES POUR STOCKER DANS BD SQL






Dim
MyBytes()

As



Byte
=

Me
.GetBytesFromBitmap(

Me
._MyPicture) 


REM -- A CE POINT C'EST COMME SI TU AVAIS AVAIT UN CHAMP BLOB EN MEMOIRE






REM -----CONVERSION EN IMAGE A PATIR DES BYTES

Response.BinaryWrite(MyBytes)







End



SubEnd





Class

<%

@
Page
Language="VB"
AutoEventWireup="false"
CodeFile="Default.aspx.vb"
Inherits="_Default" %>
<!

DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><

htmlxmlns="http://www.w3.org/1999/xhtml"><

headrunat="server">

<title>Untitled Page
</title></

head><

body>

<form
id="form1"
runat="server">

<div>

<asp:FileUpload
ID="FileUpload1"
runat="server"
/>

<br
/>

<br
/>

<br
/>

<br
/>

<br
/>

<br
/>

<asp:Button
ID="Button1"
runat="server"
Text="Charger la photo"
/></div>

</form></

body></

html>
0
garnier54 Messages postés 158 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 9 décembre 2018
17 déc. 2007 à 15:17
merci

je suis desole mais dans ton exemple l'image n'apparait pas dans un gridview

j 'ai ma table

id                  type integer
mon              type varchar
id_foto         type image     sa foto
id_type         type varchar  type de l'image   (image/pjpg)

et je voudrais dans mon gridview

id   nom   et       ici la foto de la personne

merci
nicolas
0
garnier54 Messages postés 158 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 9 décembre 2018
19 déc. 2007 à 09:59
bonjour et merci

ton exenple marche bien et ma permis de comprendre le fonctionnement, y a t il une moyen pour envioyer l image binary Response.BinaryWrite(MyBytes) nom pas a l'ecran mais dans un controle image

nicolas
0
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010
19 déc. 2007 à 15:29
Tu te créée une page aspx : GetMyPicture.aspx

Protected

Sub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load

If
My.Request.QueryString(
"Id")
IsNot

Nothing

Then

Dim Myid as integer = My.Request.QueryString("Id"
)

Dim MyBytes()
As
Byte =  On recherche dans la bd le champ blob = select photo from MYBD where id = MyId
Response.BinaryWrite(MyBytes)

End
If
End
Sub

-------------------------------------------------------------------------------------

1) Lors du DataBinding de ton GridView tu recupere le controle Image
2) Image1.ImageUrl = Page.ResolveUrl(
"GetMyPicture?Id=" + Id_De_La_Photo)Donne moi des nouvelles !

Myke
0
garnier54 Messages postés 158 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 9 décembre 2018
20 déc. 2007 à 16:08
merci j'y suis presque

sur la ligne

Image1.ImageUrl = Page.ResolveUrl("loadimage?Id=" + id)

j 'ai l'erreur

La conversion de la chaîne "loadimage?Id=" en type 'Double' n'est pas valide.

loadimage.aspx retourne bien une image

merci
0
garnier54 Messages postés 158 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 9 décembre 2018
20 déc. 2007 à 20:47
merci de ton aide ca marche !!


je peux enfin lire mes images et en ajouter en reseau ça marche nickel
j 'ai simplement ajouté . aspx au nom de la page aspx

Image1.ImageUrl = Page.ResolveUrl("loadimage.aspx?Id=" + CSTR(id))

nicolas
0
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010
20 déc. 2007 à 20:55
Tu as raison en relisantle code que je t'avais envoye j'ai remarquer que le ASPX n'était pas présent. Désolé...Mais au moins c'est résolu

Myke
0
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010
4 janv. 2008 à 15:26
0
Rejoignez-nous