2008-11-07 20 views
0

J'essaie de désactiver un contrôle d'étiquette à partir du gestionnaire d'événements CheckedChanged d'une case à cocher. Dois-je être capable de faire cela?Suis-je censé être en mesure de modifier d'autres contrôles à partir d'un gestionnaire d'événements de page ASP.NET?

Au moment où je définis Enabled sur false, rien ne change lorsque la page est rechargée. Si je fais la même chose dans Page_Load, je vois le changement.

Pour clarifier:

Cela ne fonctionne pas:

protected void chkNeverExpires_CheckedChanged(object sender, EventArgs e) 
{ 
    this.lblMessage.Enabled = false 
} 

Mais cela ne:

protected void Page_Load(object sender, System.EventArgs e) 
{ 
    this.lblMessage.Enabled = false 
} 

Répondre

2

Etes-vous sûr que vous êtes événements sont la cuisson dans l'ordre que vous attendez? Mettez des points d'arrêt sur toutes vos méthodes de publication et regardez ce qui se passe, est-ce que vous réinitialisez l'état activé n'importe où? avez-vous enableviewstate = false sur quoi que ce soit? Editer: Vous vous rendez compte que CheckedChanged ne se déclenche pas tant que vous n'avez pas publié de postback depuis un autre contrôle, ou que vous avez AutoPostBack = true sur la checbkbox?

Cela fonctionne très bien:

<asp:Label runat="server" ID="lblTest">test</asp:Label> 
<asp:CheckBox runat="server" ID="chkCheck" AutoPostBack="true" />Check 

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 
    chkCheck.CheckedChanged += chkCheck_CheckedChanged; 
} 

private void chkCheck_CheckedChanged(object sender, EventArgs e) 
{ 
    lblTest.Enabled = false; 
} 
+0

Oui, j'ai AutoPostBack à true. Je n'ai pas de lignes supplémentaires dans mon gestionnaire d'événement OnInit, ce qui est intéressant. Je me demande si c'est lié? – James

+0

Mon événement tire pourtant, je ne peux pas sembler changer le reste de la page cependant. Les changements ne persistent nulle part. – James