UpdateProgress не отображается при частичной обратной передаче - PullRequest
0 голосов
/ 08 февраля 2011

У меня есть некоторая трудоемкая серверная функция, поэтому я стараюсь выполнять каждую функцию шаг за шагом и информировать пользователя о прогрессе.

Итак, мой подход был:

  • создать видимую кнопку, которая выполняет асинхронную обратную передачу и обработать событие click на стороне сервера
  • выполнить первую функцию
  • обновить метку, чтобы сообщить пользователю, была ли функция выполнена успешно
  • зарегистрировать javascript, который запускает событие click второй невидимой (Style="display: none") кнопки, которая также зарегистрирована как асинхронный триггер для UpdatePanel
  • отправить страницу обратно клиенту и выполнить скрипт для нажатия невидимой кнопки
  • обрабатывать нажатие кнопки, информировать пользователя, регистрировать js для третьей невидимой кнопки, выполнять нажатие кнопки и так далее ...

Но проблема в том, что элемент управления UpdateProgress не будет отображаться, хотя я правильно установил AssociatedUpdatePanelID. Все функции запускаются правильно, а метки обновляются, только UpdateProgress остается невидимым.

Посмотрите пожалуйста:

<asp:UpdateProgress ID="UpdateProgress1" DynamicLayout="true" runat="server" AssociatedUpdatePanelID="UpdFormPanel" DisplayAfter="0">
    <ProgressTemplate>
        <div class="progress">
            <asp:Image ID="ImgProgress" runat="server" ImageUrl="~/images/ajax-loader-arrows.gif"
                ToolTip="loading..." />&nbsp;please wait...
        </div>
    </ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdFormPanel" runat="server" UpdateMode="conditional" ChildrenAsTriggers="false">
    <ContentTemplate>
      ....
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnShowUploadResult" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="btnExtractFile" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="btnShowResultView" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>
<asp:Button ID="btnShowUploadResult" runat="server" CausesValidation="false" Text="hidden" Style="display: none" />
<asp:Button ID="btnExtractFile" runat="server" CausesValidation="false" Text="hidden" Style="display: none" />
<asp:Button ID="btnShowResultView" runat="server" CausesValidation="false" Text="hidden" Style="display: none" />

На этом пути я регистрирую JavaScript в обработчике событий нажатия кнопки:

AjaxControlToolkit.ToolkitScriptManager.RegisterStartupScript(Me.UpdFormPanel, GetType(String), "ShowResultView", "$get('" & Me.btnShowResultView.ClientID & "').click();", True)

Заранее спасибо.

1 Ответ

1 голос
/ 09 февраля 2011

Вы устанавливаете включенные или видимые свойства в коде позади где-нибудь? Это может привести к тому, что страница не будет отображать элемент управления. Вы убедились, что HTML есть? Вы уверены, что правильно меняете стиль, когда это необходимо? Используйте firebug и установите точки останова. Пройдите через JS.

...