回发上的ASP.NET事件处理程序问题

时间:2009-10-15 10:50:25

标签: asp.net controls event-handling

嗨,我有一点doozie。

我有一个附加了点击事件的控件。据我所知,事件应该在回发期间提出。我检查过的事情:

  • __Eventtarget是正确的。
  • __EventArgs是正确的。
  • 可以在init之后,加载之后和预呈现期间使用page.findControl(__Eventtarget中的[string]来找到控件。
  • 我可以将找到的控件强制转换为IPostBackEventHandler并手动引发事件并且工作正常。

我缺少什么,所以框架可以处理这个事件?

明信片或以下的建议请

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果没有这里的代码,可能会导致一些问题:

  • 控制正在请求周期的后期(以及事件触发后)添加到层次结构中。如果您正在动态创建控件(包括数据绑定控件中的控件,如Repeater,ListView,GridView等),则会出现此问题。
  • 事件处理程序被添加到不在前端的代码中,例如:myButton.Click += new EventHandler(myButton_Click),并且没有在每个请求上完成。它可能落后于未执行的逻辑路径

答案 2 :(得分:0)

您必须确保在请求周期中连接事件。您可以使用以下方法执行此操作:

还有其他可能的方法来连接事件,例如你可以在你的代码中手动完成它。但我发现这两个选项是最安全的,这样你就可以确定你的事件会被解雇