Pourquoi Visible = '<%#false%>' fonctionne-t-il sur un GridView mais pas sur l'étiquette?

2009-12-18 5 views
2

Je me gratte la tête dessus, mais je n'ai aucune idée de quel est le problème. Mon code actuel estPourquoi Visible = '<%#false%>' fonctionne-t-il sur un GridView mais pas sur l'étiquette?

<asp:Label ID="Label1" runat="server" Text="abc" 
      Visible='<%#Request.QueryString["ListName"] == null %>' /> 
<asp:GridView ID="gvLists" runat="server" 
       Visible='<%#Request.QueryString["ListName"] == null %>' /> 

Comme vous pouvez le voir, je suis en train de faire que la visibilité de l'objet est entraîné par le querystring. Cela fonctionne bien pour GridView, mais ne fonctionne pas pour une étiquette. J'ai également essayé Panel et HyperLink avec les mêmes résultats.

Je suis sûr que je pourrais obtenir ce travail en mettant mon code dans le code-behind, mais ce ne sera pas aussi propre.

+0

J'ai l'impression que le '<%# %>' ne sera évalué que sur la liaison de données. –

Répondre

1

Merci à Alison de m'avoir indiqué la bonne direction. J'avais besoin d'ajouter Page.DataBind() à mon événement Page_Load pour que l'expression soit évaluée.

5

<% #%> fonctionne uniquement sur les éléments de la base de données.

vous devez changer à <% =%> (Notez le "=")

+0

Bien que cela ne fonctionne pas, vous m'avez indiqué dans la bonne direction – PBG

+1

Cela ne fonctionnera pas, car Visible est une propriété côté serveur et '<%= %>' ajoute seulement html pour rendre au client. –

1

<% = est utilise pour imprimer directement à la page et la <% # est utilisé pour les données des éléments de liaison. Here est une excellente explication de toutes les directives de code en ligne.

Questions connexes