![]() |
beginning page load immediately on postback with a long load time ?
i have a dropdown control with autopostback=on that when selected,
posts back and populates a second dropdown. the 2nd dropdown takes a while to load, giving the user time to start typing in other fields before the screen refreshes. i would like to disable any user input during this time. I was thinking if it was possible to force the browser to begin loading the page immediately that it would erase the controls that are there and the user would be forced to wait (wouldn't be able to press any buttons, type in any textboxes etc) for the page to refresh. I started playing around with Response.Buffer/Flush but it didn't work. Any ideas on if this is possible and if so how to get it to work? Thanks Sample code: Private Sub Dropdown1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboBroker_Alpha.SelectedIndexChanged ' CLEAR PAGE SO USER DOESN'T HAVE TIME TO WAIT AROUND AND START TYPING IN OTHER CONTROLS Response.Buffer = True Response.Flush() (CODE THAT TAKES A LONG TIME TO RUN HERE...) |
Re: beginning page load immediately on postback with a long load time ?
"Mad Scientist Jr" <usenet_daughter@yahoo.com> wrote in message
news:7a93f3c4.0406291139.13123a33@posting.google.c om... > i have a dropdown control with autopostback=on that when selected, > posts back and populates a second dropdown. the 2nd dropdown takes a > while to load, giving the user time to start typing in other fields > before the screen refreshes. i would like to disable any user input > during this time. > > I was thinking if it was possible to force the browser to begin > loading the page immediately that it would erase the controls that are > there and the user would be forced to wait (wouldn't be able to press > any buttons, type in any textboxes etc) for the page to refresh. > > I started playing around with Response.Buffer/Flush but it didn't > work. Any ideas on if this is possible and if so how to get it to > work? The problem is something like this: 1, User requests page.aspx 2. Server sends back html for page.aspx, including your dropdown with autopostback on. 3. User changes selection in dropdown. 4. Page posts back to the server 5. User starts typing into the html sent back in 2. 6. Server sends back html for posted-back page.aspx, including your loaded second dropdown, overwriting whatever the user had typed. So you see, what you would need to do is disable the controls on the page just before the postback begins. When the new html comes back, it will come back with enabled controls. This will take a bit of JavaScript in the onchange event of the dropdown. That script would have to run through the DOM and set the disabled property of all relevant objects to true. Now, I can't get you an example. I needed to do this in a control once, and had a bit of trouble with it. Only certain objects in the DOM implement the disabled property. Also, in some cases, setting the disabled property will disable all contained objects, but sometimes it won't and you'll have to iterate into the child objects. Also, I seem to remember that under some circumstances, I couldn't entirely disable an anchor object, and had to screw with the URL instead. Of course, another option would be to follow one of the various strategies for producing a "Waiting..." page. -- John Saunders johnwsaundersiii at hotmail |
Re: beginning page load immediately on postback with a long load time ?
you also have to control the timing of the disable to happen after postback
as disabled fields are not posted by the browser. dropdown with autopostback also will have problems if the user uses arrow keys to access the dropdown values (tries to post on every selection) -- bruce (sqlwork.com) "John Saunders" <johnwsaundersiii@notcoldmail.com> wrote in message news:uYVhWQiXEHA.2972@tk2msftngp13.phx.gbl... > "Mad Scientist Jr" <usenet_daughter@yahoo.com> wrote in message > news:7a93f3c4.0406291139.13123a33@posting.google.c om... > > i have a dropdown control with autopostback=on that when selected, > > posts back and populates a second dropdown. the 2nd dropdown takes a > > while to load, giving the user time to start typing in other fields > > before the screen refreshes. i would like to disable any user input > > during this time. > > > > I was thinking if it was possible to force the browser to begin > > loading the page immediately that it would erase the controls that are > > there and the user would be forced to wait (wouldn't be able to press > > any buttons, type in any textboxes etc) for the page to refresh. > > > > I started playing around with Response.Buffer/Flush but it didn't > > work. Any ideas on if this is possible and if so how to get it to > > work? > > The problem is something like this: > > 1, User requests page.aspx > 2. Server sends back html for page.aspx, including your dropdown with > autopostback on. > 3. User changes selection in dropdown. > 4. Page posts back to the server > 5. User starts typing into the html sent back in 2. > 6. Server sends back html for posted-back page.aspx, including your loaded > second dropdown, overwriting whatever the user had typed. > > So you see, what you would need to do is disable the controls on the page > just before the postback begins. When the new html comes back, it will come > back with enabled controls. > > This will take a bit of JavaScript in the onchange event of the dropdown. > That script would have to run through the DOM and set the disabled property > of all relevant objects to true. > > Now, I can't get you an example. I needed to do this in a control once, and > had a bit of trouble with it. Only certain objects in the DOM implement the > disabled property. Also, in some cases, setting the disabled property will > disable all contained objects, but sometimes it won't and you'll have to > iterate into the child objects. Also, I seem to remember that under some > circumstances, I couldn't entirely disable an anchor object, and had to > screw with the URL instead. > > Of course, another option would be to follow one of the various strategies > for producing a "Waiting..." page. > -- > John Saunders > johnwsaundersiii at hotmail > > |
Re: beginning page load immediately on postback with a long load time ?
>4. Page posts back to the server
What I want to do is for the page to post some whitespace back to the server, say a single space character, so the page in the user's browser is temporarily blanked out, so they can't type anything. Then when the server is done processing, it sends the postback page. Is that possible? *** Sent via Devdex http://www.devdex.com *** Don't just participate in USENET...get rewarded for it! |
Re: beginning page load immediately on postback with a long load time ?
"Emma Gumbdough" <usenet_daughter@yahoo.com> wrote in message
news:uhrbmiqXEHA.3012@tk2msftngp13.phx.gbl... > >4. Page posts back to the server > > What I want to do is for the page to post some whitespace back to the > server, say a single space character, so the page in the user's browser > is temporarily blanked out, so they can't type anything. Then when the > server is done processing, it sends the postback page. Is that possible? Actually, no, it doesn't even make sense. The "page", in the users browser, posts form data back to the server. The server then sends HTML back in response. See Indicating Progress http://msdn.microsoft.com/library/de...pplication.asp for some examples on progress. -- John Saunders johnwsaundersiii at hotmail |
Re: beginning page load immediately on postback with a long load time ?
Yes. And when the page posts back, the codebehind BEGINS rendering the
postback page, and flushes the buffer (which would contain some whitespace or maybe the header). The client then has a partial response in their browser (this will probably appear as a blank screen) and thus cannot type in any fields until the entire page loads. The server then continues to process and sends the remaining response to the client, at which point they can type again. *** Sent via Devdex http://www.devdex.com *** Don't just participate in USENET...get rewarded for it! |
Re: beginning page load immediately on postback with a long load time ?
"Emma Gumbdough" <usenet_daughter@yahoo.com> wrote in message
news:ekIy77rXEHA.2844@TK2MSFTNGP12.phx.gbl... > Yes. And when the page posts back, the codebehind BEGINS rendering the > postback page, and flushes the buffer (which would contain some > whitespace or maybe the header). The client then has a partial response > in their browser (this will probably appear as a blank screen) and thus > cannot type in any fields until the entire page loads. The server then > continues to process and sends the remaining response to the client, at > which point they can type again. I wouldn't count on TCP/IP to be deterministic, even in the presence of a Flush call. If you want to make sure they don't type anything, you need to handle it on the client. You don't even have control over how much time passes after the user changes selection in the dropdown and before Page_Load starts. -- John Saunders johnwsaundersiii at hotmail |
Re: beginning page load immediately on postback with a long load time ?
I ended up just putting the slow dropdowns on a different screen.
The 'waiting' page idea sounded good but how would it be implemented - as a popup? Can the main page be given a RegisterStartupScript or register client side script that would be able to automatically close the popup (assuming it is a child of that browser) upon completion of loading? >you also have to control the timing of the disable to happen after postback as disabled fields are not posted by the browser *** Sent via Devdex http://www.devdex.com *** Don't just participate in USENET...get rewarded for it! |
| All times are GMT. The time now is 05:34 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.