如何在页面呈现之后推迟加载UpdatePanel内容?

Bry*_*yan 4 javascript asp.net updatepanel

ASP.NET的旧手,UpdatePanel的新手.我有一个执行相当长的SQL查询的报告页面...现在大约需要10秒钟.我想要做的是让我的页面完全呈现,带有一些占位符文本(正在加载...),然后让UpdatePanel启动实际耗时的报告过程,并在完成后呈现报告.

所以...我的理论是使用RegisterStartupScript()来启动它并从GetPostBackEventReference()中删除字符串以触发UpdatePanel更新.出现一些问题:

1)我可以实际使用UpdatePanel的GetPostBackEventReference,还是需要以其他方式触发它?在更新面板内的按钮上使用此方法?

2)当回发引用是UpdatePanel时会触发什么事件?我不清楚.我必须在某个地方调用我的数据绑定代码!再说一次,也许我需要在里面使用一个按钮?

RPM*_*984 12

最近我必须做一些非常相似的事情,这就是我做的事情(对或错):

诀窍是"隐藏的异步回发触发器".

<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;" />
Run Code Online (Sandbox Code Playgroud)

然后从JavaScript开始,只要您想触发异步回发,就可以执行以下操作:

__doPostBack('<%= hiddenAsyncTrigger.ClientID %>', 'OnClick');
Run Code Online (Sandbox Code Playgroud)

在我的示例中,我需要从特定的JS事件触发异步回发.但你可以把它附加到doc准备好了.

我似乎记得尝试@Marko Ivanovski的方式,但由于某种原因它没有用.我认为您需要指定一个"可回发"控件(即按钮)来触发回发.

HTH.

  • 宾果,这就行了.稍微修改一下,因为我使用了GetPostBackEventReference(btnTrigger,string.Empty); 然后是RegisterStartupScript(). (2认同)