프로그래밍 방식으로 ASPX 페이지의 'visible'속성 값 설정

2011-10-27 2 views
3

조건에 따라 레이블의 visible 속성을 true 또는 false로 설정하려고합니다. 이것은 ASPX 페이지에 있습니다. 이 일이 잘못되면 뭔가 잘못하고 오류가 발생합니다.프로그래밍 방식으로 ASPX 페이지의 'visible'속성 값 설정

<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED' 
    Visible='<%# DataBinder.Eval(Container.DataItem, "IsAuthorized") > 0%>'> 
</asp:Label></td> 

오류 아래에 표시됩니다.

컴파일러 오류 메시지 : CS0019 : 운영자 '>'유형 '객체'와 'INT'의 피연산자에 적용 할 수 없습니다 변경이 필요로하는 무엇

을 수행 할

?

모두 'IsAuthorized'가 0보다 큰 경우 LABEL의 visible 속성을 true로 설정해야합니다.

답변

10

구문 오류가 있기 때문에 그건 바보 같은 토끼 야.

여기 당신은 같이 있어야 있습니다

<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED' Visible='<%# DataBinder.Eval(Container.DataItem, "IsAuthorized") %>' /></td> 

당신은 어딘가에서 추가 >0했다. <asp:Label</asp:Label> 사이에 아무 것도 수행하지 않으므로 마지막 슬래시로 닫고 별도의 종료 태그를 건너 뛸 수 있습니다. 이 같은 <asp:Label ... />

때로는 문제를 일으키는 것처럼 보이는 속성을 설정하려고하면 프로그램이 값이 부울이 아니라고 불평 할 수 있습니다. 또한하려는 광고 이와 같은 명시 적 변환 :

Visible='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "IsAuthorized")) %>' 
+2

이것은 아름다운 답변입니다! 어리석은 토끼에서 수정 된 코드 줄, 수정 설명에 이르기까지 마지막으로 "할 수도 있습니다." 이것은 답을위한 완벽한 공식입니다 - 1) 답, 2) 설명, 3) 개선. – CindyH

0
<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED' Visible='<%# (int)(DataBinder.Eval(Container.DataItem, "IsAuthorized")) > 0 %>' ></asp:Label></td> 
1

IsAuthorized 가정 정수, 당신은이를 사용해야합니다

Visible='<%# ((int)DataBinder.Eval(Container.DataItem, "IsAuthorized")) > 0 %>' 

평가는 object 반환, 당신이 캐스팅 할 수 있도록 처음에는 integer입니다. 당신이 할 수있는 서버 측 컨트롤에

Visible='<%#Convert.ToBoolean(Eval("IsAuthorized"))%>' 
+0

OP에 포함 된 "> 0"으로, 이것이 정답입니다. –

4

은 부울에 캐스팅, 비트 유형 Page_Load와 같은 코드에서 DataBind를 호출하지 않는 한 :

myId.DataBind(): 
+0

그리고 NULL이 될 수 없다는 것을 기억하십시오. :) – marquito

+0

감사합니다. 이것은 XML 소스가있는 GridView에서 유용했습니다. '' 'Bind()'호출을'Eval()'호출로 호출한다. – Greg

2

참고 :

<someControl id="myId" runat="server" Visible='<%# this.SomeField > 5 %>'> 

을하지만 작동하지 않습니다 IsAuthorized한다고 가정

관련 문제