2009-03-24 8 views
1

Comment puis-je obtenir quelque chose comme ça pour travailler dans asp.netconditionnelle rendent dans asp.net

<asp:Panel Visible="<%(SType==switch_type.Trunk).ToString()%>" runat="server">Tickle</asp:Panel> 

Où switch_type est un ENUM des valeurs et SType est un/setter dans le behind.

Je possède ce travail, mais je me sens qu'il est laid

<% if (SType == switch_type.Trunk) 
    { %> 
     ... 

Je sais que je peux régler le panneau comme visible/invisible dans le behind, mais il va y avoir beaucoup de panneaux et semble plus facile de définir la visibilité dans le fichier aspx.

Répondre

2

Voici, le pouvoir des événements!

côté ASPX:

<asp:panel runat="server" id="myPnlName OnLoad="panelLoadEvent" Tooltip='<% Response.Write(switch_type.Trunk) %>'> 
    Stuff 
</asp:panel> 

Code de côté:

protected sub panelLoadEvent(sender as object, e as EventArgs) 
    dim pnl as Panel = sender 
    dim oItem as switch_type = ctype(pnl.ToolTip, switch_type) 
    pnl.visibile = iif(stype=oItem,true,false) 
End sub 

Le point est que vous mettez la valeur que vous voulez vérifier dans l'info-bulle du panneau, et chaque panneau se traité par le même Gestionnaire LoadEvent tel que défini dans l'attribut OnLoad de la déclaration Panel.
À ce stade, vous vérifiez si la valeur donnée correspond à votre variable et définissez la visibilité de manière appropriée.

EDIT Si vous souhaitez stocker une représentation de chaîne dans l'info-bulle, par opposition à l'int sous-jacent de l'ENUM, vous pouvez l'analyser de nouveau à l'ENUM en utilisant quelque chose comme:

[Enum].Parse(System.Type, Value) 
-1

Vous pouvez utiliser un contrôle MultiView et placer chaque panneau dans l'une des vues.

0

Que diriez-vous de cette

<asp:Panel runat="server" Visible="<%= SType == switch_type.Trunk %>"> 
    Stuff 
</asp:Panel> 
+0

Aye, c'est ce que Je pensais. Sans le raccourci = opérateur en face, il y a de fortes chances qu'il fasse l'évaluation mais ne la produise pas réellement. – Kezzer

+0

Je pensais cela, mais mes tests ne semblent pas fonctionner! –

+1

J'ai essayé ceci, mais j'ai obtenu ceci: ... Message d'erreur d'analyseur: Impossible de créer un objet de type 'System.Boolean' à partir de sa représentation sous forme de chaîne '<% = SType == type_type.Five_E%>' pour le ' Propriété visible. – arinte

0

Comme il y a beaucoup de panneaux est-il utile de créer un ensemble de données que vous pouvez lier à partir d'un répéteur et vous serez alors en mesure d'utiliser le <% #%> syntaxe effectuer votre logique invisible visible?

+0

ne fonctionnera pas, car les panneaux contiennent différents ensembles de données. – arinte