我有一个非常大的页面需要一些时间来提取数据和加载。当第一次导航到.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可见状态,但仍然无法正常工作。 gridview永远不会出现。
有趣的是,如果我在页面上放了一个按钮,那么
protected void ButtonHide_Click(object sender, EventArgs e)
{
if (GridView1.Visible)
{
GridView1.Visible = false;
}
else
{
GridView1.Visible = true;
}
}
我可以点击它并隐藏和显示GridView多次我想要没有问题。为什么计时器有所不同?
答案 0 :(得分:0)
在.aspx代码中,我设置了一个计时器,TimerRefresh
但是将其关闭。然后当页面开始加载时,如果这不是PostBack(第一次),我打开TimerRefresh
。它立即滴答作响。这会导致页面重新加载,这将是一个PostBack。这会导致UpdateProgress1
显示。 PageLoad()
将无所作为,因为这是一个PostBack。 TimerRefresh_Tick(object sender, Eventargs e)
触发,因为这是由计时器滴答声触发的。这会导致它关闭计时器再次运行并加载包含数据的页面。一旦完成,UpdateProgress1
就会消失。
在Page_Load()
if (!IsPostBack)
{
TimerRefresh.Enabled = true;
}
在TimerRefresh_Tick(object sender, EventArgs e)
TimerRefresh.Enabled = false;
codeToLoadDate();
.aspx
<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>
<asp:Timer ID="TimerRefresh" runat="server" Interval="100"
ontick="TimerRefresh_Tick" Enabled="False">
<%-- My page loading stuff - controls that would hold data -->
</ContentTemplate>
</asp:UpdatePanel>