views:

43

answers:

4

I have a button, which updates a value in the database. This value is used to determine what to draw on the page. Because of the page lifecycle though, the page redraws before the button click method is executed, meaning that any changes are not reflected until the page is reloaded again.

What's the best solution for this?

To clarify:

Page has a piece of text, that says "I like cats" if the database value is 1

button 'I hate cats' is pressed, which sets the database value to 0

the page reloads, but still says "I like cats"

the button click event is handled, and database value becomes 0

If the page is refreshed/reloaded, it now correctly says "I hate cats"

It should update when the button is clicked though.

A: 

Where are you querying the database? One easy option would just be to use Response.Redirect back to the page.

I think you could just get the result from the button method and just update a label/literal.

Billy
A: 

One possible solution is to execute a javascript function that updates the database (using ajax) when the OnClientClick event for the button is raised. In this case, when the page reaches the Page_Load event you will be able to render the appropriate content, as the postback happens after the script is executed. It should work fine if the database update takes a relatively small amount of time.

andrei m
A: 

you can use the page prerender event. this fire after the control event in the page lifecycle.

rauts
this should work, but for some reason my eventhandlers don't work when they are set during the pre-render event. However I just realised that I can make them static and show/hide them rather than dynamically creating them... so this should hopefully work
SLC
cool. let me know if this works...
rauts
It probably would work but since I am now just showing/hiding controls, I can do it with page_load. Thanks for your help though, it gave me the right answer in the end!
SLC
A: 

One curiosity, are using any anything like Page.IsPostBack { do something }.. If so, could you check if your update UI code is outside this check.

Subhash Dike