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

나에게로 페이지를 얻을, 나는 다음에 RDLC 렌더링하려면이 잘 작동 총 페이지

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

를 얻을 수 Itextsharp 라이브러리에서 pdfreader 클래스를 사용하여, PDF 보고서를 렌더링했다 pdf 형식