我使用了一个用户控件,并添加了我的报表查看器和自定义工具栏。我也想为它创建一个自定义导航,但由于某些原因,当我想要检查总页面以决定是否显示导航按钮时,它要么返回0,要么返回"This表达式导致副作用,将不会被求值“错误。
我的想法已经用完了,不知道从哪里开始..
<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)中的数据绑定事件上实现的。任何帮助都是非常感谢的。
发布于 2012-07-12 16:01:31
这个msdn question可能就是您的答案,只有在报表呈现之后,才能调用GetTotalPages()方法。相关的引述:
在呈现报表的第一页之前,报表服务器不会计算总页数。在ASP.Net事件PreRender之前,ReportViewer不会向服务器请求页面呈现。如果在触发ReportViewer.PreRender事件之后将GetTotalPages调用移动到某个点,则应该会获得所需的行为。
另请参阅ASP.NET Page Lifecycle以供参考。
发布于 2018-02-17 03:57:29
为了获得适合我的页面,我必须以pdf格式呈现报表,然后使用Itextsharp库中的pdfreader类来获取总页面
var bytes=viewer.Render("PDF");
PdfReader reader = new PdfReader(bytes);
var pageCount = reader.NumberOfPages如果您想要以pdf格式呈现您的rdlc,这将非常有效。
https://stackoverflow.com/questions/10887981
复制相似问题