Установить значение для свойства visible на странице ASPX программно - PullRequest
4 голосов
/ 27 октября 2011

Я пытаюсь установить для свойства visible для метки значение true или false в зависимости от условия. Это на странице ASPX. Я делаю что-то не так и получаю ошибку, когда это выполняется.

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

Ошибка, которую я получаю, находится ниже.

Сообщение об ошибке компилятора: CS0019: оператор '>' не может быть применен к операнды типа 'объект' и 'int'

Какие изменения необходимо сделать?

Все, что мне нужно сделать, установить для свойства visible LABEL значение true, когда значение IsAuthorized больше нуля.

Ответы [ 5 ]

11 голосов
/ 27 октября 2011

Это потому, что у вас есть синтаксическая ошибка, глупый кролик.

Вот, пожалуйста, должно быть так:

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

У вас были дополнительные > и1007 * там где-то.Кроме того, поскольку вы ничего не делаете между <asp:Label и </asp:Label>, вы можете закрыть его косой чертой и пропустить отдельный конечный тег.Например, <asp:Label ... />

ТАКЖЕ, иногда пытаясь установить видимое свойство, которое вызывает проблемы, программа может жаловаться, что это значение не является логическим.Возможно, вы захотите также объявить явное преобразование, например:

 Visible='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "IsAuthorized")) %>' 
5 голосов
/ 27 октября 2011

Предполагая, что IsAuthorized является битовым типом, просто приведите его к логическому:

 Visible='<%#Convert.ToBoolean(Eval("IsAuthorized"))%>'  
2 голосов
/ 09 января 2013

Обратите внимание, на серверном элементе управления вы можете сделать это:

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

Но это не сработает, если вы не вызовете DataBind в коде, например в Page_Load:

myId.DataBind():
1 голос
/ 27 октября 2011

Предполагая, что IsAuthorized является целым числом, вы должны использовать это:

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

Eval возвращает object, поэтому вы должны сначала привести его к integer.

0 голосов
/ 27 октября 2011
<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED' Visible='<%# (int)(DataBinder.Eval(Container.DataItem, "IsAuthorized")) > 0 %>' ></asp:Label></td>
...