Я столкнулся с точно такой же проблемой и пробежал 5-6 часов.
Я пишу это, может быть, кто-то вроде меня мог бы получить помощь.
1) Вы должны инициализировать свои элементы управления в событии Page.PreInit. (В моем случае мне пришлось добавить свои элементы управления в заполнитель, поэтому я расширил PreInit, чтобы загружать эти элементы раньше, но вам не нужно этого делать. Это зависит от вашего сценария.)
2) Эти точные методы следует привязать к элементам управления после их инициализации в событии Page.PreInit.
Вот мой пример кода:
protected override void OnPreInit(EventArgs e)
{
// Loading controls...
this.PrepareChildControlsDuringPreInit();
// Getting ddl container from session and creating them...
if (GetDDLSession().Count != 0)
{
foreach (DropDownList ddl in GetDDLSession())
{
ddl.SelectedIndexChanged += SelectedIndexChanged;
phDropDowns.Controls.Add(ddl);
}
}
base.OnPreInit(e);
}
public static void PrepareChildControlsDuringPreInit(this Page page)
{
// Walk up the master page chain and tickle the getter on each one
MasterPage master = page.Master;
while (master != null) master = master.Master;
}