我有一个非常大的页面,需要一些时间来提取数据和加载。当第一次导航到 .aspx 页面时,我希望它有一个很好的加载 .png 图像,这样人们就不会在窗口显示之前关闭它。我试过放一个 asp:UpdateProgress 但这直到页面加载后才显示出来,我在页面上做了一些事情。如何在页面的其余部分加载之前先获取加载屏幕?以下是我尝试过的不起作用的方法。
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="10">
<ProgressTemplate>
<div id="updatestatus" class="shadow">
<asp:Label ID="Label12" runat="server" Text="Loading...">
</asp:Label>
<asp:Image ID="Image1"
runat="server" ImageUrl="~/images/1status.png" />
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%-- My page loading stuff -->
</ContentTemplate>
</asp:UpdatePanel>
我也试过用计时器。这里变得有趣了。ContentTemplate 内的标签在勾选时显示良好。我放置在内容模板中的 GridView 没有。
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Image ID="Image1" runat="server" ImageUrl="~/images/1status.png" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" Visible="false">
<ContentTemplate>
<!-- My page loading stuff -->
</ContentTemplate>
</asp:UpdatePanel>
<asp:Timer ID="Timer1" runat="server" Interval="600" OnTick="Timer1_Tick"></asp:Timer>
protected void Timer1_Tick(object sender, EventArgs e)
{
UpdatePanel1.Visible = true;
Timer1.Enabled = false;
Image1.Visible = false;
}
我什至尝试完全取出更新面板,只是在计时器上更改 gridview 可见状态,但这仍然不起作用。网格视图永远不会出现。
有趣的是,如果我在页面上放一个按钮来执行以下操作,
protected void ButtonHide_Click(object sender, EventArgs e)
{
if (GridView1.Visible)
{
GridView1.Visible = false;
}
else
{
GridView1.Visible = true;
}
}
我可以单击它并隐藏和显示 GridView 任意多次,没有问题。为什么计时器有什么不同?