Avatar billede ktolbod Nybegynder
10. maj 2006 - 15:07 Der er 11 kommentarer og
1 løsning

Billeder i formview fra codebehind?

Hej,
Jeg henter x antal billeder op af min database med en repeater og i ItemDataBound får jeg fat i billedets navn. Nu skal jeg så skrive disse billeder ud i et formview, men hvordan gør jeg det smartest?
Avatar billede snepnet Nybegynder
10. maj 2006 - 15:13 #1
Hvis du skal vise billederne - skal du sørge for at du har en url du kan henvise til, så du skal lave en aspx-fil (en ashx fil er at foretrække) - der alene returnerer billedet.
Ser lige om jeg kan finde et link.
Mvh
Avatar billede snepnet Nybegynder
10. maj 2006 - 15:21 #2
En ashx fil kunne du lave med noget i denne stil:

// en imageserver (ImageServer.ashx)
<%@ WebHandler Language="C#" Class="ImageServer" %>

using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

public class ImageServer : IHttpHandler

    public void ProcessRequest (HttpContext context)
    {
        string imageFolder = @"C:\testfiles";
        string imageFileName = context.Request.QueryString["imageFileName"];
        Bitmap bmp = new Bitmap(Path.Combine(imageFolder, imageFileName));
        context.Response.ContentType = "image/jpeg";
        bmp.Save(context.Response.OutputStream, ImageFormat.Jpeg);
        bmp.Dispose();
    }

    public bool IsReusable
    {
        get
        {
            return true;
        }
    }
}

Du skal så self. ikke hente filen i filsystemet, men suge det fra databasen som rå bytes, som du så kan lægge i din outputstream - så du skal lave koden lidt om til noget i stil med:

byte[] image = GetImageFromDatabase(...);
context.Response.BinaryWrite(image);

Hvor du så må lave metoden GetImageFromDatabase(...) selv.

Mvh
Avatar billede ktolbod Nybegynder
10. maj 2006 - 15:37 #3
Hej snepnet,
Men jeg får jo ikke billederne fra en querystring.
Jeg hiver billed-filnavnet op af databsen via repeateren og derfra skal jeg jo bare smide billederne ud på siden. Billederne ligger på filsystemet.
Kan man ikke generere et asp:imgage on the fly og smide det ind i et panel eller lignende?
Avatar billede snepnet Nybegynder
10. maj 2006 - 15:46 #4
Ahh... ja det gør det jo lidt enklere :o)
Så skal du bare sørge for at billedet kan hentes via en url, og så sætte et Image ind, og sikre at ImageUrl-property'en er sat til den respektive url.
Mvh
Avatar billede ktolbod Nybegynder
10. maj 2006 - 15:49 #5
yas, men hvordan er det nu lige jeg genererer et asp:image on the fly og hvordan kan man smide et sådant ind i et panet?
Avatar billede snepnet Nybegynder
10. maj 2006 - 15:54 #6
Ahh...
Image img = new Image();
img.ImageUrl = <dinurl>;
ditPanel.Controls.Add(img);
Mvh
Avatar billede snepnet Nybegynder
10. maj 2006 - 15:54 #7
(gik ud fra at panet betød panelet)
mvh
Avatar billede ktolbod Nybegynder
10. maj 2006 - 16:09 #8
(yes)
Jeg arbejder med vb.net og har oversat din kode til følgende :)
Dim img As Image =  New Image()
img.ImageUrl = "/asdf/"
ditPanel.Controls.Add(img)

Men den acceptere ikke Image(), får blå streg under og følgende error:
'New' cannot be used on a class that is declared 'MustInherit'

Hvad fanden betyder det?
Avatar billede snepnet Nybegynder
10. maj 2006 - 16:29 #9
Prøv denne her:
System.Web.UI.WebControls.Image
Istedet for blot Image.
Mvh
Avatar billede snepnet Nybegynder
10. maj 2006 - 16:29 #10
Altså
Dim img As System.Web.UI.WebControls.Image =  New System.Web.UI.WebControls.Image()
Mvh
Avatar billede ktolbod Nybegynder
10. maj 2006 - 16:55 #11
Kanon. Du har givet mig en åbenbaring. Smid et svar :)
Avatar billede snepnet Nybegynder
10. maj 2006 - 16:59 #12
Kommer her :o)
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester