2012-06-04 115 views
1

我正在使用用戶控件,並添加了我的報告查看器和自定義工具欄。我想爲它創建一個自定義導航,但由於某種原因,當我想檢查總頁面以決定是否顯示導航按鈕時,它會返回0或「此表達式會導致副作用,並且不會被評估」錯誤..reportviewer.LocalReport.GetTotalPages()返回0或錯誤

我已經跑出去的想法和不太肯定從這裏去..

<rsweb:reportviewer 
ID="rvReports" 
runat="server" ShowToolBar="False" 
SizeToReportContent="True" AsyncRendering="false" /> 

代碼隱藏:

rds = new Microsoft.Reporting.WebForms.ReportDataSource("dsName", myclasstoload());  
rvReports.LocalReport.DataSources.Add(rds); 
rvReports.PageCountMode = PageCountMode.Actual; 
rvReports.LocalReport.Refresh(); 
rvReports.DataBind(); 


if (rvReports.LocalReport.GetTotalPages() > 1) 
{ 
liFirst.Visible = true; 
liPrevious.Visible = true; 
liNext.Visible = true; 
liLast.Visible = true; 
} 

這是所有關於在數據綁定事件我usercontrol(.ascx)。任何幫助都不勝感激。

回答

1

msdn question可能是您的答案,GetTotalPages()方法不能被調用,直到報告已經呈現之後。相關報價:

報表服務器在渲染報表的第一頁之前不會計算總頁數。 ReportViewer不會從服務器請求頁面呈現,直到ASP.Net事件PreRender。如果在ReportViewer.PreRender事件觸發後將GetTotalPages調用移動到某個點,則應該獲得所需的行爲。

另請參閱ASP.NET Page Lifecycle以供參考。

0

得到的頁面就我而言,我不得不渲染PDF格式的報告,然後使用從iTextSharp的庫pdfreader類來獲得總頁數

var bytes=viewer.Render("PDF"); 
PdfReader reader = new PdfReader(bytes); 
var pageCount = reader.NumberOfPages 

,如果你想使你的RDLC在這工作得很好pdf格式