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; 
} 

все это на DataBind событие в моей usercontrol (.ascx). Любая помощь более чем оценена.

ответ

1

Возможно, это msdn question, метод GetTotalPages() не может быть вызван до тех пор, пока отчет не будет отображаться. Соответствующая цитата:

Сервер отчетов не будет рассчитывать общий счет страницы до отображения первой страницы отчета. ReportViewer не запрашивает рендеринг страниц с сервера до события ASP.Net PreRender. Если вы переместите вызов GetTotalPages в точку после запуска события ReportViewer.PreRender, вы должны получить нужное поведение.

См. Также ASP.NET Page Lifecycle для справки.

0

, чтобы страницы, как для меня, я должен был вынести отчет в формате PDF, а затем с помощью pdfreader класса из библиотеки Itextsharp, чтобы получить общее количество страниц

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

это хорошо работает, если вы хотите сделать свой RDLC в pdf формат

Смежные вопросы