我正在尝试使用 asp.net 在 vs2010 中创建报告主机。这是我第一次尝试进行 Web 开发,所以我可能犯了一个非常明显的错误。最终目标是主机不仅向用户显示报告,而且还跟踪他们查看报告的时间。但是,我无法解决这个烦人的问题,即每次我的计时器滴答作响时,都会重新绘制报告。
我有一个 UsageAuditor 控件,它只是一个带有计时器和标签的更新面板:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Timer runat="server" ID="Timer1" Interval="3000" OnTick="Timer1_Tick"/>
<asp:Label ID="lblTime" runat="server" Text="Not updated yet"></asp:Label>
</ContentTemplate>
然后我的报告外壳使用该控件:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<uc1:UsageAuditor ID="ua1" runat="server" />
<rsweb:reportviewer ID="reportViewer" runat="server" Font-Names="Verdana"
Font-Size="8pt" InteractiveDeviceInfos="(Collection)" ProcessingMode="Remote"
WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt"
Height="800px" Width="1000px" AsyncRendering="True">
</rsweb:reportviewer>
</form>
</body>
计时器滴答只是更新标签:
protected void Timer1_Tick(object sender, EventArgs e)
{
lblTime.Text = String.Format("Updated at {0}", DateTime.Now.ToString());
}
所以我想通过在 UpdatePanel 之外定义我的 ReportViewer,UpdatePanel 会自己重绘,但页面的其余部分不会更新。但是,每次计时器滴答作响时,它都会重新绘制报告。这很烦人,因为如果您在报表上打开日历控件,它会关闭它。目前出于测试目的,计时器每三秒滴答一次,这是不现实的,但我仍然不希望在用户尝试使用它时重绘报告控件,而不管时间间隔如何。有任何想法吗?