数時間を費やした後、私はこれを達成することができました。pnlPopupというポップアップパネルにあるmyDivというこのdivがあるとします。myDivにscollがあるたびに、スクロールされた位置をマークダウンするJavaScriptが必要です。hfScrollPという非表示の要素でこのスクロールされた位置をマークダウンします。
<script type="text/javascript">
function markScrollPosition() {
var div = document.getElementById("myDiv").scrollTop;
document.getElementById('<%=hfScrollP.ClientID %>').value = div;
}
</script>
<asp:HiddenField ID = "hfScrollP" runat = "server" />
<asp:Panel ID="pnlPopup" runat="server" Width="750px" style="display:none;">
<div id="myDiv" style="height: 350px; width: 700px;overflow: auto;"
onscroll="markScrollPosition();">
</div>
</asp:Panel>
そして、クリックするとポップアップを開くボタンとモーダルポップアップエクステンダーがあります。
<asp:Button ID="btnShowModalPopup" runat="server" Text="Show" />
<ajaxToolkit:ModalPopupExtender ID="mpePopup" runat="server"
TargetControlID="btnShowModalPopup"
PopupControlID="pnlPopup" DropShadow="True" BackgroundCssClass="modalBackground"
Enabled ="true">
</ajaxToolkit:ModalPopupExtender>
ポストバックがあり、ポップアップが表示されるたびにポップアップのスクロール位置を設定するには、このJavaScriptが必要です。
<script type="text/javascript" language="javascript">
function pageLoad() {
var modal = $find('<%=mpePopup.ClientID %>');
$find('<%=mpePopup.ClientID %>').add_shown(
function () {
$('#myDiv').scrollTop(document.getElementById('<%=hfScrollP.ClientID %>').value);
}
);
}
</script>
コードビハインド。
Private Sub btnShowModalPopup_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnShowModalPopup.Click
//Do your necessary processing
mpePopup.show();
End Sub
それでおしまい。ポップアップが表示されると、最後にマークされた下にスクロールされた位置にスクロールバックします。それが役に立てば幸い :)