繁体   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