У меня есть LinkButton
, который создается динамически в Load
, а затем добавляется в элемент управления, который находится на странице Master
. Вот исходный код, используемый для создания LinkButton
:Невозможно щелкнуть событие при динамическом добавлении LinkButton
LockUnlock = new LinkButton() { ID = "LockUnlock", Visible = false };
LockUnlock.Click += LockUnlock_Click;
Теперь, когда я первый копал в эту проблему, я думал, что это может быть связано с жизненным циклом ASP.NET, так что я переехал код на override OnInit
, но это не исправить.
Затем я перешел к настройке ID
, потому что это не делается. Поэтому я добавил эту строку:
LockUnlock.ID = "LockUnlock";
, и я пытался, что в обоих OnInit
и Load
- не повезло.
Тогда я думал, потому что я добавляю это пользовательский элемент управления, который является фактически частью ContentPlaceHolder
я, возможно, потребуется сделать ID
статические, чтобы получить эту работу, так что я добавил это:
LockUnlock.ClientIDMode = ClientIDMode.Static;
Я только пробовал это в Load
, но не повезло, и, честно говоря, если он не работает в Load
, он почти наверняка ничего не изменит в OnInit
- это был только мой первый шаг и действительно град Мэри во многих отношениях.
Хорошо, так что теперь я в точке, где я чувствую, что это связано с тем, что ResourceCenter
является то, что добавляется к ContentPlaceHolder
и, таким образом события пользовательского элемента управления, хотя это технически зацепили, может не запускается из-за контекста class
. Но я не уверен, куда идти отсюда.
Нужно ли добавить общий класс для клика? Нужно ли мне подключать клик в пользовательском элементе управления, а потом делегировать его оттуда?
Я бы предпочел не использовать либо из этих решений, но эй, мы делаем то, что нам нужно сделать! Я с нетерпением жду того, как все будут проинформированы об этом.
EDIT
код, который добавляет элемент управления в ResourceCenter
выглядит следующим образом:
this.ResourceCenter.AddAdminLink(LockUnlock.Visible ? LockUnlock : null);
и код внутри ResourceCenter
управления, который добавляет в свой список выглядит следующим образом:
if (link == null) { return; }
var wrapper = new HtmlGenericControl("li");
wrapper.Controls.Add(link);
this.AdminLinkList.Controls.Add(wrapper);
, где link
- это то, что было передано в метод указанной выше строкой.
Можете ли вы поделиться кодом, который добавляет элемент управления на страницу? – Andrei
@ Андреа, см. Мое редактирование. –
В каком событии page_load вы добавляете главную страницу управления или страницу контента? –