I have been reading about the Page LifeCycle. I understand the LifeCycle, however, it’s not clear on what to do, and when to do it. The problem is I use Page_Load to get database values, and set form fields. I use a button’s onClick method to update the database. However, the form fields text properties were set during Page_Load, so it’s really only updating the database with the OLD values.
Page_Load: I gather data, and set control text properties to reflect data.
Button_onClick: I update the database from the form
Problem: It’s updating values gathered from Page_Load and not the actual form.
Certainly, I am not supposed to perform everything in the Page_Load. So where am I going wrong during this process?
Page_Load
If you are loading your database data in the Page_Load event, the very first thing to do is to wrap it within a
if (!IsPostBack)statement.http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx
So
IsPostBack = truewhen the page cycle is the result of postback.In your Page_Load, you should only gather your data when
IsPostBack = false, not on every page load.Setting fields
I personnaly prefer to set the fields content on the PreRender event handler (but honnestly i don’t know it should/must be done there, it just seems more logic to me).
PreRender is executed after your postback events (click on a button, drop-down selection change…) so it ensures that your updates and more generally data modifications are done before rendering the page.