3

Я являюсь частью команды, разрабатывающей специальное приложение SharePoint, которое использует отчеты AngularJS и SSRS. В принципе, приложение позволяет пользователю выбирать отчет, выбирать набор параметров, а затем просматривать отчет в пределах сайта/приложения.angularjs nginclude to reportServer url

Все работало нормально, пока мы не включили отчет ToolBar. В этот момент отчет прекратил оказание. Была видна только панель инструментов.

Вот что мы делаем:

HTML, для той части приложения, которая отображает отчет:

<section class="left-panel report-view-panel ssrsReport show"> 
    <h1>{{CurrentReport.Title}}</h1> 
    <button class="btn-report-close" ng-click="closeReport()" type="button">Close</button> 
    <div class="scroll-list"> 
     <figure class="report"> 
      <div class="sample-report"> 
       <div ng-include='CurrentReportURL'></div> 
      </div> 
     </figure> 
    </div> 
</section> 

В контроллере JavaScript, мы строим вне сервера отчетов URL (CurrentReportURL) в что-то вроде:

http://ourreportserver.com/_vti_bin/ReportServer?http://ourreportserver.com/Our%20Reports/Report1.rdl&rs:Command=Render&rc:Toolbar=false&rc:Parameters=false&Param1=41001&Param2=08&Param3=0

Мы говорим это, чтобы сделать отчет, скрывая панель и скрытие параметров выбор. Это прекрасно работает. Отчет выглядит так, как ожидалось.

Однако изменение URL к этому:

http://ourreportserver.com/_vti_bin/ReportServer?http://ourreportserver.com/Our%20Reports/Report1.rdl&rs:Command=Render&rc:Toolbar=true&rc:Parameters=false&Param1=41001&Param2=08&Param3=0

причины только панель инструментов для визуализации. Нет отчета. Если я копирую этот же URL-адрес и просто открою его в окне браузера, отчет будет выглядеть так, как ожидалось.

Я углубился и посмотрел на оба сценария, используя вкладку «Инструменты разработчика» Chrome и Chrome. Было несколько различий в вызовах, которые были сделаны между URL-адресом в ng-include и URL-адресе в окне браузера. Тем не менее, тот, который выделялся больше всего, был POST для RSViewerPage.aspx со всеми средствами просмотра отчетов и параметрами отчета, преобразованными в соответствующие параметры ReportViewer. (Я бы опубликовал эту фактическую ссылку, но SO сказал мне, что мне нужна репутация 10, чтобы сделать это).

Я получаю те же результаты в Chrome и IE10.

Я ищу какое-то руководство относительно того, почему версия ng-include не делает POST? Я считаю, что этот POST имеет какое-то отношение к сеансу SSRS, который отслеживается только с помощью панели инструментов, но я действительно не уверен.

Любое руководство будет принята с благодарностью!

ответ

3

я собираюсь начать интеграцию SSRS в angularjs приложение, я думал об использовании IFRAME и изменяя src атрибута iframe к URL-адресу выбранного отчета.

Я даже не рассматривал попытку использования ng-include, считая, что html, возвращаемый ssrs, будет предназначен для работы с моделью postback/viewstate asp.net. Используя iframe, эта модель postback/viewstate будет изолирована на «острове» на странице и не повлияет на родительский контейнер.

Christian

+0

В конечном итоге мы закончили использование iframe. – jeffproe

+0

Да, это сработало для нас. – Christian

0

Попробуйте

<div ng-include src="CurrentReportURL"></div> 

Является ли это рабочий в любом браузере?

Если он работает в Chrome, но не IE, убедитесь, что вы следуете за угловым разделом IE.

например:

<!--[if lte IE 8]> 
     <script> 
     document.createElement('ng-include'); 
     </script> 
    <![endif]--> 

Кроме того, для динамических URL-адресов, проверьте: this link

+1

Я попробовал вышеуказанное предложение, и это не имело значения. И нет, это не работает ни в одном браузере. – jeffproe

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