UpdateProgress срабатывает после первого обновления панели - PullRequest
0 голосов
/ 03 июня 2019

У меня есть UpdateProgress, связанный с UpdatePanel. Проблема в том, что он не запускается до второго обновления.

Ì имеет общий элемент UpdatePanel с ID = "uppGeneric" и дочерний элемент с ID = "uppAgrupar", внутри которого имеется кнопка LinkButton. Когда я нажимаю на LinkButton, он не запускает панель UpdateProgress.

<asp:UpdatePanel ID="uppGeneric" runat="server" UpdateMode="Conditional">
   <ContentTemplate>
      <div class="row">
         <div class="col-md-12 mx-auto">
             <br />
             <asp:UpdateProgress ID="upCargando" DynamicLayout="true" runat="server" AssociatedUpdatePanelID="uppAgrupar">
                  <ProgressTemplate>
                      <div class="progress">
                          <div class="indeterminate" style="width: 100%"></div>
                      </div>
                  </ProgressTemplate>
              </asp:UpdateProgress>
          </div>
       </div>

     <div class="row">
          <div class="col-md-6 mx-auto">
             <asp:UpdatePanel ID="uppAgrupar" runat="server" UpdateMode="Conditional">
                   <ContentTemplate>
                        <asp:LinkButton ID="btnAgrupar" runat="server" CssClass="el_s btn btn-info btn-block" OnClick="btnAgrupar_Click"><i class="fa fa-search"></i> (S) BUSCAR</asp:LinkButton>
                   </ContentTemplate>
                   <Triggers>
                      <asp:AsyncPostBackTrigger ControlID="btnAgrupar" EventName="Click" />
                   </Triggers>
             </asp:UpdatePanel>
         </div>
      </div>

И в коде позади я выполняю (чтобы быть уверенным):

uppAgrupar.Update();

но ничего не происходит.

1 Ответ

0 голосов
/ 04 июня 2019

Я нашел частичное решение.

UpdateProgress

<asp:UpdateProgress ID="upCargando" runat="server" AssociatedUpdatePanelID="uppAgrupar">
                            <ProgressTemplate>
                                <div class="progress">
                                    <div class="indeterminate" style="width: 100%"></div>
                                </div>
                            </ProgressTemplate>
                        </asp:UpdateProgress>

генерирует следующий HTML и CSS:

enter image description here

Который имеет «display: none;»

Проблема в том, что атрибут display не был установлен на "display: block;" при первом нажатии кнопки.

Итак, мое решение заключалось в создании функции javascript, которая изменяет атрибут отображения, который вызывается при событии "onClientClick".

<asp:LinkButton ID="btnAgrupar" runat="server" CssClass="el_s btn btn-info btn-block" OnClientClick="activar_barra()" OnClick="btnAgrupar_Click"><i class="fa fa-search"></i> (S) BUSCAR</asp:LinkButton>

и функция javascript (она может получить доступ по ClientID, но результат тот же)

    function activar_barra()
    {
        document.getElementsByClassName('progress')[0].parentNode.style.display = "block";
    }
...