Salut,
il y a 2 façons de faire,
la plus simple est de renvoyer des balises images déjà formatées depuis ta base de données,
par exemple si tu stocke les noms des images dans ta table et ces images sont positionnées sur le site web sous /images/,
ta requete renverra quelque chose comme ça :
select
tbl.ID as 'ID',
'<img src="/images/' + tbl.IMG + '" />' as 'IMG'
from ma_table tbl
where ....
La liaison Bind avec le GridView se fera comme si c'était un champ texte mais le navigateur affichera l'image. (Rajouter la directive de page ValidateRequest=false)
Le 2ème solution correspond au cas ou tes images sont stockées réellement en base de données (format binary), dans ce cas tu devras utiliser une page intermédiaire afin de renvoyer le flux d'octets dans la balise <img>
Comme si tu écrivais :
<img src="0xA0B000000FF00000FF0000AEBEC98E ... ect ..." />
// Dans la déclaration du GridView
// On mettra dans la colonnes Template la référence à l'ID
// de l'image à renvoyer en utilisant la page LoadImage.aspx
<asp:TemplateField HeaderText="Picture">
<ItemTemplate>
<img src="LoadImage.aspx?id=<%# Eval("ID").ToString() %>" width="50" height="50" />
</ItemTemplate>
</asp:TemplateField>
Lors du Bind, la page GetImage.aspx est appelée, elle devra renvoyer le Stream binaire de l'image
(On peut faire ça avec un Handdler ashx ou une simple page aspx)
//voici la page aspx :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LoadImage.aspx.cs" Inherits="LoadImage" %>
//et code behind :
using System.IO;
public partial class LoadImage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string sID = Request.QueryString["ID"];
// Recup en base selon ID
// ou en fichier (montré ici car plus simple)
string fullPath = "D:\site\images\img_" + sID + ".jpg";
FileStream fileStream = new FileStream(fullPath, FileMode.Open);
long fileSize = fileStream.Length;
byte[] buffer = new byte[fileSize];
fileStream.Read(buffer, 0, (int)fileSize);
fileStream.Close();
Response.BinaryWrite(buffer); // en base ou en fichier, faire un BinaryWrite
}
}
bye...