Question

I populate a collection in a UserControl which then creates dynamic LinkButton controls from the collection. When one is clicked, on postback, the collection is empty. Is this behavior by design or is there something I can do to keep the collections populated on postback without re-populating them in code? Do I need to re-query in the forms postback?

Was it helpful?

Solution

Every variable defined in a class inheriting Web.UI.Page will be destroyed at the end of the Page-Lifecycle(incl. controls and fields), hence it will be null at postback if you don't reinitialize it.

One way to persist it across postbacks is to store it in a Session-variable.

You will find a complete list of all options on how to persist variables across postbacks here: http://msdn.microsoft.com/en-us/magazine/cc300437.aspx

  • Application
  • Cookies
  • Form Post / Hidden Form Field
  • QueryString
  • Session
  • New State Containers in ASP.NET
  • Cache
  • Context
  • ViewState
  • Web.config and Machine.config Files Conclusion

It's the nature of HTTP that it is stateless.

OTHER TIPS

You need to persist the information in ViewState and recreate the controls when the ViewState is loaded after postback. For example, you could store number of buttons created and then recreate them.

See a similar solution at https://stackoverflow.com/a/15497035/1711598

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top