解析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は主にページスクロールバーの水平および垂直位置を記録します.
転載先:http://www.cnblogs.com/jeff377/archive/2008/01/17/1042228.html
<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