2015-01-22 2 views
1

이 항목에 대한 몇 가지 질문이 있지만 만족스러운 답변을 찾지 못했습니다.If Repeater 컨트롤 내부의 문

복잡한 콘텐츠를 표시해야하는 리피터가 있습니다. 서식 파일 내에 IF 문이 필요합니다. 리피터 안에 서버 컨트롤과 사용자 컨트롤을 등록해야하므로 코드 숨김으로 옮길 수 없습니다. 여기에 내가 필요한 것입니다 :

<asp:Repeater ID="rCom" runat="server" ClientIDMode="Static"> 
    <ItemTemplate> 
     <%# If CBool(Eval("IsFix")) Then%> 
      <%-- HTML content including server and user controls --%> 
     <%Else%> 
      <%-- HTML content including server and user controls --%> 
     <%End If%> 
    </ItemTemplate> 
</asp:Repeater> 

위의 컴파일러 오류가 throw됩니다. 이것을 달성하는 방법에 대한 아이디어? If 문에서 IsFix 필드를 평가해야합니다.

답변

2

나는 서버 측면 패널에 각각의 콘텐츠 세트를 넣을 것이다. ItemDataBound 이벤트에서 한 패널의 가시성을 true로 설정하고 다른 설정을 false로 설정합니다. 공개 설정이 서버 측으로 설정된 경우 프런트 엔드 콘텐츠가 렌더링되지 않습니다.

+0

그건 좋은 생각 같아. 그러나 두 패널 모두 데이터 바인딩 된 컨트롤 (두 패널 모두에서 공통)을 포함합니다. 보이는 패널의 데이터 바인딩 된 컨트롤이 바인딩되도록하려면 어떻게해야합니까? – navigator

+0

코드에서 항상 데이터 소스를 설정할 수 있습니다. grid.DataSource = ... – Jeremy

+0

자동으로 바인드하는 일부 사용자 정의 컨트롤이 있지만 노출 된 속성을 통해 해당 컨트롤을 제어 할 수 있다고 믿습니다. 감사! – navigator

2

if 문을 데 코드 덩어리에서 #을 제거 -

<asp:Repeater ID="rCom" runat="server" ClientIDMode="Static"> 
    <ItemTemplate> 
     <% CBool(Eval("IsFix")) Then%> 
      <%-- HTML content including server and user controls --%> 
     <%Else%> 
      <%-- HTML content including server and user controls --%> 
     <%End If%> 
    </ItemTemplate> 
</asp:Repeater> 

편집 :

내가 VB.NET에서 구문에 대해 확실하지 오전 (조건 연산자로 시도하십시오 확인) : -

<%# If(CBool(Eval("IsFix")), "Do Something", "Else do something" %> 
+0

에 정의되어 있습니다. 작동하지 않습니다. 리피터가 바인딩되면이 오류가 발생합니다. Eval(), XPath() 및 Bind()와 같은 데이터 바인딩 방법은 데이터 바인딩 된 컨트롤의 컨텍스트에서만 사용할 수 있습니다. – navigator

+0

간단한 HTML 콘텐츠는 다음과 같이 잘 작동합니다. <% # If (CBool ​​(Eval ("IsFix")), "

Is True
", "
Is False
") %>'. 하지만 서버 컨트롤이 필요합니다. – navigator

+0

@navigator - 내 업데이트를 확인하고 도움이되는지 알려주십시오. –

1

완벽하게 작동합니다!

<%# If(CBool(Eval("bitExtemporaneo")) = True, "<img src=""Imagenes/Extempo.png"" alt=""Extemporaneo""/>", "")%> 
0

어디에서 if 문이 있는지 코드에서 # 삭제하십시오.

그런 다음이 코드를 사용하십시오.

<% 
        object objIsFix = ((System.Data.DataTable)rep.DataSource).Rows[_nIndex]["IsFix"]; 
       if (bool(objIsFix)) {%> 
       <%-- HTML content including server and user controls --%> 
       <%}Else{%> 
       <%-- HTML content including server and user controls --%> 
       <%}%> 

'_nIndex'는 이미 시도 CS 파일