2010-04-21 25 views
1

Je travaille sur une ancienne application Web dans Visual Studio .Net 2003 (yeeich) et je rencontre un problème avec une case à cocher qui ne définit pas la visibilité sur Vrai.La case à cocher ASP.Net ne permet pas de définir la valeur visible

Il est déclaré comme tel:

Protected WithEvents chkTraining As System.Web.UI.WebControls.CheckBox 

et

<asp:CheckBox id="chkTraining" runat="server" Visible="False"></asp:CheckBox> 

Quand je suis mise au point par la ligne qui a:

chkTraining.Visible = True 

il va passé que ça allait bien, mais comme je vérifiez cette valeur sur la ligne suivante, chkTraining.Visible = False. Que pourrait-il se passer ici? Il n'y a pas d'événements qui se déclenchent ou quoi que ce soit d'autre qui se passe ... ça me lance vraiment une boucle. Merci de votre aide.

Répondre

5

Il se peut que la visibilité de son conteneur soit définie sur false.

+0

homme je me sens comme un idiot, j'ai vérifié ce triple avant de poster et avéré que je regardais le mauvais code source ... aide si vous regardez le bon fichier en premier. Merci. –

0

pourquoi le déclarer? si vous mettez dans la page .aspx

<asp:CheckBox id="chkTraining" runat="server" Visible="False"></asp:CheckBox>

l'accès à l'aide de l'identifiant dans le code derrière ...

+0

C'est Visual Studio 2003, je suis sûr que vous devez le faire de cette façon. Les versions ultérieures le font automatiquement, mais si vous tapez les balises et ne faites pas glisser un contrôle vers le formulaire, il ne créera pas la déclaration pour vous. –

+0

Assez juste, je manque de connaissances vs2003 tout ce que j'ai utilisé est 2005, et 2008 pour asp.net (en C#). Je n'ai jamais à déclarer quoi que ce soit que je mets dans la page .aspx (et je n'ai vu aucune déclaration explicite faite en faisant glisser des contrôles sur la page .aspx dans le code derrière). Cependant, dans le code derrière je peux automatiquement accéder aux contrôles en utilisant l'identifiant. Désolé, je ne pouvais pas être utile, bonne chance! – Mausimo

0

Vous voyez que vous avez mentionné runat = "server".

Ainsi, lorsque votre page se charge sur le navigateur (client), l'identifiant "chkTraining" change en quelque chose d'autre ... c'est une action basique d'asp.net qui change les identifiants des contrôles du serveur.

Vérifiez également la propriété ClientIdMode dans la section Propriétés. Si elle est statique ou héritée, vous l'obtiendrez comme vous l'avez mentionné dans le code.

Mais si vous avez utilisé une autre valeur comme AutoID, puis faites Prévisible comme ça,

Ce,

<%=chkTraining.ClientID%> 

vous donnera l'identifiant client. Après avoir récupéré l'identifiant client, vous pouvez l'utiliser pour accéder aux propriétés de ce contrôle. par exemple,

var chk = document.getElementById('<%=chkTraining.ClientID%>'); 

if (chk.checked == true) { 
     alert("checked");     
    } 
    else { 
     alert("unchecked"); 
    }