У меня была похожая проблема. В моем случае кнопка содержалась на панели, и хотя кнопки на родительском элементе управления работали правильно, кнопка на дочернем элементе управления панели не работала.
Оказывается, вам нужно вызвать EnsureChildControls
в методе OnLoad
на дочерней панели, чтобы гарантировать, что CreateChildControls
вызывается достаточно рано в жизненном цикле страницы , чтобы контролировать может отвечать на события. Это кратко описано в этом ответе здесь , где я нашел решение своей проблемы.
Следуя этой инструкции, я просто добавил следующий код в панель управления:
protected override void OnLoad(EventArgs e)
{
EnsureChildControls();
base.OnLoad(e);
}
Я заметил, что на форумах возникает много путаницы по поводу этой проблемы, поэтому, чтобы продемонстрировать, что это работает, я добавил в свой код операторы трассировки. Ниже приведены результаты до и после случаев. Обратите внимание, что позиция Survey list creating child controls
перемещается из события PreRender в событие Load.
До:

После того, как:
