Just nu i M3-nätverket
Gå till innehåll

Problem med events i samband med dynamiska kontrol


Nollis

Rekommendera Poster

Tjena!

 

Jag har ett problem som jag länge brottats med, och som förmodligen endast är ett resultat av ett feltänk från min sida. Jag hoppas det är så, och att någon har en snabb och enkel lösning!!

 

Problemet beskrivs som följer:

 

1) En ASP.Net-sida skapar en linkButton i Load-eventet.

2) När man klickar på den, skapas en till linkButton-kontroll i linkButton_Command-eventet.

3) När man klickar på den, händer ingenting alls....

 

Detta problem uppstår även om man skulle försöka lägga till en kontroll i PreRender-eventet, och det skulle jag kunna acceptera, men att man inte kan skapa en kontroll med ett fungerande event i en annan kontrolls event upplever jag som oerhört begränsande....

 

Är det en bugg eller en feature?

 

I nedanstående kod inträffar alltså aldrig Case "kalkon"....

 

Public Class WebForm1
   Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

[snip]

#End Region

   Protected WithEvents linkButton As System.Web.UI.WebControls.LinkButton = Nothing

   Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       'Put user code to initialize the page here

       linkButton = New System.Web.UI.WebControls.LinkButton
       linkButton.Text = "hopp"
       linkButton.CommandName = "hej"
       linkButton.CommandArgument = "svejs"
       AddHandler linkButton.Command, AddressOf Me.linkButton_Command
       PlaceHolder1.Controls.Add(linkButton)
       linkButton = Nothing

   End Sub

   Sub linkButton_Command(ByVal sender As Object, ByVal e As System.Web.UI.webcontrols.CommandEventArgs) Handles linkButton.Command

       Select Case DirectCast(e.CommandArgument, String)
           Case "svejs"
               linkButton = New System.Web.UI.WebControls.LinkButton
               linkButton.Text = "plopp"
               linkButton.CommandName = "hej igen"
               linkButton.CommandArgument = "kalkon"
               AddHandler linkButton.Command, AddressOf Me.linkButton_Command
               PlaceHolder1.Controls.Add(linkButton)
               linkButton = Nothing

           Case "kalkon"
               Response.Write("kuckeliku")

           Case Else
               Response.Write("mu")

       End Select

   End Sub

End Class

 

/ Johan

 

[inlägget ändrat 2006-01-13 22:03:51 av Nollis]

Länk till kommentar
Dela på andra webbplatser

  • 1 month later...

har inte asp.net på den här datorn så jag kan inte köra din kod.

 

Men du laddar in en ny control för varje page_load och lägger in i din placeholder. Du måste nog ha nåt liknande

 

 

 

dim myLinkBtn as linkbutton

 

if not page.ispostback then

 

myLinkBtn = new linkbutton

 

else

 

myLinkBtn = findcontrol("myLinkBtn")

 

end if

 

placeholder1.controls.add(mylinkbtn)

 

 

Länk till kommentar
Dela på andra webbplatser

Hejsan!

 

Tack för ditt svar, men eftersom kontrollen inte överlever från en request till en annan, så kan man inte hitta den med FindControl( ) . Den måste läggas till varje gång...

 

Testa gärna...

 

/ Johan

 

Länk till kommentar
Dela på andra webbplatser

provade koden och nu fattar jag problemet bättre. Vet inte exakt vad det är du vill att koden ska göra. Men om du spar information nån stans så du kan rita ut dom kontrollerna igen för varje postback så funkar det nog. Men det är klart.. hade ju vart trevligt om placeholdern mindes bättre :)

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...