08. juli 2005 - 11:10Der 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'.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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 ?
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?
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
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
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
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å ?
nøh... jeg tror du fik introduceret den her: 08/07-2005 22:35:38 mvh
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.