hej , Jag tror du får skapa en liten funktion som gör det. Typ: När du startar ett serverscript med <%# betyder det att du vill skriva ut nåt. jo men det var ju det hela fråga handlar om.. Hej. *HOST* FEL min gode man.datatemplates
någon som har koll på hur man gör villkor i en datatemplate???
im jag i min html har:
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.Artikel") %>
</ItemTemplate>
i detta vallet så kommer jag ju få värdet av "dataitem.artikel" direkt i den resulterande htmlkoden..
men säg att jag kanske vill använda datat i ett villkor typ:
<ItemTemplate>
<%#
if (DataBinder.Eval(Container, "DataItem.Artikel")=="123")
//response.write("<img src="xxx">);
else
//response.write("<img src="yyy">);
%>
</ItemTemplate>
hur skulle man göra det? (för detta funkar iaf inte :)
//RogerSv: datatemplates
<code>
<%# fixIt(DataBinder.Eval(Container, "DataItem.Artikel")) %>
public string fixIt(string s)
{
if (s == "Hej")
return "Goddag"
else
return "Hmm"
}
</code>Sv: datatemplates
Prova i stället med <% (alltså ta bort brädgården).
// JarleSv: datatemplates
använder du <% och inte <%# så har du inte tillgång till "DataBinder.Eval(Container, "DataItem.Artikel")" om man inte ska skriva det på någe annat sätt då....
jag vill ju ta det datat som är bundet och i min template vill jag ha ett villkor på det...
//RogerSv: datatemplates
Jag brukar göra såhär:
<code>
<%# MyFunction(Container.DataItem("MyField")) %>
</code>
Sen får du skapa funktionen i din klass.
<code>
Public Function MyFunction(myVal As Object) As String
Return CStr(myVal)
End Function
</code>
//freddaSv: datatemplates
Brädgården (#) är det sätt på vilket du talar om att du vill databinda något, en funktion eller ett fält i en tabell.
Likamed är att du vill skriva ut något. Samma sak som att skriva Resonse.Write.
//Mikael.NET