花了几个小时后,我能够做到这一点。假设我们有一个名为 myDiv 的 div,它位于一个名为 pnlPopup 的弹出面板中。每当 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
就是这样。当弹出窗口显示时,它将滚动回最后标记的向下滚动位置。希望对你有帮助:)