<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>The Moon Upstairs - Javascript</title>
    <link>http://fredwebs.com/blog/</link>
    <description>And other .Net Programming Issues</description>
    <language>en-us</language>
    <copyright>Fred Peters</copyright>
    <lastBuildDate>Mon, 26 Mar 2007 16:57:39 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>Fred@FredWebs.com</managingEditor>
    <webMaster>Fred@FredWebs.com</webMaster>
    <item>
      <trackback:ping>http://fredwebs.com/blog/Trackback.aspx?guid=2519a2f7-4a09-4238-8c2e-15971279c767</trackback:ping>
      <pingback:server>http://fredwebs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://fredwebs.com/blog/PermaLink,guid,2519a2f7-4a09-4238-8c2e-15971279c767.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://fredwebs.com/blog/CommentView,guid,2519a2f7-4a09-4238-8c2e-15971279c767.aspx</wfw:comment>
      <wfw:commentRss>http://fredwebs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2519a2f7-4a09-4238-8c2e-15971279c767</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A recent project I've been working on is a knowledge base with dynamic
data structures.  As such, all of the controls placed on the update page are
dynamically created at runtime.  
</p>
        <p>
There is a drop down list for country and state, with the country list causing a post
back to fill the state list.  We needed the page to scroll back to the country
list after postback to relieve the user of having to scroll down two pages.  
</p>
        <p>
It didn't take much research to find the Page directive <font color="#ff0000">MaintainScrollPositionOnPostback</font><font color="#0000ff">="true".  </font><font color="#000000">While
this did get the page to scroll back to the drop down list, it also caused the page
to scroll back to the submit button when there was a validation error (all done on
the server side).  Hey, no problem, I'll just set that directive programatically
only when the post back is caused by that drop down list.</font></p>
        <p>
I found a nice article by Peter Bromberg on a way to determine the control that causes a
post back at <a title="http://www.eggheadcafe.com/articles/20050609.asp" href="http://www.eggheadcafe.com/articles/20050609.asp">http://www.eggheadcafe.com/articles/20050609.asp</a>. 
I got null exceptions when trying to return the control, so I changed the code slightly
to just return a string that describes the type of control.
</p>
        <p>
But more null exceptions awaited me when I tried to set the scroll back directive
from the drop down list call back function.  Apparently this was also related
to the dynamic nature of the page.  I decided to abandon the page directive and
to wade into Javascript.
</p>
        <p>
An article at ASP.Net magazine by Brad McCabe, <a title="http://www.aspnetpro.com/NewsletterArticle/2003/09/asp200309bm_l/asp200309bm_l.asp" href="http://www.aspnetpro.com/NewsletterArticle/2003/09/asp200309bm_l/asp200309bm_l.asp">http://www.aspnetpro.com/NewsletterArticle/2003/09/asp200309bm_l/asp200309bm_l.asp</a> got 
me started in the right direction.  The functions presented would save the scroll
position in a hidden field, and that field would later be used to set the scroll position. 
I converted the functions to C# and implemented them in my Page.OnInit function. 
After getting all the Javascript errors resolved (always a chore for me), the page refused
to scroll on post back.
</p>
        <p>
Using a neat Javascript trace utility from <a title="http://www.interlogy.com/~cigdem/trace/" href="http://www.interlogy.com/~cigdem/trace/">http://www.interlogy.com/~cigdem/trace/</a> I
was able to determine that "theBody.scrollTop", which I translated as "document.body.scrollTop",
was not returning anything.  So I was saving nothing to the hidden control.
</p>
        <p>
Looking further I found a set of Javascript functions by "Tigra" at <a title="http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html" href="http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html">http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html</a> that
would find the x or y scroll postion, and the height and width of the window. 
The article also has a great cross reference table for different browsers and the
window/scroll functions supported by each.
</p>
        <p>
