Подписка на событие ascx другого ascx в другом окне - PullRequest
0 голосов
/ 03 декабря 2011

Я пытаюсь подписаться на событие кнопки «Сохранить» пользовательского элемента управления, которое запускается в отдельном окне Radway от вызывающего родителя. но я получаю объект не инициализированную ошибку, я знаю почему, но чего мне не хватает?

Обновление: я обнаружил свою ошибку, но, похоже, что if (this.SaveEvent! = Null) в ControlBase всегда равно null

Код родительского контроля:

public partial class myControl : ControlBase
{
    private myChildControl __myChildControl;

    private void myControl_PreRender(object sender, EventArgs e)
    {
        // error occurs here
        //this.__myChildControl.SaveEvent += new myChildControl.SaveEventHandler(__myChildControl_SaveEvent);
        // found my error 
        this.SaveEvent += new myChildControl.SaveEventHandler(__myChildControl_SaveEvent);
    }

    private void __myChildControl _SaveEvent(object sender, CustomEventArgs e)
    {
         this.Label1.Text = e.CustomEventArg1.ToString();
         this.Label2.Text = e.CustomEventArg2.ToString();
    }
}

Запущен дочерний элемент управления в RadWindow:

public partial class myChildControl : ControlBase
{
    protected void btnSave_OnClick(object sender, EventArgs e)
    {
        CustomEventArgs _cea = new CustomEventArgs {CustomEventArg1 = 123, CustomEventArg2 = 12};
        callBaseMethod(_cea);
    }
}

Код ControlBase:

public class ControlBase : UserControl
{
    public event CustomEventHandler SaveEvent;
    public delegate void CustomEventHandler(object sender, CustomEventArgs e);

    internal void callBaseMethod(CustomEventArgs cea)
    {
        if (this.SaveEvent!= null)
        {
            this.SaveEvent(this, cea);
        }
    }
}

Класс CustomEventArgs:

public class CustomEventArgs : EventArgs
{
    public int CustomEventArgs1 { get; set; }
    public int CustomEventArgs2 { get; set; }

}

1 Ответ

1 голос
/ 03 декабря 2011

Это невозможно в codebehindhind: RadWindow представляет отдельную страницу aspx / ascx, которая связана с главной страницей только через javascript.

Что вам нужно сделать, это обработать событие RadWindow OnClientClose в javascript, а затем запустить что-то на родительской странице, которое выполняет соответствующие задачи.

...