2012-10-30 73 views
1

我有一個用戶控件(ascx)包含ReportViewer。 我需要獲取報告中的總頁數(例如,RViewer.LocalReport.GetTotalPages())。 我讀到了,這個值在Reportviewer事件PreRender後可用。 此事件發生後,在aspx頁面(包含此ascx); Render事件,我得到的值爲0.Reportviewer內用戶控制問題

我試着將Reportviewer直接添加到另一個aspx頁面。然後,在該aspx頁面的Render事件中,我爲Total頁面獲得了正確的值。

爲什麼我沒有得到先前的方法?

回答

1

你如何將用戶控件添加到頁面?在標記?還是動態?

鑑於Report Viewer控件位於用戶控件中,您如何通過用戶控件向頁面傳遞值?

我相信(我可能是錯的),你的用戶控件預渲染將在頁面的預渲染之後觸發。因此,如果您通過用戶控件將頁面的預渲染中的報表查看器與用戶控件聯繫起來,則用戶控件預渲染以及ReportViewer預渲染將不會發生。

如果這是正確的,解決問題的一種方法是在用戶控件的預渲染中引發一個事件,這會在事件參數中傳遞頁面計數。 (您可以創建一個自定義事件參數類,或者可以重新使用ReportViewer的命名空間中的一個。)您的頁面將擁有該值的處理程序,並執行處理程序中的值而不是處理該值時所需的任何操作-render事件處理程序。