RiseEvent from usercontrol или связь между usercontrols - PullRequest
0 голосов
/ 26 августа 2011

У меня проблема с событием bubbleup от моего динамически загруженного элемента управления ascx (katalogbooklist.ascx) до родительского элемента управления (ViewAJBarnboksKatalog.ascx)
мне нужно запустить / запустить sub uppdateraAndraModuler в родительском элементе управления, когда событие addMultiVotes_command срабатывает в элементе управления.
Есть ли кто-нибудь, кто знает или имеет представление о том, как это сделать?

/ Andreas

(код находится в модулях dotnetnuke cms, если это поможет)

Partial Class ViewAJBarnboksKatalog  '<--------Partial codebehind file for ViewAJBarnboksKatalog.ascx
    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
         .. code for adding for loading katalogbooklist.ascx dynamic...
         Me.Controls.Add(..code.. add katalogbooklist.ascx ..) '
    End Sub

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim t As Execkoden = New Execkoden()
        AddHandler t.onAjeventtest, AddressOf Uppdateramod          
    End Sub

    Public Sub Uppdateramod(sender As Object, e As ajeventArgs)
        uppdateraAndraModuler()
    End Sub

    Public Sub uppdateraAndraModuler()
           '..do some code
    End Sub
End Class     

Partial Class katalogenBookList  '<--------Partial codebehind file for katalogbooklist.ascx
    Protected Sub addMultiVotes_command(ByVal sender As Object, ByVal e As System.EventArgs)
      '..more code...
      Dim te As New Execkoden ' <----- i want to use the constructor to raise the event in class Execkoden can´t raiseevent directly it wont´t fire
       '... more code...
    End sub
End Class


Public Class ajeventArgs : Inherits EventArgs        
    Public Sub New()
    End Sub
End Class

Public Delegate Sub Uppdatera(sender As Object, e As ajeventArgs)

Public Class Execkoden
    Public Event onAjeventtest As Uppdatera
    Public Sub New()
        RaiseEvent onAjeventtest(Me, New ajeventArgs)
    End Sub
End Class

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Создайте обработчик событий в элементе управления child , например:

public event EventHandler DeleteButtonClick;

При нажатии кнопки в элементе управления child выполните следующие действия:

protected void DeleteClick(object sender, EventArgs e)
{
    if (this.DeleteButtonClick != null)
        this.DeleteButtonClick(sender, e);
} 

И в вашем родительском контроле, в разметке:

<UC:SomeUserControl ID="UserControl1" runat="server" OnDeleteButtonClick="UserControl1_DeleteClick" ...>

И в коде позади родительского управления:

protected void UserControl1_DeleteClick(object sender, EventArgs e)
{
    //do something
}
0 голосов
/ 06 сентября 2011

Я бы предложил использовать функцию IMC или Интермодульную связь , которая встроена в DotNetNuke.

...