我的网页有问题。该页面用于显示性能统计信息。 它有一个gridview并使用MySql服务器数据源。加载页面时,填充页面的查询大约需要30秒到2分钟。在此期间,用户看到一个白色的空白页面。有没有办法加载母版页并向用户显示页面正在加载?
这是页面代码:
<%@ Page Title="BSC1" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="BSC1_all.aspx.cs" Inherits="Estat.BSC1.BSC1_all" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>BSC1 Allar Cellur</h2>
<h2 align="center">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></h2><br />
<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="cell" DataSourceID="gull_bsc1"
HorizontalAlign="Center" CellPadding="3">
<AlternatingRowStyle BackColor="#EEEEEE" />
<Columns>
<asp:TemplateField HeaderText="Cella" SortExpression="cell" FooterText="Cella">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("cell") %>'> </asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# Eval("cell","http://intra/OneCellBSC1/OneCellBSC1.aspx?cell={0}") %>'
Target="_blank"><%# Eval("cell") %></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ph_traffic" HeaderText="PH Traffic"
SortExpression="ph_traffic" FooterText="PH Traffic" />
<asp:BoundField DataField="ph_fravisun" HeaderText="PH Frávísanir"
SortExpression="ph_fravisun" FooterText="PH Frávísanir" />
<asp:BoundField DataField="ph_slit" HeaderText="PH Slit"
SortExpression="ph_slit" FooterText="PH Slit" />
<asp:BoundField DataField="avg_traffic" HeaderText="Meðaltals Traffic"
SortExpression="avg_traffic" FooterText="Meðaltals Traffic" />
<asp:BoundField DataField="sum_fravisun" HeaderText="Samtals Frávísanir"
SortExpression="sum_fravisun" FooterText="Samtals Frávísanir" />
<asp:BoundField DataField="sum_slit" HeaderText="Samtals Slit"
SortExpression="sum_slit" FooterText="Samtals Slit" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="gull_bsc1" runat="server"
ConnectionString="<%$ ConnectionStrings:gull_agg_bsc1 %>"
ProviderName="<%$ ConnectionStrings:gull_agg_bsc1.ProviderName %>"
SelectCommand="SELECT cell, ph_traffic, ph_fravisun, ph_slit, avg_traffic, sum_fravisun, sum_slit FROM bsc1_aggregete_cell_to_day WHERE timi_tolfraedi LIKE DATE_SUB(CURDATE(),INTERVAL 1 DAY)"
CacheDuration="86400" EnableCaching="True">
</asp:SqlDataSource>
答案 0 :(得分:2)
我建议您使用AJAX加载报告异步。这样,您的网页加载速度很快,用户就可以与其进行互动,然后报告就会加载而不会阻止用户。
但是,我有一个解释,让您知道为什么用户在您的情况下看不到任何内容。 AMAIK,当用户访问您的页面时,他/她的浏览器会向您的页面发送HTTP请求,这意味着您的服务器作为响应发送HTML文档(在这种情况下)或任何其他Internet媒体类型(MIME类型),如要下载的文件,CSS文件,图像等。
浏览器然后开始下载服务器的响应。但是,大多数浏览器都不会显示文档,直到它完成(我不知道流式传输,浏览器获取数据并显示回来,然后是另一个块) ,并显示它,等等。)
这意味着,当您的网格从数据库加载数据时,发送回用户的HTML数据不完整,因此浏览器无法呈现它,因此用户看到空白页面。
另外,您应该注意到,在HTTP请求中下载的所有内容都是同步下载的,也就是说,它们会阻止用户使用网页,而他们会被下载。例如,如果您有一个包含10个大图像的网页,您通常无法与页面进行交互,而这些图像会被下载。
您尝试做的事情,在名为信息中心的概念中是必需的,其中许多报告是从数百万(或数十亿)的数据库记录中收集在一起的。仪表板需要很长时间才能获取数据。因此,显示仪表板的常见做法是向用户发送一个简单页面,其中包含许多占位符,然后使用AJAX技术加载异步这些占位符的内容。