할 수 있습니 가치를 부정하는 특성에 사용하는"Eval"?
-
03-07-2019 - |
문제
고 싶 설정 버튼이 활성화되어 있는 상태의 부정 값입니다.
그래서 주어진 이 코드:
<asp:CheckBox ID="DefaultChecked"
Checked='<%# Bind("IsDefaultMessage") %>'
Enabled="false"
runat="server" />
<asp:LinkButton ID="MakeDefaultButton"
runat="server"
CommandName="MakeDefault'
CommandArgument='<%# Bind("ResidentialInfoID") %>'
Text="Make Default" />
어떻게 만들 수 있습니 LinkButton Enabled
특성 false
는 경우 IsDefaultMessage == true
?
해결책
바인딩 대신 eval을 사용하십시오. Bind는 양방향 바인딩을위한 것입니다. 즉, 데이터를 데이터 소스에 다시 저장할 수있는 경우.
BIND를 사용하면 컴파일 된 페이지가 실제로 값을 설정하여 값을 설정하는 코드와 저축 값을 읽는 코드를 실제로 생성했습니다. BIND는 생성 된 코드로 대체되므로 BAND와 함께 추가 로직을 사용할 수 없습니다.
<asp:CheckBox ID="DefaultChecked" Checked='<%# !(bool)Eval("IsDefaultMessage") %>' Enabled="false" runat="server" />
<asp:LinkButton ID="MakeDefaultButton" runat="server" CommandName="MakeDefault' CommandArgument='<%#Bind("ResidentialInfoID") %>' Text="Make Default"/>
다른 팁
는 경우 사용할 수 있습 Eval,그것은 단지 방법 Control
클래스입니다.그것만 특별한에서 필요로 하는 것에서의 컨텍스트 데이터 바인딩 블록 <%# ... %>
.다른 것보다,당신은 수 있습니다 기본적으로 치료 블록처럼 일정 <%= %>
식 block:
<%# !(bool)Eval("IsDefaultMessage") %>
는 경우 당신은 여전히 원하는 바인딩(Eval 지 않는 왕복),이해야 합니다 그것을 부정하는 동안 앞뒤로 데이터 바인딩.이 필요하지 않을 수도 있습 이지만,당신이 할 수있는 경우 다시 말씀어 있습니다.예를 들어,는 경우 체크 박스는 대신 그것은 라벨링는"기본"메시지는 사용자와 그것을 부정하고 앞으로,보다 lable 그것은"기본 메시지".인위적인 예를 들어,하지만 당신은 아이디어를 얻을 수 있습니다.
나는 Bind를 사용한 적이 없지만 내 이해는 Databinder.eval과 유사하다는 것입니다. 어느 쪽이든, 두 방법 모두 객체를 반환하므로 평가하기 전에 부울에 캐스팅해야합니다.
<%# !Convert.ToBoolean(Bind("IsDefaultMessage") %>
편집 :이 작업을 수행 할 수없는 것처럼 보이며 페이지에서 SQLDATASOURCE를 사용하면 문제가 해결됩니다. http://forums.asp.net/t/1009497.aspx.
누군가가 vb.net과 함께 옵션을 찾고있는 경우
<asp:CheckBox ID="DefaultChecked" Checked='<%# NOT (Eval("IsDefaultMessage")) %>' Enabled="false" runat="server" />
내가 기억하는 것처럼 (오랜만에) 특별한 마법이 없습니다. <%#Bind(
. 그냥이야 #Bind(
내부 <%....%>. 이는 원하는 것을 의미합니다.
<% ! #Bind("IsDefaultMessage") %>'
코드
Checked='<%# Eval("IsDefaultMessage").ToString().Length() > 4 %>'
"false".length = 5 및 "true".length = 4 이후에 isdefaultmessage가 false 인 경우 true를 반환합니다.