我通过DataSource中的布尔类型列控制GridView中控件的可见性。 在标记中我使用嵌入式代码块:
<asp:Label ID="LabelTitle" runat="server"
Text = '<%# Bind("Title") %>' Visible='<%# Eval("SQL_Column") %>'/>
有没有办法反转这个表达式?如果SQL_Column为false,我希望显示Textbox TextBoxTitle,反之亦然。
像
这样的东西Visible='<%# Eval(!"SQL_Column") %>'
我不想从Code Behind那里做到。
马丁
答案 0 :(得分:2)
Eval返回对象;您不能将感叹号运算符应用于对象。
相反,您需要先转换为布尔值。
<asp:Label ID="LabelTitle" runat="server"
Text = '<%# Bind("Title") %>'
Visible='<%# !Convert.ToBoolean(Eval("SQL_Column")) %>'/>
答案 1 :(得分:1)
您需要在!
声明之外进行Eval()
反转。
!(bool)Eval("SQL_Column")
你拥有它的方式,!"..."
意味着你正在尝试对字符串本身应用not操作,这没有意义。在Eval()
之前,not操作意味着您试图反转评估的返回值。
请注意,您需要将对象的求值值显式地转换为布尔值,以便能够将其反转。