Reload Post data in onClick in asp.net

asp.netcontrolsdynamicpostback

Code is simplified to make it clearer.

The description

I'm writing a custom control that uses Controls.Add() to add all of the sub control it wants.

Say for example my control is called "lots_of_text_boxes" and I add a minimum number of text boxes and provide a button (Controls.Add(button)) that says "add new text box".

The control renders nicely. I click the button, the OnLoad(EventArgs e) recreates the sub controls and asp.net's magic find all my posted data and fills in the text boxes so I can read them.

btnAddNew_Click(object sender, EventArgs e) gets called to add a new textbox.

At first I tried Controls.Add(textbox) but this puts the text box at the bottom under the add button.

I could remove the button, add the text box and re add the button but I don't want to do this because it is not simple in the real case (lots of related buttons and controls intertwined).

What I want to do:
Number_of_Textboxes_to_show++;
Controls.Clear();
OnLoad(new EventArgs());

this wipes the control to start over and recreates it with one new ones.

The problem

because the postdata was already loaded the page is redrawn but all the data in the fields was lost.
I really want a function "LoadPostData()" that goes through all the sub controls and reloads their post data.

it makes sense to me that the post data is still in memory (I hope) and all the controls on pass 2 have the same unique ID's as they did on pass 1 (and on the previous form that was posted).

Has anyone see anything like this?

Best Answer

It sounds like the problem is just simple control placement. If the controls were being added to the place that you wanted (above the button), there would be no need to wipe the form and rebuild it, correct?

I would suggest adding a few Panel or Placeholder controls to your user control to define the layout of it. That way, your textboxes could be added to the Panel instead of the overall usercontrol, and your layout would be preserved and the controls would be where you want them.

Related Topic