I only needed the y scroll function, and used a call to it to replace the document.page.scrollTop
property.  Now Tracer was confirming that I was saving the correct scroll position,
but alas the page did not scroll back.  After a little more debugging I
determined the page would never scroll by setting the document.body.scrollTop in this
situation since this is just a property you are setting.  Something else would
have to read that value to set the scroll.  I had no idea what that might be
since Javascript is not my strong point.  
</p>
        <p>
But there is a scroll function, and by calling scroll(0, [saved y value]) I was able
to finally get the page to scroll back only to the drop down list.
</p>
        <p>
          <strong>The post back control function, in App_Data/Global.asax.cs:</strong>
        </p>
        <p>
    <span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,255)">static</span><span style="COLOR: rgb(0,0,255)">string</span> GetPostBackControlType(System.Web.UI.<span style="COLOR: rgb(0,128,128)">Page</span> page)<br />
    {<br />
        <span style="COLOR: rgb(0,0,255)">string</span> objectType
= <span style="COLOR: rgb(0,0,255)">string</span>.Empty;<br />
        <span style="COLOR: rgb(0,128,128)">Control</span> control
= <span style="COLOR: rgb(0,0,255)">null</span>;<br />
        <span style="COLOR: rgb(0,0,255)">string</span> ctrlname
= page.Request.Params[<span style="COLOR: rgb(128,0,0)">"__EVENTTARGET"</span>];<br /><br />
        <span style="COLOR: rgb(0,0,255)">if</span> (ctrlname
!= <span style="COLOR: rgb(0,0,255)">null</span> &amp;&amp; ctrlname != <span style="COLOR: rgb(0,128,128)">String</span>.Empty)<br />
        {<br />
            control = page.FindControl(ctrlname);<br />
        }<br />
          <span style="COLOR: rgb(0,128,0)">//
if __EVENTTARGET is null, the control is a button type and we need to<br /></span>          <span style="COLOR: rgb(0,128,0)">//
iterate over the form collection to find it<br /></span>        <span style="COLOR: rgb(0,0,255)">else<br /></span>        {<br />
            <span style="COLOR: rgb(0,0,255)">string</span> ctrlStr=<span style="COLOR: rgb(0,128,128)">String</span>.Empty;<br />
            <span style="COLOR: rgb(0,128,128)">Control</span> c=<span style="COLOR: rgb(0,0,255)">null</span>;<br />
            
<br />
            <span style="COLOR: rgb(0,0,255)">foreach</span> (<span style="COLOR: rgb(0,0,255)">string</span> ctl <span style="COLOR: rgb(0,0,255)">in</span> page.Request.Form)<br />
            {<br />
                <span style="COLOR: rgb(0,128,0)">//
handle ImageButton controls ...<br /></span>                <span style="COLOR: rgb(0,0,255)">if</span> (ctl.EndsWith(<span style="COLOR: rgb(128,0,0)">".x"</span>)
|| ctl.EndsWith(<span style="COLOR: rgb(128,0,0)">".y"</span>))<br />
               
{<br />
                   
ctrlStr = ctl.Substring(0,ctl.Length-2);<br />
                   
c= page.FindControl(ctrlStr);<br />
               
}<br />
                <span style="COLOR: rgb(0,0,255)">else<br /></span>               
{<br />
                   
c = page.FindControl(ctl);<br />
               
}<br />
                <span style="COLOR: rgb(0,0,255)">if</span> (c <span style="COLOR: rgb(0,0,255)">is</span> System.Web.UI.WebControls.<span style="COLOR: rgb(0,128,128)">Button</span> || 
<br />
                  
c <span style="COLOR: rgb(0,0,255)">is</span> System.Web.UI.WebControls.<span style="COLOR: rgb(0,128,128)">ImageButton</span>)<br />
               
{<br />
                   
control = c;<br />
                    <span style="COLOR: rgb(0,0,255)">break</span>;<br />
               
}<br />
            }<br />
        }<br /><br />
        <span style="COLOR: rgb(0,0,255)">if</span> (control
!= <span style="COLOR: rgb(0,0,255)">null</span>)<br />
        {<br />
            objectType = control.GetType().ToString();<br />
        }<br /><br />
        <span style="COLOR: rgb(0,0,255)">return</span> objectType;<br /><br />
    }  
