У меня есть собственный Control1, который динамически добавляется как дочерний элемент управления в Control2, который реализует INamingContainer в CreateChildControls () для control2.
Сам Control1 реализует IPostBackEventHandler.Но метод RaisePostBackEvent () никогда не вызывается в Control1, несмотря на то, что я вызываю метод обратной передачи из JavaScript.
И да, на странице есть другие элементы управления, которые реализуют интерфейс IPostBackEventHandler.
Что я сделалпропустить?
Что может вызвать проблему?
ОБНОВЛЕНИЕ: Control1 всегда создается одинаково и ему присваивается один и тот же идентификатор в Control2
это выглядит так в Control2:
protected override void CreateChildControls()
{
if(!this.DesignMode)
{
Control1 c = new Control1();
c.ID = "FIXED_ID";
}
base.CreateChildControls();
}
UPDATE2: Control1:
public class Control1: Control, IPostBackEventHandler
{
...
protected virtual void RaisePostBackEvent(string eventArgument)
{
if(!String.IsNullOrEmpty(eventArgument))
{
// Some other code
}
}
}
если я добавлю строку
Page.RegisterRequiresRaiseEvent(c);
В CreateChildControls () в Control2, тогда этот метод вызывается, но всегдас нулевым eventArgument.
UPDATE3:
В JavaScript для некоторых событий onClick я делаю следующее:
__doPostBack(Control1.UniqueID,'commandId=MyCommand');
, где Control1.UniqueID, конечно, заменяется реальным uniqueID во времярендеринг.Я проверил, этот скрипт вызывается.