Как обработать событие Click кнопки в пользовательском элементе управления ITemplate? - PullRequest
0 голосов
/ 28 февраля 2011

Я создал пользовательский элемент управления в ASP.NET для отображения всплывающего окна с сообщениями.В моем классе MessageBox у меня есть свойство Content как ITemplate, как показано ниже:

[PersistenceMode(PersistenceMode.InnerProperty)]
    [TemplateContainer(typeof(MessageBoxContent))]
    [TemplateInstance(TemplateInstance.Single)]
    public ITemplate Content { get; set; }

Я использовал свой собственный элемент управления на своей странице следующим образом:

<cc1:MessageBox ID="MessageBox1" runat="server">
    <Content>
        <asp:Button Text="Save" runat="server" ID="B_Save" />
    </Content>
</cc1:MessageBox>

Даже я установилTemplateInstance для Single для Content, у меня по-прежнему нет доступа к элементу управления Button.

Все, что я хочу сделать, - это обработать событие нажатия кнопки.Когда я назначаю обработчик события элементу управления кнопками и запускаю проект, он генерирует исключение NullReferenceException.Есть ли способ справиться с этой проблемой?

Ответы [ 2 ]

0 голосов
/ 31 июля 2012

У меня была похожая проблема в пользовательском элементе управления, который я создал.

Я хотел найти LinkButton в свойстве Itemplate Template и назначить ему событие Click.

Я создал экземпляр шаблона в OnInit и назначил событие click в OnLoad .

Я нашел LinkButton в OnLoad , нет проблем. Я также смог добавить событие Click, которое казалось нормальным, пока, когда я попытался нажать на LinkButton, событие Click не сработало.

Исправление для меня заключалось в том, чтобы заставить мой пользовательский элемент управления реализовывать INamingContainer .

0 голосов
/ 28 февраля 2011

Это зависит от того, когда вы вызываете создание экземпляра шаблона.

Вы должны делать это во время события Load контейнера, и вы получите доступ к элементам управления с внедрением шаблона сразу после вызова метода ITemplate.InstantiateIn.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...