</p>
        <p>
          <strong>The Javascript placed in the body of the aspx page:</strong>
        </p>
        <p>
    <span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">script</span><span style="COLOR: rgb(255,0,0)">type</span><span style="COLOR: rgb(0,0,255)">="text/javascript"</span><span style="COLOR: rgb(255,0,0)">language</span><span style="COLOR: rgb(0,0,255)">="javascript"&gt;<br /></span>        <br />
       <span style="COLOR: rgb(0,0,255)">function</span> SaveScrollLocation
() {<br />
            <span style="COLOR: rgb(0,128,0)">//trace('Scroll
Top = ' + f_scrollTop());<br /></span>            window.document.forms[0].__SCROLLLOC.value
= f_scrollTop();<br />
        }<br />
        window.document.body.onscroll=SaveScrollLocation;<br /><br />
       <span style="COLOR: rgb(0,0,255)">function</span> f_scrollTop()
{<br />
            <span style="COLOR: rgb(0,0,255)">return</span> f_filterResults
(<br />
               
window.pageYOffset ? window.pageYOffset : 0,<br />
               
document.documentElement ? document.documentElement.scrollTop : 0,<br />
               
document.body ? document.body.scrollTop : 0);<br />
        }<br /><br />
       <span style="COLOR: rgb(0,0,255)">function</span> f_filterResults(n_win,
n_docel, n_body) {<br />
            <span style="COLOR: rgb(0,0,255)">var</span> n_result
= n_win ? n_win : 0;<br />
            <span style="COLOR: rgb(0,0,255)">if</span> (n_docel
&amp;&amp; (!n_result || (n_result &gt; n_docel)))<br />
               
n_result = n_docel;<br />
            <span style="COLOR: rgb(0,0,255)">return</span> n_body
&amp;&amp; (!n_result || (n_result &gt; n_body)) ? n_body : n_result;<br />
        }<br />
    <span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">script</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span></p>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
          <strong>The C# snippit placed in the Page OnInit function:</strong>
        </p>
        <p>
            <span style="COLOR: rgb(0,128,0)">//
