I am writing an application that allows users to enrol in something. One web part displays a view of the event calendar and has a button on each event that the user clicks to enrol in the event. A second web part (a DVWP) shows which events the user has currently enrolled in. Enrolments are kept in a separate list.
I want this second DVWP to refresh asynchronously in response to a button click. While I can set the web part to asynchronously refresh periodically, if the web part doesn't refresh quickly enough, it looks to the user like they haven't enrolled at all. I expect the user would try to click the button again. On doing this, they'll receive an error saying that they have already enrolled in this event, which looks wrong as it hasn't shown up in their list of current enrolments.
I've been looking for a method on the DVWP and the SPDataSource called something like Update() that I can call (with JavaScript most likely) that would force the list to be read again. I'm sure I could set the asynchronous refresh interval to 1 second but the penalty would be in extra network traffic and additional reading of the enrolments list server-side.
So is there a way that I can force the list to be read from the client without setting an interval and without requiring a full page postback?