Ska du ha olika färger varannan rad så skulle jag använda alternatingitemtemplates istället. Man ska överhuvudtaget försöka undvika den typen av logik i sina kontroller och skriva det i koden istället, håll isär presentation och kod.
Använde denna kod till en gästbok. Där jag på .aspx sidan istället för <% container.dataitem %> la in placeholders. Om det fanns någon data i "gb_email" kolumnen i datatablen som var datakällan, så gjorde jag en hyperlink som jag la in i placeholdern. Ett sätt att lösa det på.
protected sub repMessages_itemDatabound(byval sender as object, byval e as repeateritemeventargs) handles repMessages.itemdatabound
if e.item.itemtype = listitemtype.item then
dim drw as DataRowView
drw = DirectCast(e.item.dataitem,DataRowView)
dim strEmail as string = drw("gb_email").tostring()
if strEmail.length > 0 then
dim hl as new hyperlink()
with hl
.ImageUrl = "images/email.gif"
.navigateUrl = "mailto:" & strEmail
.target = "_blank"
end with
CType(e.item.Findcontrol("phTest"), placeholder).controls.add(hl)
end if
end if
end sub
Om man t.ex. skall göra en gästbok.
och om personen inte har skrivit in sin email så skall det stå
Namn: Niclas
Annars
Namn <a href="mailto:nicke@ebid.se">Niclas</a>
Ett annat enkelt sätt att lösa det på är att anropa en funktion med nödvändiga inparametrar:
Eller så gör du det ännu snyggare och returnerar en hyperlink istället så slipper du ha en massa html-gojja i koden, men du förstår principen. Som det diskuterats lite om så är den här metoden inte det ultimata ur systemresurssynpunkt men det är smidigt att göra i många sammanhang...
257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e