UpdateProgress 在第一次面板更新后触发

UpdateProgress fire after first panel update

我有一个与 UpdatePanel 关联的 UpdateProgress。问题是它直到第二次更新才触发。

Ì 有一个 ID="uppGeneric" 的通用 UpdatePanel 和一个 ID="uppAgrupar" 的子面板,其中有一个 LinkBut​​ton。当我单击 LinkBut​​ton 时,它不会触发 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();

但什么也没发生。

我找到了部分解决方案。

更新进度

<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:

其中有"display: none;"

问题是第一次单击按钮时未将显示属性设置为 "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";
    }