Avatar billede nightowl24 Nybegynder
03. marts 2005 - 20:02 Der er 16 kommentarer og
1 løsning

Udtræk billedsti fra database og bind den til en image control

Hej

Jeg er total nybegynder mht. ASP.NET og prøver dette:

<asp:image runat="server" src="<%# Container.DataItem("Billedsti")%>" />

hvilket medfører denne fejl: Serverkoden er forkert udformet.

Kan man ikke dette? Eller tænker jeg for meget classic asp?

/Nightowl
Avatar billede snepnet Nybegynder
04. marts 2005 - 12:02 #1
nej det skulle være fint nok at gøre det på den måde, men :
src='<%# DataBinder.Eval(Container.DataItem, "Billedsti") %>'
og så skal det så være en url der står i billedesti, og ikke en filreference.
mvh
Avatar billede jokkejensen Novice
04. marts 2005 - 21:26 #2
det burde i min forstand også virke med " tegnene.. du kan godt ikke skifte til design view i Visual studio, hvis du ikke som snepnet bruger ' tegnene...

men mangler der ikke et ID, er det ikke obligatorisk eller tager jeg fejl ? desuden vil jeg gerne se koden du databinder det billede med ? ligger det i en datalist eller repeater eller noget ?
Avatar billede nightowl24 Nybegynder
05. marts 2005 - 09:51 #3
Det ligger i en repeater...jeg fik det forresten til at virke hvis jeg blot lavede det som et alm. image tag istedet for en server control
Avatar billede jokkejensen Novice
05. marts 2005 - 11:41 #4
ja som normalt billede tag kan du, men ikke som asp:image, så skal der lidt mere kode til end bare at databinde til repeateren...
Avatar billede snepnet Nybegynder
05. marts 2005 - 13:26 #5
hej med jer :o)

det er fordi attributten ikke hedder src på et asp:Image.... den hedder ImageUrl.
den var jeg selv med til at bevare - sorry :o(

jokkejensen >> hvad mener du med at der skal mere kode til for at databinde et asp:image istedet for et <img ?

sådan her ville jeg normalt gøre med ét enkelt billede

<asp:Image id="someImage" runat="server" ImageUrl='<%# ImageUrl %>' ></asp:Image>

public string ImageUrl
{
    get{return <someurl>;}
}

og nightowl skal så bare binde til en sti i sit dataitem istedet - og proppe det ind i en repeater ell.

hold jeg muntre til vi skrives ved igen :o)

mvh
snep
Avatar billede jokkejensen Novice
05. marts 2005 - 13:42 #6
snepnet, du har ret, i hans eksempel, hvis han bare vil vise billederne er det okay bare at databinde til repeateren... men jeg ville da mene at for at kunne arbejde med egenskaberne på billederne skal de databindes på en anden måde..

Men det kan godt være han kan hente egenskaberne fra billederne med eventargs fra repeteren med findcontrol. Men jeg er stadig lidt grøn i det.. og ja selvfølgelig er det imageUrl og ikke source egenskaben han skal have fat i, den fangede jeg sku heller ikke :)
Avatar billede nightowl24 Nybegynder
05. marts 2005 - 15:09 #7
Jeg kan altså ikke få det til at virke, så her har I hele koden:

<%@ Page Language="vb" %>
<script runat="server">

    Sub Page_Load()
    Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\Webprojekter"& _
    "\filmnyt\db\filmnyt.mdb"
            Dim dbConnection As System.Data.IDbConnection = New System.Data.OleDb.OleDbConnection(connectionString)
   
            Dim queryString As String = "SELECT [Artikler].[Dato], [Artikler].[Overskrift], [Artikler].[ArtikelTekst], [Artikler].[Kilde], [Artikler].[Billedsti] FROM [Artikler] Order by Dato Desc"
            Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand
            dbCommand.CommandText = queryString
            dbCommand.Connection = dbConnection
   
            dbConnection.Open
            Dim dataReader As System.Data.IDataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
   
            MyRepeater.DataSource =  dataReader
            MyRepeater.DataBind()
    End Sub

