UpdateProgress 在第一次面板更新后触发
UpdateProgress fire after first panel update
我有一个与 UpdatePanel 关联的 UpdateProgress。问题是它直到第二次更新才触发。
Ì 有一个 ID="uppGeneric" 的通用 UpdatePanel 和一个 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();
但什么也没发生。
我找到了部分解决方案。
更新进度
<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";
}
我有一个与 UpdatePanel 关联的 UpdateProgress。问题是它直到第二次更新才触发。
Ì 有一个 ID="uppGeneric" 的通用 UpdatePanel 和一个 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();
但什么也没发生。
我找到了部分解决方案。
更新进度
<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";
}