ASP.NET dynamisk genereret objekt
Jeg er løbet ind i et lidt underligt problem der på den ene side virker men med lidt umiddelbart ikke-problematiske modifikationer ikke virker.For at efterligne gør følgende:
På en tom default.aspx smide følgende i .vb filen
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim peter As New Button()
peter.CommandName = "tis"
AddHandler peter.Command, AddressOf peter_click
Panel2.Controls.Add(peter)
End Sub
ligeledes oprettes der en sub i samme class:
Sub peter_click(ByVal s As Object, ByVal e As CommandEventArgs)
MsgBox("Peter " & e.CommandName)
End Sub
Kør siden med F5 og ved at trykke på knappen skulle der gerne komme en msgbox frem. Fint!
Ryd al kode og gør følgende:
1) opret en web user control og kald den test.ascx
2) smid en Panel ind på 'test' med navnet Panel1
3) smid følgende i test.ascx.vb-klassen
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim tissemand As New Button()
tissemand.CommandName = "tralala"
tissemand.Text = "vi siger tis"
AddHandler tissemand.Command, AddressOf tissemand_click
PanelPik.Controls.Add(tissemand)
End Sub
Sub tissemand_click(ByVal s As Object, ByVal e As CommandEventArgs)
MsgBox("Peter " & e.CommandName)
End Sub
4) hop ind på default.aspx og tilføj en knap og et Panel1. I knappens Click tilføj
Dim uc As UserControl = CType(Page.LoadControl("usercontrollers/test.ascx"), UserControl)
Panel1.Controls.Add(uc)
kør siden med F5
Når der trykkes på knappen bliver der indsat en ny knap i Panel1 på default.aspx-siden. Trykker du på denne knap skulle du gerne få msgboxen frem fra test.ascx men det er ikke tilfældet.
Hvis du i punkt 4) istedet (for knappens Click) tilføjer koden til Page_Load og du klikker på knappen 'vi siger tis' så vil du få en msgbox.
Mit spørgsmål er hvorfor er der forskel på at loade fra Page_Load og så fra knappens Click-funktion... jeg vil umiddelbart gerne kunne bruge knappens click-funktion da det vil lette mit arbejde en del i forhold til masterpages osv.