Avatar billede ha9953 Nybegynder
16. august 2003 - 22:59 Der 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
               
        filnavn = websti & "eng.gif"
        filstreng = serversti & "eng.gif"
        foto.ImageUrl= filnavn

        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
Avatar billede burningice Nybegynder
16. august 2003 - 23:53 #1
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:

dinPlaceHolder.Controls.Add(fotokontrol("test"))
Avatar billede ha9953 Nybegynder
17. august 2003 - 11:00 #2
også hvis funktionen skal kaldes i et datagrid?
Avatar billede burningice Nybegynder
17. august 2003 - 11:14 #3
ha9953>>uhm... lad mig lige se koden til dit datagrid. Så kan jeg bedre komme med et bud på hvordan det bedst gøres.
Avatar billede ha9953 Nybegynder
17. august 2003 - 11:22 #4
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
Avatar billede burningice Nybegynder
17. august 2003 - 11:35 #5
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.
Avatar billede ha9953 Nybegynder
17. august 2003 - 11:37 #6
ok - lyder fino - men øøøh - hvordan gør jeg det ;-)
Avatar billede burningice Nybegynder
17. august 2003 - 11:50 #7
Ja.. hvis du vil override, så skal dit Datagrid subclass'es. En nemmere måde, ville måske derfor være at lytte på ItemDataBound-eventen:

<asp:DataGrid id="mitDG", runat="server" OnItemDataBound="Item_Bound" />

  void Item_Bound(Object sender, DataGridItemEventArgs e)
  {
      e.Item.Controls.Clear();
      e.Item.Controls.Add(FotoKontrol(((DataRowView)e.Item.DataItem).Row.Item["FotoId"].ToString());
  }


Så skal der selvfølgelig lidt tjek på, så at Image-objectet kun bliver indsat de rigtige steder, og ikke hver gang
Avatar billede ha9953 Nybegynder
17. august 2003 - 11:53 #8
ok - jeg forsøger med det - tak for hjælpen
Avatar billede ha9953 Nybegynder
17. august 2003 - 11:54 #9
ups - cyberfessor - kom til at give mig selv pointene - jeg oprettet lige et nyt indlæg hvor du skal svare på..
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