2009-10-15 5 views
0

Привет, у меня есть немного doozie.Проблема обработчика событий ASP.NET при отправке

У меня есть элемент управления с прикрепленным кликом. Насколько я вижу, событие должно быть поднято во время обратной передачи. Вещи, которые я проверил:

  • __Eventtarget верен.
  • __EventArgs является правильным.
  • Элемент управления можно найти с помощью page.findControl ([строка в __Eventtarget]) после init, после загрузки и во время prerender.
  • Я могу наложить найденный элемент управления на IPostBackEventHandler и поднять событие вручную, и он отлично работает.

Что мне не хватает, чтобы структура могла обрабатывать это событие?

Предложения на открытке или ниже, пожалуйста,

+2

не могли бы вы разместить код, пожалуйста? – kristian

+0

Добавили ли вы элемент управления, который вызывает динамическую обратную передачу? – Kane

ответ

1

Я нашел проблему: это был контроль третьей стороны, требующий события повышения. Эта информация была найдена с использованием пользовательского класса, унаследованного от страницы, overrode RegisterRequiresRaiseEvent и размещения точки останова при вводе подпрограммы overrode.

Public Class Page 
    Inherits System.Web.UI.Page 

    Public Overrides Sub RegisterRequiresRaiseEvent(ByVal control As System.Web.UI.IPostBackEventHandler) 
     If TypeOf control Is Infragistics.WebUI.UltraWebGrid.UltraWebGrid Then Exit Sub 
     MyBase.RegisterRequiresRaiseEvent(control) 
    End Sub 

End Class 
+0

Я также использую элементы управления Ingragistics и имею ту же проблему с обработчиками событий и динамическими элементами управления. (эти элементы управления отлично работают в другом проекте без IG) Я добавил ваш метод overrode и разместил в нем точку останова. Но этот метод не выполняется ... вы можете сказать, какой другой метод я могу использовать вместо этого? –

0

Без кода здесь несколько вещей, которые могут вызывать проблемы:

  • управления добавляется к иерархии в конце цикла запроса (и после того, как событие было запущено). Это проблема, если вы динамически создаете элементы управления (в том числе элементы управления данными, такие как Repeater, ListView, GridView и т. Д.)
  • Обработчик события добавляется в код, расположенный за не передним концом, например: myButton.Click += new EventHandler(myButton_Click), и это не делается по каждому запросу. Он может быть за логическим путем не выполнен.
0

Вы должны убедиться, что событие подключено в цикле запроса. Вы можете сделать это с помощью следующих методов:

  • Set AutoEventWireUp page directive как истинный, который указывает на то, если событие asp.net страницы автоматически добавляются
  • Установите обработчик событий в коде с помощью InitializeComponent function.

Есть и другие возможные способы подключения событий, например. вы можете сделать это вручную в своем коде где-нибудь. Но я обнаружил, что эти 2 варианта являются самыми безопасными, так что вы будете уверены, что ваши события будут уволены.