ASP.NET 老手,UpdatePanel 新手。我有一个执行相当长的 SQL 查询的报告页面……现在大约需要 10 秒。我想要做的是让我的页面完全呈现,带有一些占位符文本(正在加载...),然后让 UpdatePanel 启动实际耗时的报告过程并在完成后呈现报告。
所以...我的理论是使用 RegisterStartupScript() 来启动它并从 GetPostBackEventReference() 中删除字符串以触发 UpdatePanel 更新。出现了一些问题:
1) 我真的可以使用带 UpdatePanel 的 GetPostBackEventReference 还是我需要以其他方式触发它?在更新面板内的按钮上使用此方法?
2) 当回发引用是 UpdatePanel 时触发什么事件?我不清楚。我必须在某处调用我的数据绑定(bind)代码!再一次,也许我需要在里面使用一个按钮?
最佳答案
我最近不得不做一些非常相似的事情,这是我做的(对或错):
诀窍是“隐藏的异步回发触发器”。
<asp:UpdatePanel ID="upFacebookImage" runat="server">
<ContentTemplate>
<!-- Your updatepanel content -->
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="hiddenAsyncTrigger" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="hiddenAsyncTrigger" runat="server" Text="AsyncUpdate" style="display:none;" />
然后在 JavaScript 中,只要你想触发异步回发,你就可以这样做:
__doPostBack('<%= hiddenAsyncTrigger.ClientID %>', 'OnClick');
在我的示例中,我需要从特定的 JS 事件触发异步回发。但您可以将其附加到准备就绪的文档中。
我似乎记得尝试过@Marko Ivanovski 的方法,但由于某种原因它没有奏效。我认为您需要指定一个“可回发”控件(即按钮)来触发回发。
HTH.
关于javascript - 如何将加载 UpdatePanel 内容推迟到页面呈现之后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3877951/