Jag har problem med att lägga till flera usercontrols _dynamiskt_ på en sida och få postbacks att inte ta bort kontrollerna igen. Lägger till INamingContainer om du inte redan gjort det. <code> Hum Just. Det handlar inte om att eventlyssnaren faller bort. Utan att dynamiskt tillagda kontroller tas bort vid postback. Jaha... Problemet är beskrivet i ariklen som jag skickade med i första inlägget och där finns även en lösning som funkar om man vet hur många controller man skall lägga till. Men eftersom jag inte bara skall lägga till en controll utan ett okänt antal controller så fungerar inte den lösningen fullt ut utan bör antagligen byggas på på något sätt. ok. Skall ta en koll på artikeln... Jag måste be dig beskriva tydligare vad du vill göra. Skapa ett projekt och lägg till en usercontrol som heter WebUserControl1.ascx Benny, Nej, Benny, Det var ju problemet som stod beskrivet i artiklen jag postade i mitt första inlägg som jag ville lösa. Och att viewstate är kvar vet jag. Benny, Jag ville gör an snygg lösning men får väl gör lite hack alla asp i stället för en objektorienterad lösning.Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
Här finns en artikel om hur man löser fallet när man från början vet hur många usercontrolers man kommar att ha på sin aspx-sida.
http://www.ftponline.com/vsm/2003_04/magazine/columns/aspnet/default_pf.aspx
Men som sagt hur löser jag att lägga till ett okänt antal usercontrols dynamiskt där postback fortfarande fungerar?Sv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
Mvh johanSv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
Public Class test2
Inherits System.Web.UI.UserControl
Implements INamingContainer
</code>
Ger följande fel:
Interface 'System.Web.UI.INamingContainer' is already implemented by base class 'System.Web.UI.TemplateControl'.
Altså det är ju redan implementerat för UserControl.Sv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
Hade precis denna frågan för två dagarsedan, sedan löste det sig för honom, pga att cachen var dum.
Gör en granskning så VS .Net inte tappat even tlyssnarna. += syntaxen. Den kan lätt få för sig att ta bort dem. :-(
Mvh jOhanSv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
/BennySv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
hum.. men det skall de inte göra för staten håller kvar dem. Kör du Clear på controls eller nått?
Eller binder du datan för den control du addad controller till?
Mvh JohanSv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
/BennySv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
Sv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
Jag har idag en sida där jag dynsmikt laddar in x antal user controls samt custom control och de återstå vid Post Back. med x antal menar jag över 10 st.
Du skriver detta:
"Men som sagt hur löser jag att lägga till ett okänt antal usercontrols dynamiskt där postback fortfarande fungerar? " <-- vad exakt menar du med där postback fortfarande fungerar? Postback gör du hela tiden så den fungerar jämt.
Mvh JohanSv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrols
Klistra in koden nedan i WebForm1.aspx och kör programmet.
När man klickar på knappen så försvinner usercontrollern. Just detta problem löses i artiklen ovan genom att man lägger till en usercontrol i en "host" som håller i usercontrollern.
<code>
Public Class WebForm1
Inherits System.Web.UI.Page
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
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
If Not Page.IsPostBack Then
'Detta funkar inte eftersom det inte är ett "riktigt objekt"
FindControl("Form1").Controls.Add(New WebUserControl1)
'Utan man får liksom mer trycka in koden så här
FindControl("Form1").Controls.Add(Page.LoadControl("~/WebUserControl1.ascx"))
End If
End Sub
End Class
</code>Sv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontrol
Aaaa nu ser jag, du har kodat din lösning lite speciellt.
<code>
FindControl("Form1").Controls.Add(Page.LoadControl("~/WebUserControl1.ascx"))
</code>
Du måste inte leta upp Form1.
Gör så här. Skapa en placeholder:
<asp:palceholder id=Holder.../>
i Page_Load addar du din kontoll till placeholdern.
Holder.Add(Page.LoadControl(......));
Så skall det nog lösa sig. Du kan även lägga kontrollen direkt i Page.Controls.Add men då vet du inte riktigt vart den hamnar på sidan.
Mvh JohanSv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontro
den försvinner fortfarande vid postback.
Jag har bytt ut sättet att lägga till kontrollen....
<code> PlaceHolder1.Controls.Add(Page.LoadControl("~/WebUserControl1.ascx"))</code>
... står det nu
Jag tror nog attt du inte kör någon <code> If Not Page.IsPostBack Then </code> utan lägger till samma kontroll var gång du kör postback.
/BennySv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercontr
Ja det har du rätt i. Såg inte att du hade den.
Dock gör det inte så mkt att du laddar in dem igen, dess viewstate skall vara kvar. Om det är den du är rädd att tappa?
Mvh JohanSv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercont
/BennySv: Postback (tar bort usercontrols) vid dynamiskt tillagda usercon
jag såg aldrig riktigt problemet... kanske för att jag inte ser det som ett problem?
Mvh JohanSv: Postback (tar bort usercontrols) vid dynamiskt tillagda userco
Nej den hör tråden lär nog inte lösas :(