2009-10-15 66 views
0

嗨,我有一點doozie。ASP.NET事件處理程序回發問題

我有附加click事件控制。據我所知,事件應在回發期間提出。我已經檢查過的東西:

  • __Eventtarget是正確的。
  • __EventArgs是正確的。
  • 的控制可以通過在初始化後使用page.findControl([在__EVENTTARGET字符串])中找到,負荷後和預渲染期間。
  • 我可以將找到的控件投射到IPostBackEventHandler並手動引發事件,並且工作正常。

我缺少的是這樣的架構可以處理此事件?明信片上的或下面有請

+2

你能發佈一些代碼嗎? – kristian 2009-10-15 10:52:19

+0

您是否添加了導致回發動態的控件? – Kane 2009-10-15 11:16:19

回答

1

我發現這個問題:它是一個第三方控件註冊自身要求加薪的事件。這個信息是通過使用從Page繼承的自定義類找到的,覆蓋了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方法並在其中放置了一個斷點。 但是這種方法沒有執行......你能說我可以使用另一種方法來代替那個方法嗎? – 2010-08-03 13:36:06

0

沒有這裏的代碼

建議是可能造成的幾件事情的問題:

  • 被添加控件層次後期的請求週期(以及之後的事件已經開除)。如果您動態創建控件(包括像Repeater,ListView,GridView等數據綁定控件中的控件),則會出現問題。
  • 事件處理程序正在添加到不是前端的代碼中,例如:myButton.Click += new EventHandler(myButton_Click),而且這還不是每個請求都要完成的。它可能在未執行的邏輯路徑之後
0

您必須確保事件在請求週期中連線。您可以使用以下方法做到這一點:

還有其他可能的方式要連接的事件,例如你可以在代碼中手動執行。但我發現這2個選項是最安全的,這樣你一定會認爲你的事件將被解僱