2013-07-23 4 views
1

У меня есть Placeholder в форме 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 никогда не показывает, и отладки шаг за step проверяет, что нигде NewRow никогда не вводится.

+0

Ваши последние функции указывают: «Обрабатывает TXPlan.AddNewRow». Разве это не «Handles CustomClass.AddNewRow»? –

+0

Простите, да. У меня есть лодка кода, пытаясь разобраться с основами, LOL. – John

+0

Пожалуйста, проголосуйте за мой комментарий для этого :) –

ответ

1

Ha! Понял работает :) Вот что я сделал:

Во-первых, в моем частичном классе я ссылка -

Private WithEvents CustomClass as new CustomClass 

Я тогда в Page_Init установить -

CustomClass = New CustomClass(Request.QueryString("pid"), Request.QueryString("sid")) 

AddHandler CustomClass.AddNewRow, AddressOf NewRow 

, очевидно, вам сусло установите это в Page_Init вместо Page_Load. Теперь выполняется NewRow(). Надеюсь, это поможет кому-то!

Смежные вопросы