首先显示对话框,然后设置滚动

时间:2013-10-15 17:53:37

标签: c# jquery asp.net scrollbar jdialog

我正在使用asp.net和ajax进行开发。

我遇到了jQuery和滚动的问题。

从c#使用以下代码在回发后显示jQuery对话框

                    script += "$(document).ready(function () {";
                script += "$('#dialog').dialog({";
                script +="        autoOpen: true,";
                script += "       show: {effect: 'fade', duration: 2000},";
                script +="        hide: {effect: 'fade', duration: 500},";
                script +="        modal: true,";
                script +="        resizable: false,";
                script +="        open: function(event, ui) {";
                script +="            setTimeout(function(){";
                script +="                $('#dialog').dialog('close');    ";
                script +="            }, 8000);";
                script +="        }";
                script +="    }); ";
                script += "setTimeout(function() {window.location.href = \"http://localhost:7713/xxxx/xxxx.aspx\";}, 9000);";
                script += "});";

                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "showMessage", script, true);

如果我有MaintainScrollPositionOnPostback =“false”,则代码表现良好。但如果我有MaintainScrollPositionOnPostback =“true”则显示jquery Dialog FIRST,然后设置滚动以使对话框位于页面顶部。

任何解决方案?

谢谢!

修改

我在以下代码中找到了解决方案:

     . ui-dialog {margin: 0 auto; position: fixed;}

另一种替代解决方案是:http://www.cleancode.co.nz/blog/240/jquery-dialog-position-problem-web-form-postback

这是ASP.NET中非常常见的问题

谢谢大家!

1 个答案:

答案 0 :(得分:0)

我知道这是一个老问题,但我面临同样的问题,这可能对其他人有用。

(首先,您应该在客户端创建一个函数并调用它,而不是使用您的代码设置字符串变量。您会发现它更容易维护。)

因此,为了让您的对话框无法滚动到顶部,只需调用:

WebForm_RestoreScrollPosition();
在打开jquery对话框之前