Stel de waarde voor de 'zichtbare' eigenschap op de ASPX-pagina programmatisch in

Ik probeer de zichtbare eigenschap voor een label in te stellen op true of false, afhankelijk van een voorwaarde. Dit staat op de ASPX-pagina. Ik doe iets verkeerd en krijg foutmelding wanneer dit wordt uitgevoerd.

<td>
</td>

Fout die ik krijg, staat hieronder.

Compiler Error Message: CS0019: Operator '>' cannot be applied to operands of type 'object' and 'int'

Welke veranderingen moeten worden doorgevoerd?

Alles wat ik moet doen, stel de zichtbare eigenschap van het LABEL in op true wanneer 'IsAuthorized' groter is dan nul.

3

5 antwoord

Dat komt omdat je een syntaxisfout hebt, jij gekke konijntje.

Hier is het zo, het zou zo moeten zijn:

 <td></td>

You had an extra > and a 0 in there somewhere. Also, since you aren't doing anything between the and , you can close it with an end slash and skip a separate ending tag. Like this

OOK, soms probeert het instellen van een zichtbare eigenschap als die problemen veroorzaakt, het programma kan klagen dat de waarde geen Boolean was. Misschien wilt u ook een expliciete conversie zoals deze adverteren:

 Visible='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "IsAuthorized")) %>' 
10
toegevoegd
Dit is een mooi antwoord! Van onnozel konijntje, tot de gecorrigeerde coderegel, tot de uitleg van de correctie, en dan aan het einde "misschien wil je het ook". Dit is de perfecte formule voor een antwoord - 1) antwoord, 2) uitleggen, 3) verbeteren.
toegevoegd de auteur CindyH, de bron

Ervan uitgaande dat IsAuthorized een bittype is, gooi het dan naar een boolean:

 Visible='<%#Convert.ToBoolean(Eval("IsAuthorized"))%>'  
4
toegevoegd
Erg bedankt. Dit werkte uitstekend voor GridView met een XML-bron. De sleutel was natuurlijk om de call Bind() te vervangen door de aanroep Eval() .
toegevoegd de auteur Greg, de bron
En onthoud dat het niet NULL kan zijn. :)
toegevoegd de auteur marquito, de bron

Opmerking over een besturingselement aan de serverzijde kunt u dit doen:


Maar het werkt niet, tenzij u DataBind in de code erachter belt, zoals in Page_Load:

myId.DataBind():
2
toegevoegd

Ervan uitgaande dat IsAuthorized een geheel getal is, moet u dit gebruiken:

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

Eval retourneert een object , dus u moet het eerst naar een integer casten.

1
toegevoegd
Lijkt erop dat met de "> 0" opgenomen door het OP, dit het juiste antwoord is.
toegevoegd de auteur Mike Godin, de bron
<td></td>
0
toegevoegd