ASP UpdateProgress控制异步页面加载

时间:2017-09-15 10:26:20

标签: asp.net vb.net repeater updateprogress

我有一个异步页面加载,它从API获取数据并将其绑定到更新面板内的转发器,与本地搜索结果分开。

母版页中有一个脚本管理器。

<div class="searchResultContainer" runat="server" id="divApiResults">
<div class="searchResult">
    <asp:UpdatePanel ID="udpApiResults" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">

        <ContentTemplate>

            <asp:UpdateProgress ID="updateProgress" DisplayAfter="1000" runat="server">
                <ProgressTemplate>
                    <div id="lblLoadingApi" runat="server">
                        Loading...
                    </div>
                </ProgressTemplate>
            </asp:UpdateProgress>

            <asp:Label runat="server" CssClass="label searchResultLabel" Text="EXTERNAL SEARCH RESULTS" />

            <asp:Repeater ID="rptApiResults" runat="server">
                <!-- template in here -->
            </asp:Repeater>

        </ContentTemplate>

    </asp:UpdatePanel>
</div>
</div>

但是,更新进度控件从不在页面加载时显示,也不会在转发器排序或页面更改时显示。如何让它显示&#34; loading&#34;直到所有数据都加载到转发器中?

1 个答案:

答案 0 :(得分:0)

我做错了。更新进度模式将永远不会出现在异步页面加载上,因为它已在页面呈现之前加载。正如在UpdateProgress出现时进行分页和排序时回复的那样。

我的解决方案是在页面加载后异步加载它(因为它不会影响页面的其余部分,因为它不会影响页面的其余部分),通过使用一段jQuery来点击&#34 ;触发&#34; $(document).ready(...)上的按钮,然后关闭以获取API结果。这也将UpdateProgress设置为可见,在结果加载完毕后消失了。