我試圖創建一個使用asp.net VS2010中報告的主機。這是我第一次嘗試做Web開發,所以我可能會犯一個非常明顯的錯誤。最終目標是一臺主機,不僅顯示給用戶的報告,但還跟蹤他們多久看報告。但是,我無法擺脫這個令人討厭的問題,即每次我的計時器打勾報告都會重繪。停止的ReportViewer當計時器滴答
我有一個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());
}
所以我想通過definining在UpdatePanel UpdatePanel的將重繪iteself之外我的ReportViewer,但頁面的其餘部分將不會被更新。但是,每當計時器滴答時,都會重新繪製報告。這非常煩人,因爲如果您在報告中打開日曆控件,它會關閉它。目前用於測試目的計時器滴答每三秒鐘這是不現實的,但我還是不希望報告控制越來越重繪當用戶試圖不論間隔的使用它。有任何想法嗎?
如果是我,我會將計時器移動到客戶端與像jQuery或純JavaScript的東西。 (而不是在服務器上)。如果可能的話,它會解決您的問題,並在我看來更有效率。 – puddleglum