2009-10-12 4 views

Répondre

0

Ce ne est pas possible d'utiliser # eval si la déclaration,

Vous avez quelques options pour résoudre que:

  • Vous pouvez mettre l'état du cas dans une ligne précédente puis vérifier cette variable dans le cas

exemple: dans le code derrière:

protected bool isDisabled; 

à ASPX:

<%# isDisabled=(bool)Eval("IsDisabled") %> 
<% if(isDisabled) %> 
  • Autre moyen est d'appeler un code derrière méthode qui retourne bool et vérifier dans le cas.
+0

Il semble que je ne peux pas déclarer une variable dans databing expression non plus. "Terme d'expression invalide 'bool'" – ni5ni6

+0

J'ai édité ma réponse pour résoudre ce problème. –

+0

bon point! juste une remarque: j'ai mis la variable isDisabled en tant que public et cela a fonctionné. Thats comment MSDN dit;) Merci beaucoup Amr! (si vous modifiez votre réponse, je l'accepterai) – ni5ni6

2

Vous pouvez utiliser des espaces réservés pour contenir les deux versions de votre balisage, puis utiliser la propriété Visible pour afficher la version pertinente. Quelque chose comme ça ... Notez l'utilisation de! avant l'appel à IsDisabled dans la deuxième propriété Visible.

<asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible='<%# IsDisabled((bool) Eval("IsDisabled")) %>'> 
      <span>Disabled</span> 
</asp:PlaceHolder> 
<asp:PlaceHolder ID="PlaceHolder2" runat="server" Visible='<%# !IsDisabled((bool) Eval("IsDisabled")) %>'> 
      <span>Active</span> 
</asp:PlaceHolder> 

Le code derrière méthode IsDisabled ressemble à ceci ...

public bool IsDisabled (bool isDisabled) 
{ 
    return isDisabled; 
} 
+0

bonne solution aussi –

Questions connexes