以编程方式在ASPX页面中设置'visible'属性的值

时间:2011-10-27 19:11:53

标签: asp.net visible aspxgridview

我正在尝试将标签的visible属性设置为true或false,具体取决于条件。这是在ASPX页面中。我做错了什么,并在执行时遇到错误。

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

我得到的错误低于。

  

编译器错误消息:CS0019:运算符'&gt;'无法应用   'object'和'int'类型的操作数

需要做哪些更改?

当'IsAuthorized'大于零时,我需要做的就是将LABEL的visible属性设置为true。

5 个答案:

答案 0 :(得分: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")) %>' 

答案 1 :(得分:4)

假设IsAuthorized是一个位类型,只需将其强制转换为布尔值:

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

答案 2 :(得分:2)

关于服务器端控件的注意事项,您可以这样做:

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

但是除非你在后面的代码中调用DataBind,否则它将无法工作,例如在Page_Load中:

myId.DataBind():

答案 3 :(得分:1)

假设IsAuthorized是一个整数,你应该使用它:

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

Eval会返回object,因此您必须先将其转换为integer

答案 4 :(得分:0)

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