Pergunta

Eu tenho um recipiente de controles personalizados cada um dos quais tem 2 controles neles. Um para exibir quando ativado (ou seja, uma caixa de texto ou caixa), e um rótulo a ser exibido quando desativado.

Render Eu sobrecarregado assim:

    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

No entanto, quando eu definir o recipiente, que é uma mesa, para Enabled = False, meu funcionalidade esperada não acontece. Em vez disso eu me acinzentado caixas de texto e caixas de seleção.

O que realmente acontece quando você definir a propriedade Enabled de um pai? Minha suposição era que propagado que o status para baixo para todos os seus filhos, mas parece que eu estou enganado.

Obrigado!

Foi útil?

Solução

A resposta curta é que seu pressuposto é realmente errado.

Se você gosta (e estão estendendo WebControl, e seu recipiente tem um runat = server), você pode usar

If NamingContainer.Enabled Then

em vez de

If Me.Enabled Then

mas propriedades não se propagam auto baixo a árvore em asp.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top