Displaying images in the DataGrid

Discussion in 'ASP .Net Datagrid Control' started by Henrik Skak Pedersen, Dec 27, 2006.

  1. 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.
     
    Henrik Skak Pedersen, Dec 27, 2006
    #1
    1. Advertising

  2. 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 (, 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.
     
    Walter Wang [MSFT], Dec 28, 2006
    #2
    1. Advertising

  3. 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;
    }
    }
    }


    "Walter Wang [MSFT]" <> wrote in message
    news:n%...
    > 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 (, 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.
    >
     
    Henrik Skak Pedersen, Dec 28, 2006
    #3
  4. 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 (, 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.
     
    Walter Wang [MSFT], Dec 29, 2006
    #4
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. David J. Berman
    Replies:
    0
    Views:
    1,423
    David J. Berman
    Jun 24, 2003
  2. Matt
    Replies:
    0
    Views:
    388
  3. Vinay

    Displaying Images ?

    Vinay, Oct 24, 2003, in forum: ASP .Net
    Replies:
    7
    Views:
    531
    vMike
    Oct 25, 2003
  4. =?Utf-8?B?SmltIE1hY2U=?=

    Displaying images from a database in an image control

    =?Utf-8?B?SmltIE1hY2U=?=, May 5, 2004, in forum: ASP .Net
    Replies:
    2
    Views:
    391
    Ashish M Bhonkiya
    May 5, 2004
  5. blackg
    Replies:
    0
    Views:
    389
    blackg
    Mar 18, 2005
Loading...

Share This Page