</script>
<html>
<head>
    <style>TD {
    FONT-SIZE: 10px; FONT-FAMILY: verdana; TEXT-ALIGN: left
}
.dato {
    FONT-WEIGHT: bold; BACKGROUND-COLOR: #e3e3e3
}
.Overskrift {
    FONT-WEIGHT: bold; FONT-SIZE: 14px; PADDING-BOTTOM: 50px; FONT-FAMILY: verdana
}
BODY {
    TEXT-ALIGN: center
}
.Billede {background-color: #aaaaaa;}
</style>
</head>
<body>
    <p>
        <ASP:Repeater id="MyRepeater" runat="server">
            <HeaderTemplate>
                <div class="Overskrift">Filmnyt
                </div>
                <table align="center" border="1">
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td class="dato">
                        <%# DataBinder.Eval(Container.DataItem, "Dato", "{0:D}")%></td>
                    <td rowspan="3" class="billede">
                        <asp:image imageURL="<%# DataBinder.Eval(Container.DataItem, "Billedsti")%>" runat="server"></asp:image>
                            </td>
                            </tr>
                            <tr>
                                <td>
                                    <%# Container.DataItem("Overskrift")%></td>
                            </tr>
                            <tr>
                                <td style="width: 400px; padding-bottom: 20px">
                                    <%# Container.DataItem("ArtikelTekst")%>
                                </td>
                            </tr>
                            </p>
                            </ItemTemplate>
                            <FooterTemplate>
                                </table>
                            </FooterTemplate>
                            </ASP:Repeater>
        </p>
        </body>
        </html>
Avatar billede snepnet Nybegynder
06. marts 2005 - 10:45 #8
nu er det url'er der står i din billedesti ikke ?
og... hvad er fejlen ?
mvh
Avatar billede snepnet Nybegynder
06. marts 2005 - 10:53 #9
(hvis det du har stående i din billedsti er henvisninger til dit filsystem som f.eks. C:\billeder\blablah.jpg skal du bruge en noget anderledes fremgangsmåde - så kan du ikke lige skrive om det er tilfældet)
Avatar billede nightowl24 Nybegynder
06. marts 2005 - 14:59 #10
Det er gfx/billednavn.jpg der står i billedstien
Avatar billede snepnet Nybegynder
06. marts 2005 - 15:01 #11
oki - hvad er det for en fejl du får ?
mvh
Avatar billede nightowl24 Nybegynder
06. marts 2005 - 15:05 #12
Parsefejl, serverkoden er forkert udformet
Avatar billede snepnet Nybegynder
06. marts 2005 - 15:09 #13
så brug denne :
<asp:Image id="listImage" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Billedsti") %>' ></asp:Image>
mvh
Avatar billede nightowl24 Nybegynder
06. marts 2005 - 15:46 #14
Ok, men kan du komme med en forklaring på hvorfor det virker?
Avatar billede snepnet Nybegynder
06. marts 2005 - 15:56 #15
den er ikke så vild med at du bruger " istedet for '.
der er ikke noget ballade med det hvis der i det udtryk der står imellem ikke benyttes ", men hvis det er tilfældet flipper den.

med sådan en som denne :
<asp:Image runat="server" ImageUrl='<%# ImageUrl %>'></asp:Image>
er det ligemeget om du bruger ' eller " - så denne er også fin nok :
<asp:Image runat="server" ImageUrl="<%# ImageUrl %>"></asp:Image>

men.... når du har brug for at angive " imellem - som med denne :
ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Billedsti") %>'
(hvor billedsti er omgivet af ")
gå det kun godt hvis du bruger ' omkring udtrykket.

hmm... lød måske lidt sort ... håber du er med.

mvh
Avatar billede nightowl24 Nybegynder
06. marts 2005 - 16:00 #16
Jeg er helt med. Sidder og følger en bog og havde ikke lige set at de havde brugt ' istedet for ", tænkte nok at det var en eller anden lille ting jeg havde overset. Tak for hjælpen, du kan lige smide et svar.
Avatar billede snepnet Nybegynder
06. marts 2005 - 16:01 #17
et svar får du her :o)
mvh
snep
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