Que se passe-t-il lorsque vous définissez la propriété Enabled d'un contrôle parent?
-
20-08-2019 - |
Question
J'ai un conteneur de contrôles personnalisés contenant chacun 2 contrôles. L'une à afficher lorsqu'elle est activée (c'est-à-dire une zone de texte ou une case à cocher) et une étiquette à afficher lorsqu'elle est désactivée.
J'ai surchargé Render
comme suit:
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
If Me.Enabled Then
_item.RenderControl(writer)
Else
_display_text.RenderControl(writer)
End If
End Sub
Cependant, lorsque je règle le conteneur, qui est une table, sur Enabled = False
, la fonctionnalité attendue ne se produit pas. À la place, les zones de texte et les cases à cocher sont grisées.
Que se passe-t-il réellement lorsque vous définissez la propriété Enabled
d'un parent? Mon hypothèse était qu'il transmettait ce statut à tous ses enfants, mais il semble que je me trompe.
Merci!
La solution
La réponse courte est que votre hypothèse est réellement fausse.
Si vous aimez (et étendez WebControl et que votre conteneur a un serveur runat =), vous pouvez utiliser
.If NamingContainer.Enabled Then
au lieu de
If Me.Enabled Then
mais les propriétés ne se propagent pas automatiquement dans l'arborescence en asp.