Cosa succede quando si imposta la proprietà abilitata di un controllo parent?
-
20-08-2019 - |
Domanda
Ho un contenitore di controlli personalizzati, ognuno dei quali contiene 2 controlli. Uno da visualizzare quando abilitato (ad esempio una casella di testo o una casella di controllo) e un'etichetta da visualizzare quando disabilitato.
Ho sovraccaricato Render
in questo modo:
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
tuttavia, quando imposto il contenitore, che è una tabella, su Enabled = False
, la mia funzionalità prevista non si verifica. Invece mi vengono visualizzate le caselle di testo e le caselle in grigio.
Cosa succede realmente quando si imposta la proprietà Enabled
di un genitore? La mia ipotesi era che propagasse questo status a tutti i suoi figli, ma sembra che mi sbagli.
Grazie!
Soluzione
La risposta breve è che il tuo presupposto è in realtà sbagliato.
Se ti piace (e stai estendendo WebControl e il tuo contenitore ha un runat = server), puoi usare
If NamingContainer.Enabled Then
anziché
If Me.Enabled Then
ma le proprietà non si propagano automaticamente lungo l'albero in asp.