Avatar billede rbl Praktikant
20. oktober 2002 - 21:30 Der er 4 kommentarer og
1 løsning

If-sætning i datalist

Hvordan får man bygget en if-sætning ind i en datalist ?

Jeg danner en tabel på en webside ud fra en database ved hjælp af en datalist:

<asp:datalist id="datalist1" runat="server">
<itemtemplate>
<tr><td align="center">
  <%# DataBinder.Eval (Container.DataItem, "navn") %>
  </td>
  <td align="center">
  <%# DataBinder.Eval (Container.DataItem, "adresse") %></td></tr>
</itemtemplate>
</asp:datalist>

I databasen er der foruden attrubutterne "navn" og "adresse" også en boolean. Hvis denne boolean er sand, skal der vises et lille billede ud for navnet, og hvis den er falsk, skal der ikke vises noget billede. Hvordan gør jeg det ?
Avatar billede odegaard Nybegynder
20. oktober 2002 - 21:53 #1
Kan du ikke bruge DataBind eventet? Noget i stil med:

Sub datalist1_ItemDataBound(sender As Object, e As RepeaterItemEventArgs)
  'Vi ønsker kun at arbejde videre hvis der er tale om et item (og ikke fx. footer)
  If not CType(e.Item.ItemType, ListItemType) = ListItemType.Item and not CType(e.Item.ItemType, ListItemType) = ListItemType.AlternatingItem Then
      Exit Sub
  End If
  'Find billede i datalisten
  Dim img as Image= cType(e.Item.FindControl("lilleBillede"),Image)
  If e.Item.DataItem("minBoolean") Then
      img.ImageUrl = "linkTilBillede.jpg"
      img.Visible = True
  End
End Sub

[...]

<asp:datalist id="datalist1" runat="server" OnItemDataBound="datalist1_ItemDataBound">
<itemtemplate>
<tr><td align="center">
  <%# DataBinder.Eval (Container.DataItem, "navn") %>
  </td>
  <td align="center">
  <%# DataBinder.Eval (Container.DataItem, "adresse") %>
  <asp:Image id="lilleBillede" runat="server" visible="false" /></td></tr>
</itemtemplate>
</asp:datalist>
Avatar billede rbl Praktikant
20. oktober 2002 - 22:55 #2
Tak for hjælpen. jeg har lavet det lidt anderledes. Jeg har lagt den boolean ind som et skjult tekstfield og så bagefter løbet datalisten igennem og sat visible=true på img dér, hvor boolean'en var sand. Så er jeg fri for den lange if-sætning du har i starten (if not CType...).
Avatar billede odegaard Nybegynder
20. oktober 2002 - 23:56 #3
Hvis du ikke benytter alternatingItems (hvilket du ikke gør i dit eksempel), kan du fjerne halvdelen af den.
Du kan jo iøvrigt også blot sætte
img.Visible = e.Item.DataItem("minBoolean")
Er det altid det samme billede du ønsker at vise, kan den jo koges helt ned til:

Sub datalist1_ItemDataBound(sender As Object, e As RepeaterItemEventArgs)
  If CType(e.Item.ItemType, ListItemType) = ListItemType.Item Then
cType(e.Item.FindControl("lilleBillede"),Image).Visible=e.Item.DataItem("minBoolean")
  End If
End Sub
Avatar billede chanlo Nybegynder
16. juni 2003 - 14:19 #4
hvordan gør jeg det her:  e.Item.DataItem("minBoolean")
i c# ??
Avatar billede burningice Nybegynder
16. juni 2003 - 15:08 #5
e.Item.DataItem["minBoolean"];
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