Что происходит, когда Вы устанавливаете свойство Enabled родительского элемента управления?

StackOverflow https://stackoverflow.com/questions/485118

Вопрос

У меня есть контейнер пользовательских элементов управления, в каждом из которых есть по 2 элемента управления.Тот, который будет отображаться при включении (т.е.текстовое поле или флажок) и метка, которая будет отображаться при отключении.

Я перегружен Render вот так:

    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

однако, когда я устанавливаю контейнер, который является таблицей, на Enabled = False, моя ожидаемая функциональность не выполняется.Вместо этого я получаю текстовые поля и флажки серого цвета.

Что на самом деле происходит, когда вы устанавливаете родительский Enabled собственность?Мое предположение состояло в том, что он распространил этот статус на всех своих дочерних элементов, но, похоже, я ошибаюсь.

Спасибо!

Это было полезно?

Решение

Короткий ответ заключается в том, что ваше предположение на самом деле неверно.

Если вам нравится (и вы расширяете WebControl, а в вашем контейнере есть runat=server), вы могли бы использовать

If NamingContainer.Enabled Then

вместо того , чтобы

If Me.Enabled Then

но свойства не распространяются автоматически вниз по дереву в asp.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top