---
title: "Templatefield"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/154903-templatefield"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "clarkbones"
published: "2006-12-15T15:16:29.000Z"
updated: "2007-01-21T20:57:01.000Z"
replies: 7
views: 728
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/154903-templatefield"
---

# Templatefield

## #1 — clarkbones, 2006-12-15T15:16Z

Hej!

Har en gridview som presenterar data. Det finns en stored procedure som returnerar datat. Den vill jag helst inte ändra på då den används på flera ställen. Proceduren listar utbildningskurser.

I en gridview kolumn skulle jag vilja att det står "Aktiv" om kursen i fältet "Status" är 1,  och "Inaktiv" om fältet är 0.

Nu skulle jag ville jag ha det så här:

```
 
<asp:TemplateField HeaderText="Status"><ItemTemplate>
<%
If DataBinder.Eval(Container.DataItem, "Status") = 1 Then Response.Write("Aktiv")
else
Response.Write("Inaktiv")
end if
%>
              
   </ItemTemplate>
   <ItemStyle Wrap="False" />
</asp:TemplateField>
```

Men jag får "Container not declared" fel?

Vad är bästa lösning?

Permalänk: https://www.webforum.nu/p/154903

## #2 — clarkbones, 2007-01-21T11:15Z

Jag undrar fortfarande varför. Ett enkelt exempel kan väl illustrera:
Detta funkar inte:
\<%
Response.Write(DataBinder.Eval(container.DataItem, "Kallelseskickad")) 
%\>

Felet är : "Name Container is not declared"

Detta funkar:
\<%#DataBinder.Eval(container.DataItem, "Kallelseskickad")
%\>

Dessa borde väl vara likvärdiga?

Permalänk: https://www.webforum.nu/p/1925284

## #3 — emission, 2007-01-21T12:03Z

Det magiska tecknet är #

Permalänk: https://www.webforum.nu/p/1925306

## #4 — clarkbones, 2007-01-21T12:28Z

Jag trodde "#" bara var en genväg till response.write?

Permalänk: https://www.webforum.nu/p/1925310

## #5 — emission, 2007-01-21T13:20Z

Nej, "=" är en genväg till Response.Write. "#" ger DataBind-context, och man ska inte använda Response.Write i denna context (så länge det rör sig om en vanlig sida så ska man ALDRIG använda Response.Write). Värdet evalueras, och om det är någon som ska skrivas ut så tar ASP.NET hand om det.

Permalänk: https://www.webforum.nu/p/1925326

## #6 — clarkbones, 2007-01-21T13:46Z

OK, tack. Kan man öht ha villkorslogik (if/else) i ett databindcontext? Man kanske inte bör ha det?

Permalänk: https://www.webforum.nu/p/1925330

## #7 — sorting, 2007-01-21T14:45Z

Nej det bör man inte ha. Det finns event som man kan använda sig utav för att lösa de bitarna. I ditt fall är det GridViewens RowDataBound-event du ska kika lite närmare på.

/Redigering, ändrade från ItemDataBound till RowDataBound.

Permalänk: https://www.webforum.nu/p/1925337

## #8 — inspiro, 2007-01-21T20:57Z

Man bör inte nej, men det går om man bara vill göra nåt snabbhack... :) Typ så här kan man göra:

```
<%# ((int)DataBinder.Eval(container.DataItem, "Kallelseskickad") == 1) ? gör si : gör så %>
```

Permalänk: https://www.webforum.nu/p/1925420

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/154903-templatefield
