解析M a i n t i n S c r o l l PositionOnPostBackプロパティ

1662 ワード

ASP.NETのページがPostBack動作を実行すると、サーボ側からクライアントにページが再送信され、ページの垂直スクロールバーが一番上に戻り、水平スクロールバーが一番左に戻ります.この状況を理解するために、PageのM i n t i n S c r o l P o sitionOnPostBackプロパティをTrueに設定すると、ページは自動的にスクロールバーの位置を維持し、どのようにしてこの動作を実現しますか?Page.MaintainscrollPositionOnPostBack="True"の場合、HTMLの元のコードをチェックすると、"_SCROLLPOSITIONX"と"_SCROLLPOSITIONNY"の2つのHiddenFieldが多くなっていることがわかります.この2つのHiddenFieldは主にページスクロールバーの水平および垂直位置を記録します. 
<input type="hidden" name="__SCROLLPOSITIONX" id="__SCROLLPOSITIONX" value="0" />
<input type="hidden" name="__SCROLLPOSITIONY" id="__SCROLLPOSITIONY" value="204" />
ページには、主にWebForm_を介してJavaScriptプログラムコードも追加されます.SaveScrollPositionSubmitおよびWebForm_RestoreScrollPositionという2つの関数は、ページスクロールバーの位置を維持します.
 
 <script type="text/javascript">
 <!--
 theForm.oldSubmit = theForm.submit;
 theForm.submit = WebForm_SaveScrollPositionSubmit;
 
 theForm.oldOnSubmit = theForm.onsubmit;
 theForm.onsubmit = WebForm_SaveScrollPositionOnSubmit;
 
 theForm.oldOnLoad = window.onload;
 window.onload = WebForm_RestoreScrollPosition;
 // -->
 </script>
 
ページSubmitではWebForm_が利用されますSaveScrollPositionSubmit関数は、ページの現在の水平および垂直スクロールバーの位置を記録し、水平スクロールバーの位置を「_SCROLLPOSITIONX」というHiddenField、垂直スクロールバーの位置を「_SCROLLPOSITIONNY」というHiddenFieldに記録します.PostBack後にページを再ロードすると、WebForm_が利用されます.RestoreScrollPositionは、「_SCROLLPOSITIONX」および「_SCROLLPOSITIONNY」の2つのHiddenFieldの値に記録し、ページの水平および垂直スクロールバーの位置を再設定することで、ページスクロールバーの位置を維持する動作になります.
転載先:http://www.cnblogs.com/jeff377/archive/2008/01/17/1042228.html