2016-01-29 2 views
0

Я пытаюсь получить только одну страницу с удаленным сообщением, но вместо этого я получаю целый многослойный отчет с удаленным сервера отчетов:Запроса на одной странице отчета в удаленном Report Viewer/ServerReport

var rsReports = new Microsoft.Reporting.WebForms.ReportViewer 
{ 
    ProcessingMode = ProcessingMode.Remote, 
    ShowParameterPrompts = false, 
    CurrentPage = page // In theory this should be enough, but makes absolutely no difference 
} 
rsReports.ServerReport.ReportServerCredentials = new ReportServerCredentials(username, password, domain); 
rsReports.ServerReport.ReportServerUrl = remoteServerUrl; 
rsReports.ServerReport.ReportPath = reportPath; 
rsReports.ServerReport.SetParameters(parameters); 
rsReports.ServerReport.Refresh(); 

return rsReports.ServerReport.Render("HTML4.0"); // Returns a byte[] of html containing all report pages 

Есть ли способ запросить только одну страницу с удаленного сервера отчетов?

ответ

0

Используя api reportExecution, вы найдете параметр DeviceInfo. Это структура конфигурации xml, которая содержит дополнительную информацию для нескольких целевых устройств вывода. Одним из свойств для HTML40 называется Section. Свойство DeviceInformation.Section позволяет указать страницу в отчете для возврата. Как это относится к элементу управления ReportViewer, поэтому содержимое элемента управления просмотром отчета по умолчанию возвращается в html, поэтому это будет доступный параметр, если вы можете установить структуру DeviceInfo с помощью метода рендеринга. Мне удалось найти информацию here, относящуюся к настройке информации об устройстве через url. Возможно, это помогает.

На самом деле, я перечитываю ваш вопрос, и кажется, что вы просите вы можете получить только страницу 10 из 600-страничного отчета таким образом, чтобы все 600 страниц не отображались, а только страница 1/1 была вернулся вместо 10/??? это верно? Если это так, тогда вам придется поместить механизм фильтрации страниц в ваш набор данных или сам элемент отчета. Поведение по умолчанию заключается в том, чтобы отобразить достаточно отчета для получения показателей подкачки. Таким образом, иногда вы увидите страницу 1/3, а иногда и страницу 1/600 (после выбора последней страницы) и другие страницы страницы 1/???, эту информацию можно получить после рендеринга отчета в RenderInfo. Если вы хотите, чтобы зритель подумал, что есть только одна страница, вам придется обмануть его. Мое первое предложение будет работать, если вам нужна страница 10/??? вернуться с пейджингом и всем.

+0

В идеале я бы не хотел получать все 600 страниц с сервера. На самом деле я не хочу, чтобы сервер запрашивал базу данных, чтобы получить записи для заполнения 600 страниц. Предположим, у меня нет доступа к изменению отчетов и работе с тем, что у меня есть на сервере отчетов. Я подозреваю, что должен быть способ достичь этого, поскольку, когда я запрашиваю свои отчеты на сервере отчетов напрямую, кажется, что запрашивает базу данных для каждой страницы отдельно, а не загружает все это. –

+0

Если вы нажмете его на последнюю страницу >>, то он будет перебирать все страницы. При этом, если вам нужна страница 60 из 300, тогда будет повторяться 60 страниц. Вот почему предлагается создать фильтр, например, принимать и пропускать параметры, если ваши подробные данные начинаются и заканчиваются на одном и том же. –

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