2009-10-15 50 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个选项是最安全的,这样你一定会认为你的事件将被解雇