15. juni 2004 - 14:16Der er
12 kommentarer og 1 løsning
Placeholder bliver ikke renderet efter postback?
Hej,
Jeg har et hurtigt spørgsmål.
Jeg har en placeholder hvori jeg tilføjer en usercontrol. Ved tryk på en knap tilføjer jeg en mere af samme type usercontrol til "forsvinder" min placeholder fra skærmen...
Hvad kan det skyldes.
Jeg har gemt min placeholder i en session og genindlæser den hver gang siden vises, og hvis jeg skriver placeholder.controls.count ud, kan jeg se at den stiger for hvert tryk på knappen.
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Lidt kode: private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here if(!Page.IsPostBack) { BindData(); LoadControls(); } Response.Write(placeProjektLeder.Controls.Count); } private void LoadControls() { ctrlProjektLeder leder = (ctrlProjektLeder)LoadControl("ctrlProjektLeder.ascx");
leder.BindData(); //BindData() er en funktion jeg har lavet. Som sørger for at binde værdier til en dropdown i usercontrollen. placeProjektLeder.Controls.Add(leder); }
protected override object SaveViewState() { Session["Place"] = placeProjektLeder; return base.SaveViewState(); } private void Button2_Click(object sender, System.EventArgs e) { LoadControls(); } override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // if(Session["Place"] != null) placeProjektLeder = (PlaceHolder)Session["Place"]; InitializeComponent(); base.OnInit(e); }
Mht. til preRender, hvordan vil du så gøre det i ovenstående? Skal jeg så gemme "alle" instanser af usercontrollen i et array, og så løbe det igennem og add til placeholderen i preRender()?
Det bliver stadig ikke... Jeg har nu også: protected override void OnPreRender(EventArgs e) { if(!Page.IsPostBack) { BindData(); LoadControls(); } Response.Write(placeProjektLeder.Controls.Count);
Jeg har måske fundet lidt af grunden... Ved ikke om det kan være rigtigt... Men hvis jeg kigger i det kode som siden genererer, så er det ikke muligt at se selve placeholderen. Dvs. at når jeg postbacker siden, så set fra "serverens" synspunkt, så er der vel ikke rigtigt noget i siden at putte det i? Kan det være noget der betyder noget? Den kan jo ikke finde det der er i placeholderen, da placeholderen ikke er i koden mere.
Så hvis man kan finde en måde at lave placeholderen "explicit" eller lign. kunne det måske hjælpe. Bare så den fik en <div> omkring med et name og id...
Af en eller anden grund renderer panel heller ikke dem der ligger i controls?
Tror jeg er nødt til at lave en anden (knap så effektiv) fremgangsmåde.
Jeg har ikke tid til at blive ved at forsøge desværre.. For det nager mig at jeg ikke kan få det til at virke..
Men nu "genskaber" jeg kontrollerne for hver gang, og gemmer dem i et array, som kommer i viewstate. På den måde kan jeg genskabe det hver gang siden kommer. Lidt langsommere.. Men formentligt virker det.. OG det er jo også vigtigt.. :-)
Er der en af jer der har en god skabelon til hvordan man "bør" gøre det.
Altså jeg har en "template" med en dropdown og to tekstbokse. Dem vil jeg gerne kunne tilføje "dynamisk" og sidenhen selvfølgelig kunne hive informationen ud af dem.
Jeg lukker lige den her tråd.. Tak for hjælpen... Men der kom jo desværre ikke en løsning.. :'-(
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.