16. august 2003 - 22:59Der er
8 kommentarer og 1 løsning
kalde størrelse på image i en funktion og derefter vise billedet
Jeg er ved at lave en funktion hvor jeg henter et fotourl ud i en datagrid, derefter kalder jeg en funktion der skal kontrollere størrelse på fotoet og derefter tilpasse str. og vise foto. Problemet med nedenstående funktion er, at den kun viser følgende teks:
System.Web.UI.WebControls.Image
i stedet for billedet
funktionen ser ud som følgende:
public function fotokontrol(nummer)
dim foto as New WebControls.Image() dim filnavn as string dim filstreng as string
Dim currentImage as System.Drawing.Image = System.Drawing.Image.fromfile (filstreng) Dim imgHeight = currentImage.Height Dim imgWidth = currentImage.Width
if imgwidth < 100 then do imgheight = imgheight * 1.8 imgwidth = imgwidth * 1.8 loop while imgwidth < 100 end if
if imgheight > 100 then do imgheight = imgheight * 0.8 imgwidth = imgwidth * 0.8 loop while imgheight > 100 end if
imgheight = format(imgheight,"#,##0.") imgwidth = format(imgwidth,"#,##0.") hojde.text = imgheight bredde.text = imgwidth foto.width = new Unit (bredde.text) foto.height = new Unit (hojde.text)
return foto end function
jeg kalder funktionen på følgende måde:
<% response.write(fotokontrol("test")) %>
test skal senere bruges til at vælge fotonummer fra en database
hvad gør jeg forkert - er der nogen der har en løsning
lad mig gætte... du er tidligere asp-programmør ?! en ting er i hvert fald sikkert, og det er at din indgangsvinkel til opgaven er lidt forkert, i forhold til hvordan det gøres i asp.net.
du bør istedet lave en placeholder på din side, og i din placeholder tilføje din foto-control... lidt ala det her:
jeg har ikke lavet datagriden endnu, men jeg regner med at kalde funktionen ved hjælp af <% response.write(fotokontrol(container.dataitem("fotoid").tostring)) %> i et ItemTemplate
well, det er jo det du ikke kan, da du ikke bare kan skrive et object ud !!! det skal INDSÆTTES på siden (.Net er TypeSafe, så typerne skal passe sammen). Response.Write()-funktionen forventer af få en string som argument, og hvis den ikke gør, så sørger den selv for at konvertere, enten ved hjælp af casting, eller ved at kalde objectet's ToString()-funktion.
Det som jeg nok ville gøre, som også er det bedste, rent perfomance-mæssigt, er at Override din DataGrid's ItemDataBound-procedure, og ved hjælp af det indsætte dit Image-object.
ups - cyberfessor - kom til at give mig selv pointene - jeg oprettet lige et nyt indlæg hvor du skal svare på..
Synes godt om
Ny brugerNybegynder
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.