Как изменить стандартную сигнатуру обработчика событий asp Updatepanel? - PullRequest
0 голосов
/ 27 декабря 2011

Я всегда использовал стандартные Asp.net Элементы управления рядом с AjaxControlToolkit и никогда не сталкивался с проблемой. Недавно мне пришлось использовать элементы управления Dundas Charting , которые не являются стандартными элементами управления .NET, и мне пришлось управлять частью apage на основе отчета, показанного в Dundas .

К сожалению, Dundas Event Signature не распознается UpdatePanel, и я вижу следующую ошибку

Описание:

 An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Сведения об исключении:

 System.InvalidOperationException: The 'CommandFired' event on associated control 'chart1' for the trigger in UpdatePanel 'updatepanel1' does not match the standard event handler signature.

Итак, я хочу знать, есть ли возможность изменить подпись обработчика панели обновления? Если да, как это сделать?

1 Ответ

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

Похоже, что класс CommandFiredEventArgs не является производным от System.EventArgs, что, вероятно, является проблемой. Вместо того, чтобы пытаться изменить сигнатуру, которую ожидает UpdatePanel, я бы вывел подкласс из объекта Chart, а затем добавил ваши собственные события с вашим собственным классом EventArgs как часть сигнатуры. Тогда должно быть легко подключить их к существующим событиям Dundas.

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

public class CustomChart : Dundas.Charting.WebControl.Chart
{
     public event EventHandler<EventArgs> MyCustomEvent;

     public CustomChart()
     {
          this.CommandFired += SomeMethod;
     }

     private void SomeMethod(object sender, CommandFiredEventHandler args)
     {
          this.OnMyCustomEvent(EventArgs.Empty);
     }

     protected void OnMyCustomEvent(EventArgs args)
     {
         if (this.MyCustomEvent != null)
         {
              this.MyCustomEvent(this, args);
         }
     }
}
...