2013-10-15 1 views
1

Я разрабатываю 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 = «ложно» код выполняет хорошо. Но если у меня есть MaintainScrollPositionOnPostback = "true", показывает, что jquery Dialog FIRST и THEN устанавливает прокрутку так, чтобы диалог находился в верхней части страницы.

Любое решение?

Спасибо!

EDIT:

Я нашел решение в следующем коде:

 . 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

Переведенное название. – tnw

+0

Хорошо, извините ...... –

ответ

0

Я знаю, что это старый вопрос, но я столкнулся с той же проблемой, и это может быть полезно для кого-то еще.

(Во-первых, вы должны создать функцию в стороне клиента и вызвать его, вместо instatiating строковую переменную с кодом. Вы обнаружили, что легче поддерживать.)

Итак, для того, чтобы ваш диалоговое окно не будет прокручиваться вверх, просто вызовите:

WebForm_RestoreScrollPosition(); 

перед открытием диалогового окна jquery.