javascript - 如何将加载 UpdatePanel 内容推迟到页面呈现之后?

标签 javascript asp.net updatepanel

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/

相关文章:

ASP.NET 部分回发期间打开时的 jQueryUI 日期选择器行为 : year becomes 1899 or 1900

javascript - JQuery 高度不返回准确高度

javascript - getUsermedia() 前置摄像头错误错误 : "Notreadableerror: could not start video source"

javascript - 创建通用函数

asp.net - 使用 Mechanize 获取 ASP.NET 身份验证 cookie

asp.net - 如何从 Javascript 将 TableRow/TableCell 添加到 ASP.NET 表?

asp.net - 为什么 CssStyleCollection.Remove() 在这里失败了?

javascript - 使用 RouteProvider 加载 AngularJs 时出错

asp.net - 丢失 session 状态

UpdatePanel 内的 ASP.NET 标签未更新