簡體   English   中英

reportviewer.LocalReport.GetTotalPages()返回0或錯誤

[英]reportviewer.LocalReport.GetTotalPages() returns 0 or error

我正在使用用戶控件,並添加了報表查看器和自定義工具欄。 我也想為其創建自定義導航,但是由於某種原因,當我要檢查頁面總數以決定是否顯示導航按鈕時,它要么返回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;
}

這一切都在我的用戶控件(.ascx)中的databind事件上。 任何幫助都超過了贊賞。

這個msdn問題可能是您的答案,在報表呈現后才能調用GetTotalPages()方法。 相關報價:

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

另請參見ASP.NET頁面生命周期以供參考。

為了獲得與我一樣的頁面,我不得不以pdf格式呈現報告,然后使用Itextsharp庫中的pdfreader類獲取總頁面

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

如果您想以pdf格式呈現rdlc,則此方法效果很好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM