Avatar billede websam Nybegynder
08. juli 2005 - 11:10 Der er 10 kommentarer og
1 løsning

asp:image og codebehind ?

Hejsa,

Jeg sidder og skal have et billed vist hvis der ligger et i databasen. Dette skal ske ved et tjek på om mit datafelt indeholder noget eller ej. Jeg havde forestillet mig noget i stil med at jeg i min dataliste lavede følgende :

Dim Thumb As String
If Trim(Thumb) <> "" Then
    CType(e.Item.FindControl("imgCat"), image).Text = Thumb
    e.Item.Visible = True
Else
    CType(e.Item.FindControl("imgCat"), image).Text = ""
    e.Item.Visible = False
End If

Men når jeg benytter mig "image" som object for min "FindControl" ja så er det jo ikke så godt da jeg får denne fejl :

'image' is ambiguous, imported from the namespaces or types 'System.Web.UI.WebControls, System.Drawing'.

Hvordan løser jeg lige dette ?

/Websam
Avatar billede softspot Forsker
08. juli 2005 - 12:53 #1
Du kan prefikse image med den type du rent faktisk ønsker at bruge (webkontrollen eller billedebehandlingsklassen). Eksempel:

CType(e.Item.FindControl("imgCat"), System.Web.UI.WebControls.image).Text = Thumb
Avatar billede softspot Forsker
08. juli 2005 - 14:42 #2
Jeg smider lige et svar hvis du skulle finde mit indlæg brugbart...
Avatar billede websam Nybegynder
08. juli 2005 - 19:47 #3
Hej softspot,

Det virker tildels jeg mangler dog lidt viden om hvordan jeg undlader at vise billedet hvis der ikke er noget i databasen. For ovenstående virker ikke helt efter hensigten !?!

Altså dette :

Dim Thumb As String
If Trim(Thumb) <> "" Then
    CType(e.Item.FindControl("imgCat"), image).Text = Thumb
    e.Item.Visible = True
Else
    CType(e.Item.FindControl("imgCat"), image).Text = ""
    e.Item.Visible = False
End If

Jeg ved ikke om det er e.Item.Visible der ikke i forbindelse med billeder ?

/Websam
Avatar billede softspot Forsker
08. juli 2005 - 21:17 #4
Hvad er det du vil skjule?

Det du skjuler nu er (tilsyneadende) den kontainer som billedet ligger i... er det hensigten, eller vil du skjule selve billedet? Hvis du vil skjule selve billedet skal du i princippet kalde FindControl("imgCat") igen for at finde billedet der skal skjules...

Kan du evt. beskrive hvad det er du oplever lige nu og hvad du forventer at opleve, samt evt. lidt mere kode der kan være med til at afklare det grundlag du arbejder på med den stump kode du allerede har vist?
Avatar billede websam Nybegynder
08. juli 2005 - 22:35 #5
Ok det jeg vil frem til er at jeg har et felt i tabellen i min database der inderholder en streng til en billede fil den kunne se således ud :

Files/News/Thumb/image.jpg

Når jeg så loader indholdet fra databasen skal jeg vise dette billede, men der er kun tale om det er nogle records hvor der indgår et billede. Når jeg så loader min dataliste skal jeg på en måde kun vise billedet hvis der er en streng i feltet ellers skal den blot undlade at vise et billede. Som det er nu forsøger den på at vise billeder på alle, men der hvor strengen til billedet er tomt ja der laver den, den lille firkantet box med et rødt kryds i der indikere at billedet ikke kunne vises og det erjo blot meningen at der ikke skal vises noget når der ikke er noget billede.

Og lidt mere kode der laver selve trækket fra mit dataview :

Private Sub BindSubs()
    Dim dv As DataView = New DataView
    Dim ReturnValue As Integer
    dv.Table = ProductBiz.CacheProduct().Tables("tbl_products")
    dv.RowFilter = "getLanguage = '" & Session("SetLanguage") & "' And CatId = " & Request.QueryString("Id") & " And Prod = 0"
    dv.Sort = "Id ASC"
    DataList1.DataSource = dv
    DataList1.DataBind()
End Sub

Og den komplette sub der binder til datalisten :

Protected Sub BindDl(ByVal sender As Object, ByVal e As DataListItemEventArgs)
    If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
        Dim Thumb As String
        Thumb = (CType(e.Item.DataItem, DataRowView))("Thumb1")
        '--- Checker om der er et billede til visning.
        If Trim(Thumb) <> " " Then
            CType(e.Item.FindControl("imgCat"), WebControls.Image).ImageUrl = Thumb
            e.Item.Visible = True
        Else
            CType(e.Item.FindControl("imgCat"), WebControls.Image).ImageUrl = ""
            e.Item.Visible = False
        End If
    End If
End Sub

I min html del kalder jeg billedet med :

<asp:Image id="imgCat" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Thumb1")%>' Width="50"></asp:Image>

Jeg ved ikke om det hjælper lidt på det men det må du jo lige bedømme :o)

/Websam
Avatar billede softspot Forsker
08. juli 2005 - 23:27 #6
Jeg gætter på at det er en repeater eller datagrid du bruger og at asp:Image er en del af en template for hvordan data skal formatteres (eller hvad?)... Det har jeg ikke selv benyttet mig synderligt meget af, så derfor vil jeg ty til min intuition og sige at du skal benytte flg. kode for at skjule billedet:

Protected Sub BindDl(ByVal sender As Object, ByVal e As DataListItemEventArgs)
    If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
        Dim Thumb As String
        Thumb = (CType(e.Item.DataItem, DataRowView))("Thumb1")
        '--- Checker om der er et billede til visning.
        If Trim(Thumb) <> " " Then
            CType(e.Item.FindControl("imgCat"), WebControls.Image).ImageUrl = Thumb
            CType(e.Item.FindControl("imgCat"), WebControls.Image).Visible = True
        Else
            CType(e.Item.FindControl("imgCat"), WebControls.Image).ImageUrl = ""
            CType(e.Item.FindControl("imgCat"), WebControls.Image) = False
        End If
    End If
End Sub
Avatar billede softspot Forsker
08. juli 2005 - 23:36 #7
Ups! Der mangler en Visible i den sidste forgrening. Det skulle vel være:

Protected Sub BindDl(ByVal sender As Object, ByVal e As DataListItemEventArgs)
    If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
        Dim Thumb As String
        Thumb = (CType(e.Item.DataItem, DataRowView))("Thumb1")
        '--- Checker om der er et billede til visning.
        If Trim(Thumb) <> " " Then
            CType(e.Item.FindControl("imgCat"), WebControls.Image).ImageUrl = Thumb
            CType(e.Item.FindControl("imgCat"), WebControls.Image).Visible = True
        Else
            CType(e.Item.FindControl("imgCat"), WebControls.Image).ImageUrl = ""
            CType(e.Item.FindControl("imgCat"), WebControls.Image).Visible = False
        End If
    End If
End Sub
Avatar billede websam Nybegynder
09. juli 2005 - 10:15 #8
Du har ret i at asp:image ligger i et template dog i en dataliste. Men dit forslag giver ingen forskel der bliver stadigt vist denne lille firkant med det røde kryds som angiver at billedet ikke kan vises når der ikke er nogen streng i databasen. Så der må være en anden måde at gøre dette på ?

/Websam
Avatar billede snepnet Nybegynder
09. juli 2005 - 12:23 #9
Hej med jer :o)

Skal det her
If Trim(Thumb) <> " " Then

ikke bare være
If Trim(Thumb) <> "" Then
eller
If Trim(Thumb) <> String.Empty Then

mvh
Avatar billede websam Nybegynder
09. juli 2005 - 18:23 #10
Det virker begge dele jeg ved ikke hvorfor jeg havde det mellemrum det plejer jeg ikke at have :o)

/Websam
Avatar billede snepnet Nybegynder
09. juli 2005 - 18:25 #11
nøh... jeg tror du fik introduceret den her:
08/07-2005 22:35:38
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