2014-07-30 3 views
3

Я собрал информацию об устранении прокрутки iframe в пользу полос прокрутки браузера при рендеринге reportviewer в iframe. MVC не поддерживает рендеринг средства просмотра отчетов в представлении, следовательно, необходимость в iframe.SSRS Reportviewer в MVC, удаляя полосы прокрутки iframe с помощью автоматической калибровки iframe для соответствия отчету

Редактировать: я изо всех сил пытался найти это решение (ниже), поэтому я думал, что поделюсь.


На странице ASPX (страница, которая будет оказана в IFRAME)

$(function() {//jQuery document.ready 
    // attach an event handler, whenever a 'property' of the reportviewer changes, the function will be called to adjust the height of the iframe 
    Sys.Application.add_load(function() { 
     $find("ReportViewer").add_propertyChanged(viewerPropertyChanged); // $.find("ReportViewer") will return the reportviewer with id "ReportViewer" 
    }); 

    function adjustIframeSize() { 
     // you can play around with these figures until your report is perfect 
     var extraHeightToAvoidCuttingOffPartOfReport = 100; 
     var extraWidthToAvoidCuttingOffPartOfReport = 10; 

     // '#ReportViewer_fixedTable' is a portion of the report viewer that contains the actual report, minus the parameters etc 
     var reportPage = $('#ReportViewer_fixedTable'); 

     // get the height of the report. '#ParametersRowReportViewer' is that top part that contains parameters etc 
     var newHeight = reportPage.height() + $('#ParametersRowReportViewer').height() + extraHeightToAvoidCuttingOffPartOfReport; 

     // same for width 
     var newWidth = reportPage.width() + extraWidthToAvoidCuttingOffPartOfReport; 

     // get iframe from parent document, the rest of this function only works if both the iframe and the parent page are on the same domain  
     var reportIframe = $('#ReportViewerFrame', parent.document); 

     // just make sure that nothing went wrong with the calculations, other wise the entire report could be given a very small value for height and width, thereby hiding the report 
     if(newHeight>extraHeightToAvoidCuttingOffPartOfReport) 
      reportIframe.height(newHeight); 
     if (newWidth > extraWidthToAvoidCuttingOffPartOfReport) 
      reportIframe.width(newWidth); 
    } 

    function viewerPropertyChanged(sender, e) { 
     // only change the iframe dimensions when 'isLoading' 
     if (e.get_propertyName() == "isLoading") { 
      if (!$find("ReportViewer").get_isLoading()) { 
       adjustIframeSize(); 
      } 
     } 
    }; 
}); 
+0

http://stackoverflow.com/questions/38656413/how-to-display-reports-in-table-in-bootstrap - возможно, кто-то может помочь – Sowiarz

ответ

0

решаемые с подобной проблемой, используя набор расширений в ReportViewer for MVC.

@Html.ReportViewer(
    ViewBag.ReportViewer as Microsoft.Reporting.WebForms.ReportViewer, 
    new { scrolling = "no" })