2011-03-15 6 views
0

해당 항목의 멋진 목록을 만드는 데 사용되는 ListView에 바인딩 된 개체 목록이 있습니다. 이 ListView에는 특정 문자열을 표시하는 특정 조건을 가진 1 열이 있습니다. 인라인 코드를 사용하여이 작업을 수행 할 수 있습니까? 아니면 코드 숨김을 사용하여 문제를 해결해야합니까? ASP.Net C# ListView 인라인 조건

는 내가하고 싶은 것이 있습니다 :

<% if (((Recipe)Container.DataItem).Status == RecipesModel.REJECTED) { %> 
Something goes here 
<% } %> 

을하지만이이 예외 반환

The name 'Container' does not exist in the current context 

편집을 :이 코드는 <ItemTemplate>

EDIT (2)의 내부에 사용된다 :이 문제에 다음 코드를 사용하고 있습니다.

<asp:PlaceHolder id="place_public" runat="server" Visible='<%# ((Recipe)Container.DataItem).Status == RecipesModel.VALIDATED %>'> 
Something here 
</asp:PlaceHolder> 
+0

그 컨텍스트에서 컨테이너가 존재하지 않는 것처럼 보입니다 ... – TJHeuvel

답변

0

<%# Container.DataItem ... %> 

같은 것을 시도 예 :

당신이하려고하는 것 같습니다
<%# ((String)Container.DataItem).ToUpper() == "test" ? "IsTest" : "NotTest" %> 
+0

그런데 조건을 테스트하는 데 사용할 수 없습니다. – Jens

+0

@Jens 내 예를 봅니다. –

+0

내 코드에서와 같이 RecipesModel 클래스의 상수와 비교하여 테스트 할 수 있습니까? – Jens

0

.aspx 페이지에서 컨테이너 클래스의 네임 스페이스를 가져올 수 있습니다. 예를 들어 : 당신이 상황을 데이터 바인딩의 Container.DataItem 외부에서 사용할 수 없습니다

<%@ Import Namespace="Container Class namespace" %> 
+0

내 자신의 컨테이너 클래스를 작성하지 않았습니다.이 컨테이너는 ListView의 컨테이너입니다. 내가 포함해야하는 네임 스페이스를 모른다. – Jens

0

그 범위 외의 Container 오브젝트를 사용합니다. 페이지에서 어떤 일이 일어나고 있는지 알 수 있도록 나머지 코드를 게시 할 수 있습니까?

+0

이 코드는 ItemTemplate 태그 내부에서 사용됩니다. <% # Eval ("status") %>와 같은 표현식이 작동하지만 이러한 값의 특정 조건을 테스트하고 싶습니다. – Jens