2015-06-30 3 views
0

У меня есть UpdateProgress на главной странице, которая появляется в любом сообщении async для страниц содержимого. Работает отлично.Как использовать UpdateProgress на главной странице и странице содержания

На одной из страниц содержания у меня есть еще один UpdateProgress, который работает на TextChanged события текстового поля. Когда возникает асинхронный пост, появляются оба элемента управления UpdateProgress.

Я попытался использовать AssociatedUpdatePanelID на UpdateProgress на странице содержания, но он не работает. Оба по-прежнему появляются.

Как отключить UpdateProgress на главной странице для конкретного UpdatePanel?

ответ

0

Установить EnablePartialRendering = "false" в ScriptManager, это фактически отключит поведение AJAX UpdatePanel. Таким образом, вы можете поместить свойство на этой странице, чтобы страницы содержимого могли включать/отключать асинхронный способ обратной передачи этой страницы.

<asp:ScriptManager EnablePartialRendering="false"></asp:ScriptManager> 
+0

Только что попробовал это, и до сих пор оба элемента управления UpdateProgress появляться. – user3656029

+0

ok Я думаю, эта статья поможет вам решить проблему. Http://forums.asp.net/t/1037631.aspx?UpdateProgress+and+AssociatedUpdatePanelID+not+working+on+master+page – Nikolay

+0

Я не хочу UpdateProgress на главной странице, связанной с любой UpdatePanel. Я хочу, чтобы это отображалось на всех асинхронных почтовых серверах, за исключением определенных панелей обновления страниц контента. – user3656029

0

Это может помочь кому-то, следующий код JavaScript сделал это для меня:

var disableProgressCtrls = ["MyControl1", "MyControl2"]; 
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_initializeRequest(InitializeRequest); 
function InitializeRequest(sender, args) { 
    var updateProgress = $get("MyMasterPageUpdateProgress"); 
    var postBackElement = args.get_postBackElement(); 
    if (disableProgressCtrls.indexOf(postBackElement.id) > -1) { 
     updateProgress.control._associatedUpdatePanelId = 'dummyId'; 
    } else { 
     updateProgress.control._associatedUpdatePanelId = null; 
    } 
} 
0

Вот удивительно простой (но функциональный и в настоящее время работает) решение, представленное здесь. Это волшебство возникает, когда каждый WebForm-aspx содержит AJAX-UpdatePanel (s), и каждый асинхронный postback, определенный в < Triggers>, вызывается UpdateProgress, который будет показан. Кнопки с PostbackURL НЕ покажут UpdateProgress. Значение «DisplayAfter» помогает контролировать условия синхронизации, когда изображение действительно отображается.

В MasterPage, место код (сниппет) для UpdateProgress следующим образом:

<body class="BodyStandard"> // NOTE: my BodyStandard is not relevant to this solution. 
<form id="form1" runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
    <div> 
    <asp:UpdateProgress ID="updprgMain02" runat="server" DisplayAfter="100"> 
     <ProgressTemplate> // NOTE: apply your wait-image spinner, not mine. 
      <img src="Images/PleaseWait.gif" alt="Please wait..."/><br /><br />&nbsp;&nbsp;Please wait...&nbsp;&nbsp; 
     </ProgressTemplate> 
    </asp:UpdateProgress> 
    </div> 
...etc... 

разместить расположение UpdateProgress при вызове во время выполнения, используйте этот CSS в стилях Masterpage следующим образом: Обратите внимание, что идентификатор элемента управления соответствует имени стиля CSS. ТАКЖЕ - содержание пожалуйста, ожидание определяется в разметке UpdateProgress и отформатирован в соответствии с CSS, который следует:

#updprgMain02 { 
    background: url(Images/PleaseWait.gif) no-repeat 50px 50px; 
    padding: 3em; 
    text-align: center; 
    vertical-align: middle; 
    position:fixed; 
    z-index: 16000; 
    top: 10em; 
    left: 36em; 
    /* IE */ 
    -moz-opacity: 1.0; 
    /* Mozilla */ 
    opacity: 1.0; 
    background-color: gold; 
    color: black; 
    font-weight: bold; 
    font-size: large; 
} 

Ниже приведен снимок, пожалуйста, ожидания изображение (GIF).

enter image description here

Смежные вопросы