Ajax ModalPopupExtender Postback Scrollbar

时间:2012-07-25 10:57:17

标签: asp.net ajax modalpopupextender

我有一个asp面板,它使用ajax作为Modal弹出窗口打开。 在此面板中有一些可以回发的用户控件,例如允许自定义编辑和添加的gridview。

然而,由于Panel的大小,我不得不引入滚动条,以便用户可以滚动asp面板并编辑相应的gridview。在回发时虽然Panel中的滚动条重复放在顶部,而不是保持滚动位置。

我的问题是;有没有办法在thisModal Popup Extender面板中保持滚动位置?

3 个答案:

答案 0 :(得分:2)

使用的代码(供参考)是:

var iST;
$(document).ready(function() {
getScrollPosition();
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(getScrollPosition);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(setScrollPosition);
});

function pageLoad() {
    var popup = $find('<%=MODALPOPUPNAME.ClientID%>');
    popup.add_shown(setScrollPosition);
}

function getScrollPosition() {
    iST = $("#<%=PANELNAME.ClientID %>").scrollTop();
}
function setScrollPosition() {
    $("#<%=PANELNAME.ClientID %>").scrollTop(iST + 20);
}

感谢。

答案 1 :(得分:0)

花了几个小时,我才得以实现。假设我们有一个名为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

就是这样。显示弹出窗口时,它将回滚到最后标记的向下滚动位置。希望对您有所帮助:)

答案 2 :(得分:-1)

您可以更改特定Div的javascript代码。

<script type="text/javascript">
    function pageLoad() {
        $('#DataDiv').scrollTop(document.getElementById('<%=hfScrollT.ClientID %>').value).scrollLeft(document.getElementById('<%=hfScrollL.ClientID %>').value);
    }
</script>

希望有帮助!