我想将按钮的启用状态设置为值的否定。
所以给出了这段代码:
<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" />
如果Enabled
我如何制作LinkButton false
属性IsDefaultMessage == true
?
答案 0 :(得分:21)
使用Eval而不是Bind。绑定用于双向绑定,即您需要能够将数据保存回数据源的情况。
当您使用Bind时,编译的页面实际上会生成使用Eval设置值的代码,以及一些用于读取保存值的代码。因为Bind被生成的代码替换,所以你不能在Bind中使用任何额外的逻辑。
<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"/>
答案 1 :(得分:5)
如果你可以使用Eval,它只是Control
类的一种方法。它的特殊之处在于它需要位于数据绑定块<%# ... %>
的上下文中。除此之外,您基本上可以将块视为常规<%= %>
表达式块:
<%# !(bool)Eval("IsDefaultMessage") %>
如果你想仍然绑定它(Eval不是往返),那么你需要在数据绑定期间来回否定它。如果你可以重新控制控件,你可能不需要这样做。例如,如果一个复选框,而不是将“不是默认消息”标记给用户并且来回否定它,而不是标记“是默认消息”。举例说明,但你明白了。
答案 2 :(得分:1)
我从未使用过Bind,但我的理解是它与Databinder.Eval类似。无论哪种方式,两个方法都返回对象,因此您需要在评估之前将其强制转换为布尔值。
<%# !Convert.ToBoolean(Bind("IsDefaultMessage") %>
编辑:看起来这样做无法完成,并且在页面上使用SqlDataSource可以解决问题。 http://forums.asp.net/t/1009497.aspx
答案 3 :(得分:1)
如果有人正在寻找VB.Net的选项
<asp:CheckBox ID="DefaultChecked" Checked='<%# NOT (Eval("IsDefaultMessage")) %>' Enabled="false" runat="server" />
答案 4 :(得分:-1)
我记得(已经有一段时间了),<%#Bind(
中没有特别的魔力。它只是#Bind(
里面&lt;%....%&gt;。这意味着你想要:
<% ! #Bind("IsDefaultMessage") %>'
答案 5 :(得分:-1)
代码
Checked='<%# Eval("IsDefaultMessage").ToString().Length() > 4 %>'
如果IsDefaultMessage为false,将返回true 由于“False”.Length = 5和“True”.Length = 4