Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET controls added dynamically not visible from the code behind

I'm adding a dynamically built set of checkboxes to an asp.net page from the code behind with something like this in a recursive fashion:

pnlPageAccessList.Controls.Add(myCheckboxControl);

The controls show up fine on the page, but they don't show up when I view source, nor can I access them from the code behind. If I add the controls in the on_init method, they work. But I have some business rules driving changes to the list of controls itself that require I fire the add method elsewhere. Has anyone seen this before? I'm away from work so I can't copy the exact code.

I have two terrible ideas for how to get it working. One involves some jQuery and a set of hidden controls holding a big array of integers; the other is run the method on_init AND on my other events so the controls at least show up. Both smell like ugly hacks. The second one I suspect won't work to read the values out of the checkboxes.

like image 222
fr0man Avatar asked May 04 '26 01:05

fr0man


1 Answers

On the server side the page is recreated from scratch every postback, so if you add any controls dynamically, you have to re-add them on every postback.

As you add the controls at runtime they are not known at compile time, so there is no variables declared for the controls in the Page object. If you want to access the controls you either have to keep the reference from when you create the controls, or locate them in the Controls collection where you put them.

like image 160
Guffa Avatar answered May 05 '26 14:05

Guffa



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!