Just nu i M3-nätverket
Jump to content

Problem med events i samband med dynamiska kontrol


Nollis

Recommended Posts

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]

Link to comment
Share on other sites

  • 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)

 

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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 :)

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...