Displaying images in the DataGrid

  • Thread starter Henrik Skak Pedersen
  • Start date
H

Henrik Skak Pedersen

Hi,

I have a Datasource which contains strings fields and a binary field
containing a image. How do I display them in the DataGrid using data
binding? Normally in Windows Forms Applications is it very easy to bind to
image controls, but do I do it in ASP?

Thanks
Henrik.
 
W

Walter Wang [MSFT]

Hi Henrik,

To display a image in ASP.NET server control DataGrid, you need to set a
column to use template and use an image control inside it, then in
ItemDataBound event, retrieve the image's binary data and output it. Since
normally an image control's ImageUrl refers to a URL of a static image
file, it can also refer to a webform that outputs dynamic image binary data:

#Retrieving Images from SqlServer and displaying in a DataGrid - ASP .NET:
ASP Alliance
http://aspalliance.com/articleViewer.aspx?aId=141&pId=


Another approach without creating a webform to read the image data is to
create a custom image control and output the image data directly in its
code:

#Display Images in a DataGrid Directly from Memory
http://www.eggheadcafe.com/articles/20050911.asp


Hope this helps.

Sincerely,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications. If you are using Outlook Express, please make sure you clear the
check box "Tools/Options/Read: Get 300 headers at a time" to see your reply
promptly.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
H

Henrik Skak Pedersen

Hi Walter,

Thank you very much for your reply. I have decided to use a mix of the two
examples, which you can see below. Is this a good approach?

Thanks
Henrik.

On my page I have created a TemplateField:
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="Image1" Width="75" Height="100"
ImageUrl='<%# GetURL(DataBinder.Eval(Container.DataItem,
"Picture") as System.Byte[]) %>' Runat=server />
</ItemTemplate>
</asp:TemplateField>

Then I have created a GetURL method on my page:
protected string GetURL(System.Byte[] image)
{
if (image != null && image.Length > 0)
{
string guidString = Guid.NewGuid().ToString();
Session[guidString] = image;
return "GetImage.aspx?ImageId=" + guidString;
}
return String.Empty;
}

and then finally a new page called GetImage.aspx:
protected void Page_Load(object sender, EventArgs e)
{
string imageId = Request.QueryString.Get("ImageId");
System.Byte[] imageBytes = (System.Byte[])Session[imageId];
Session[imageId] = null;
using (MemoryStream ms = new MemoryStream(imageBytes))
{
using (Bitmap image = (Bitmap)System.Drawing.Bitmap.FromStream(ms))
{
image.Save(Response.OutputStream,
System.Drawing.Imaging.ImageFormat.Jpeg);
imageBytes = null;
}
}
}
 
W

Walter Wang [MSFT]

Hi Henrik,

Thanks for the update.

I can see you first put the image data into session then retrieve it in
another webpage. I think this approach should be fine. Just don't forget to
set Response.ContentType before writing to Response.OutputStream.


Regards,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top