【问题标题】:ASP UpdateProgress control on async page load异步页面加载上的 ASP UpdateProgress 控件
【发布时间】:2017-09-15 10:26:19
【问题描述】:

我有一个异步页面加载,它从 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>

但是,更新进度控件永远不会在页面加载或转发器排序或页面更改时显示。如何让它显示“正在加载”,直到所有数据都加载到转发器中?

【问题讨论】:

  • 我已经有一段时间没有使用这个了,在你的 UpdatePanel 上尝试 UpdateMode="Always" 看看它是否有效。我倾向于记得必须这样做。
  • 这并没有改变任何东西。我确实将ClientIDMode="AutoID" 放在页面顶部,为转发器添加了一个 AsyncPostBackTrigger,现在它在分页和排序时加载 UpdateProgress,而不是在页面加载时
  • 单步执行,看起来在页面实际显示之前所有数据都已绑定和加载(我猜是因为Page_Load方法是异步的),但当然加载所有数据需要一段时间数据,因此我需要 UpdateProgress 控件

标签: asp.net vb.net repeater updateprogress


【解决方案1】:

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

我的解决方案是在页面加载后异步加载它(因为它在更新面板中,它不会影响页面的其余部分),通过使用一段 jQuery 单击$(document).ready(...) 上的“触发”按钮,然后去获取 API 结果。这也将 UpdateProgress 设置为可见,在结果加载完成后消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-04
    • 2012-06-14
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多