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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top