我在 ASP.NET 表单上有一个占位符,一个从多个源构建表的自定义类,并且在该自定义类中,按钮被动态添加到表中。
一切都很好,除了在我背后的代码(数据绑定到 FormView)中,我不知道如何连接我的事件。
在我的自定义类中,我有以下内容:
Dim Objective_addBtn As Button = New Button
Objective_addBtn.ID = 'I dynamically set the ID here
AddHandler Objective_addBtn.Click, AddressOf AddRow
在我的自定义类中,我有以下内容:
Public Event AddNewRow As EventHandler
Private Sub AddRow(sender As Button, e As EventArgs)
Select Case True
Case sender.ID.Contains("ProblemBtn")
Case sender.ID.Contains("GoalBtn")
Case sender.ID.Contains("ObjectiveBtn")
RaiseEvent AddNewRow(Me, EventArgs.Empty)
Case sender.ID.Contains("TaskBtn")
Case Else
'Do Nothing - Should Not be here!
End Select
End Sub
我已经验证我正在访问 RaiseEvent 的代码块,但我无法弄清楚如何在我的代码中捕获该事件。
我当前的代码隐藏:
Partial Class <mypage>
Inherits System.Web.UI.Page
Private WithEvents CustomClass As New CustomClass
Protected Sub Page_Load(ByVal sender as object, e as EventArgs) Handled Me.Load
CustomClass = New CustomClass(Request.QueryString("pid"), Request.QueryString("sid"))
AddHandler CustomClass.AddNewRow, AddressOf NewRow
End Sub
End Class
最后,在后面的代码中,我有:
Protected Sub NewRow(ByVal sender As Object, e As EventArgs) Handles CustomClass.AddNewRow
MsgBox("NewRow Test")
End Sub
NewRow 永远不会被触发,MsgBox 测试永远不会显示,并且逐步调试会验证 NewRow sub 永远不会进入。