hidden field to store scroll location<br /></span>            Page.ClientScript.RegisterHiddenField(<span style="COLOR: rgb(128,0,0)">"__SCROLLLOC"</span>, <span style="COLOR: rgb(128,0,0)">"0"</span>);<br /><br />
            <span style="COLOR: rgb(0,0,255)">if</span> (Page.IsPostBack)<br />
            {<br />
                <span style="COLOR: rgb(0,0,255)">string</span> ctrlType
= <span style="COLOR: rgb(0,128,128)">Global</span>.GetPostBackControlType(<span style="COLOR: rgb(0,0,255)">this</span>);<br /><br />
                <span style="COLOR: rgb(0,0,255)">if</span> (ctrlType.Contains(<span style="COLOR: rgb(128,0,0)">"DropDownList"</span>))<br />
               
{<br />
                    <span style="COLOR: rgb(0,128,0)">//
Keep scroll at the country drop down list<br /></span>                   
SetScrollLocation();<br />
               
}<br />
            }<br /></p>
        <p>
          <strong>The C# function to Set the Scroll Location:</strong>
        </p>
        <p>
    <span style="COLOR: rgb(0,0,255)">private</span><span style="COLOR: rgb(0,0,255)">void</span> SetScrollLocation()<br />
    {<br />
        <span style="COLOR: rgb(0,128,128)">StringBuilder</span> jsSB
= <span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(0,128,128)">StringBuilder</span>();<br /><br />
        jsSB.Append(<span style="COLOR: rgb(128,0,0)">"&lt;script
language='javascript'&gt;"</span>);<br />
        jsSB.Append(<span style="COLOR: rgb(128,0,0)">"function
SetScrollLocation () {"</span>);<br />
        jsSB.Append(<span style="COLOR: rgb(128,0,0)">" 
scroll(0,"</span> + Request[<span style="COLOR: rgb(128,0,0)">"__SCROLLLOC"</span>]
+ <span style="COLOR: rgb(128,0,0)">");"</span>);<br />
        jsSB.Append(<span style="COLOR: rgb(128,0,0)">"}"</span>);<br />
        jsSB.Append(<span style="COLOR: rgb(128,0,0)">"window.document.body.onload=SetScrollLocation;"</span>);<br />
        jsSB.Append(<span style="COLOR: rgb(128,0,0)">"&lt;/script&gt;"</span>);<br />
        
<br />
        Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), <span style="COLOR: rgb(128,0,0)">"setScroll"</span>,
jsSB.ToString());<br /><br />
    }<br /></p>
        <a href="http://11011.net/software/vspaste">
        </a>
        <p>
While this implementation only acts on the DropDownList, you could easily extend it
to different controls or different dropdowns by returning the ID of the control causing
the postback.
</p>
        <img width="0" height="0" src="http://fredwebs.com/blog/aggbug.ashx?id=2519a2f7-4a09-4238-8c2e-15971279c767" />
      </body>
      <title>ASP.Net Scroll on Post Back</title>
      <guid isPermaLink="false">http://fredwebs.com/blog/PermaLink,guid,2519a2f7-4a09-4238-8c2e-15971279c767.aspx</guid>
      <link>http://fredwebs.com/blog/2007/03/26/ASPNetScrollOnPostBack.aspx</link>
      <pubDate>Mon, 26 Mar 2007 16:57:39 GMT</pubDate>
      <description>&lt;p&gt;
A recent project I've been&amp;nbsp;working&amp;nbsp;on is&amp;nbsp;a knowledge base with dynamic
data structures.&amp;nbsp; As such, all of the controls placed on the update page&amp;nbsp;are
dynamically created at runtime.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
There is a drop down list for country and state, with the country list causing a post
back to fill the state list.&amp;nbsp; We needed the page to scroll back to the country
list after postback to relieve the user of having to scroll down two pages.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
It didn't take much research to find the Page directive &lt;font color=#ff0000&gt;MaintainScrollPositionOnPostback&lt;/font&gt;&lt;font color=#0000ff&gt;="true".&amp;nbsp; &lt;/font&gt;&lt;font color=#000000&gt;While
this did get the page to scroll back to the drop down list, it also caused the page
to scroll back to the submit button when there was a validation error (all done on
the server side).&amp;nbsp; Hey, no problem, I'll just set that directive programatically
only when the post back is caused by that drop down list.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
I found a nice article by Peter Bromberg on a way to determine the control that causes&amp;nbsp;a
post back at &lt;a title=http://www.eggheadcafe.com/articles/20050609.asp href="http://www.eggheadcafe.com/articles/20050609.asp"&gt;http://www.eggheadcafe.com/articles/20050609.asp&lt;/a&gt;.&amp;nbsp;
I got null exceptions when trying to return the control, so I changed the code slightly
to just return a string that describes the type of control.
&lt;/p&gt;
&lt;p&gt;
But more null exceptions awaited me when I tried to set the scroll back directive
from the drop down list call back function.&amp;nbsp; Apparently this was also related
to the dynamic nature of the page.&amp;nbsp; I decided to abandon the page directive and
to wade into Javascript.
&lt;/p&gt;
&lt;p&gt;
An article at ASP.Net magazine by Brad McCabe, &lt;a title=http://www.aspnetpro.com/NewsletterArticle/2003/09/asp200309bm_l/asp200309bm_l.asp href="http://www.aspnetpro.com/NewsletterArticle/2003/09/asp200309bm_l/asp200309bm_l.asp"&gt;http://www.aspnetpro.com/NewsletterArticle/2003/09/asp200309bm_l/asp200309bm_l.asp&lt;/a&gt;&amp;nbsp;got&amp;nbsp;
me started in the right direction.&amp;nbsp; The functions presented would save the scroll
position in a hidden field, and that field would later be used to set the scroll position.&amp;nbsp;
I converted the functions to C# and implemented them in my Page.OnInit function.&amp;nbsp;
After getting all the Javascript errors resolved (always a chore for me), the page&amp;nbsp;refused
to&amp;nbsp;scroll on post back.
&lt;/p&gt;
&lt;p&gt;
Using a neat Javascript trace utility from &lt;a title=http://www.interlogy.com/~cigdem/trace/ href="http://www.interlogy.com/~cigdem/trace/"&gt;http://www.interlogy.com/~cigdem/trace/&lt;/a&gt;&amp;nbsp;I
was able to determine that "theBody.scrollTop", which I translated as "document.body.scrollTop",
was not returning anything.&amp;nbsp; So I was saving nothing to the hidden control.
&lt;/p&gt;
&lt;p&gt;
Looking further I found a set of Javascript functions by "Tigra" at &lt;a title=http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html href="http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html"&gt;http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html&lt;/a&gt;&amp;nbsp;that
would find the x or y scroll postion, and the height and width of the window.&amp;nbsp;
The article also has a great cross reference table for different browsers and the
window/scroll functions supported by each.
&lt;/p&gt;
&lt;p&gt;
I only needed the&amp;nbsp;y scroll function, and used a call to it to replace the document.page.scrollTop
property.&amp;nbsp; Now Tracer was confirming that I was saving the correct scroll position,
but alas the page did not scroll back.&amp;nbsp; After a&amp;nbsp;little more debugging I
determined the page would never scroll by setting the document.body.scrollTop in this
situation since this is just a property you are setting.&amp;nbsp; Something else would
have to read that value to set the scroll.&amp;nbsp; I had no idea what that might be
since Javascript is not my strong point.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
But there is a scroll function, and by calling scroll(0, [saved y value]) I was able
to finally get the page to scroll back only to the drop down list.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The post back control function, in App_Data/Global.asax.cs:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; GetPostBackControlType(System.Web.UI.&lt;span style="COLOR: rgb(0,128,128)"&gt;Page&lt;/span&gt; page)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; objectType
= &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,128,128)"&gt;Control&lt;/span&gt; control
= &lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; ctrlname
= page.Request.Params[&lt;span style="COLOR: rgb(128,0,0)"&gt;"__EVENTTARGET"&lt;/span&gt;];&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (ctrlname
!= &lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; ctrlname != &lt;span style="COLOR: rgb(0,128,128)"&gt;String&lt;/span&gt;.Empty)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; control = page.FindControl(ctrlname);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,128,0)"&gt;//
if __EVENTTARGET is null, the control is a button type and we need to&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,128,0)"&gt;//
iterate over the form collection to find it&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;else&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; ctrlStr=&lt;span style="COLOR: rgb(0,128,128)"&gt;String&lt;/span&gt;.Empty;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,128,128)"&gt;Control&lt;/span&gt; c=&lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; ctl &lt;span style="COLOR: rgb(0,0,255)"&gt;in&lt;/span&gt; page.Request.Form)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,128,0)"&gt;//
handle ImageButton controls ...&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (ctl.EndsWith(&lt;span style="COLOR: rgb(128,0,0)"&gt;".x"&lt;/span&gt;)
|| ctl.EndsWith(&lt;span style="COLOR: rgb(128,0,0)"&gt;".y"&lt;/span&gt;))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
ctrlStr = ctl.Substring(0,ctl.Length-2);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
c= page.FindControl(ctrlStr);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;else&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
c = page.FindControl(ctl);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (c &lt;span style="COLOR: rgb(0,0,255)"&gt;is&lt;/span&gt; System.Web.UI.WebControls.&lt;span style="COLOR: rgb(0,128,128)"&gt;Button&lt;/span&gt; || 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
c &lt;span style="COLOR: rgb(0,0,255)"&gt;is&lt;/span&gt; System.Web.UI.WebControls.&lt;span style="COLOR: rgb(0,128,128)"&gt;ImageButton&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
control = c;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;break&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (control
!= &lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objectType = control.GetType().ToString();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;return&lt;/span&gt; objectType;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Javascript placed in the body of the aspx page:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;script&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;type&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="text/javascript"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;language&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="javascript"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: rgb(0,0,255)"&gt;function&lt;/span&gt; SaveScrollLocation
() {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,128,0)"&gt;//trace('Scroll
Top = ' + f_scrollTop());&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.document.forms[0].__SCROLLLOC.value
= f_scrollTop();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.document.body.onscroll=SaveScrollLocation;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: rgb(0,0,255)"&gt;function&lt;/span&gt; f_scrollTop()
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;return&lt;/span&gt; f_filterResults
(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
window.pageYOffset ? window.pageYOffset : 0,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
document.documentElement ? document.documentElement.scrollTop : 0,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
document.body ? document.body.scrollTop : 0);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: rgb(0,0,255)"&gt;function&lt;/span&gt; f_filterResults(n_win,
n_docel, n_body) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;var&lt;/span&gt; n_result
= n_win ? n_win : 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (n_docel
&amp;amp;&amp;amp; (!n_result || (n_result &amp;gt; n_docel)))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
n_result = n_docel;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;return&lt;/span&gt; n_body
&amp;amp;&amp;amp; (!n_result || (n_result &amp;gt; n_body)) ? n_body : n_result;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;script&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;strong&gt;The C# snippit placed in the Page OnInit function:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,128,0)"&gt;//
hidden field to store scroll location&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Page.ClientScript.RegisterHiddenField(&lt;span style="COLOR: rgb(128,0,0)"&gt;"__SCROLLLOC"&lt;/span&gt;, &lt;span style="COLOR: rgb(128,0,0)"&gt;"0"&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (Page.IsPostBack)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; ctrlType
= &lt;span style="COLOR: rgb(0,128,128)"&gt;Global&lt;/span&gt;.GetPostBackControlType(&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (ctrlType.Contains(&lt;span style="COLOR: rgb(128,0,0)"&gt;"DropDownList"&lt;/span&gt;))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,128,0)"&gt;//
Keep scroll at the country drop down list&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
SetScrollLocation();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The C# function to Set the Scroll Location:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; SetScrollLocation()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: rgb(0,128,128)"&gt;StringBuilder&lt;/span&gt; jsSB
= &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="COLOR: rgb(0,128,128)"&gt;StringBuilder&lt;/span&gt;();&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsSB.Append(&lt;span style="COLOR: rgb(128,0,0)"&gt;"&amp;lt;script
language='javascript'&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsSB.Append(&lt;span style="COLOR: rgb(128,0,0)"&gt;"function
SetScrollLocation () {"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsSB.Append(&lt;span style="COLOR: rgb(128,0,0)"&gt;"&amp;nbsp;
scroll(0,"&lt;/span&gt; + Request[&lt;span style="COLOR: rgb(128,0,0)"&gt;"__SCROLLLOC"&lt;/span&gt;]
+ &lt;span style="COLOR: rgb(128,0,0)"&gt;");"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsSB.Append(&lt;span style="COLOR: rgb(128,0,0)"&gt;"}"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsSB.Append(&lt;span style="COLOR: rgb(128,0,0)"&gt;"window.document.body.onload=SetScrollLocation;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsSB.Append(&lt;span style="COLOR: rgb(128,0,0)"&gt;"&amp;lt;/script&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), &lt;span style="COLOR: rgb(128,0,0)"&gt;"setScroll"&lt;/span&gt;,
jsSB.ToString());&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;/p&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
While this implementation only acts on the DropDownList, you could easily extend it
to different controls or different dropdowns by returning the ID of the control causing
the postback.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://fredwebs.com/blog/aggbug.ashx?id=2519a2f7-4a09-4238-8c2e-15971279c767" /&gt;</description>
      <comments>http://fredwebs.com/blog/CommentView,guid,2519a2f7-4a09-4238-8c2e-15971279c767.aspx</comments>
      <category>ASP.Net Controls</category>
      <category>ASP.Net</category>
      <category>Javascript</category>
    </item>
  </channel>
</rss>