2013-05-17 7 views
4

У меня проблемы со стандартным элементом управления ASP.NET ReportViewer (v11, SQL 2012, VS 2012). Ранее это работало, подключаясь к удаленному серверу SSRS, но во время разработки сайта что-то сломало его, и я изо всех сил пытаюсь изолировать причину.Управление ReportViewer возвращает пустую страницу

Если я создаю простую форму:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ReportTest.aspx.cs" Inherits="ReportTest" %> 

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     This is a test! 

     <rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote"> 
      <ServerReport ReportPath="/Reports/MyTestReport" ReportServerUrl="http://sqlserver/reportserver" />   
     </rsweb:ReportViewer> 
    </div> 
    </form> 
</body> 
</html> 

.. и запустить это, ничего отображается в браузере. Даже текст This is a test!, который указывает на то, что что-то «сбой» на стороне сервера. Резервное копирование этой теории, используя Fiddler, я вижу, что нет попытки связаться с сервером отчетов.

Я включил все исключения в Visual Studio, но ничего не улавливает, и нет ничего очевидного, что я могу видеть на выходе. Элемент управления ReportViewer отображается правильно в режиме разработки, и я переустановил распространяемые компоненты ReportViewer.

+0

Когда вы смотрите «MyTestReport» в менеджере SSRS на «http: // sqlserver/reports» - отображает ли данные? –

+0

Трещил его, см. Мой ответ ниже. Но чтобы ответить на ваш вопрос: да, это так :) – KenD

ответ

3

Я нашел этот вопрос, а точнее два вопроса:

  • мне нужно иметь ScriptManager на странице. Создание совершенно нового проекта с вышеуказанной тестовой веб-страницей вызвало ошибку в требовании ScriptManager, хотя тестовая страница в исходном проекте (и действительно моя исходная страница) не жаловалась на недостающий ScriptManager. Я должен был удалить оригинальный ScriptManager по ошибке. Чтобы исправить это, все, что мне нужно, чтобы добавить было:

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
    
  • Во-вторых - и это было в самом производственном коде - я имел параметр

    ShowParameterPrompts="True"

    С помощью этой опции определяется, страница не загружается, что дает ту же ошибку, что и выше. Однако удаление этой опции позволяет загружать страницу в обычном режиме.

2

Я думаю, что у меня было что-то в этом роде. Я исправил это, когда я добавил код позади к Page_Init вместо Page_Load.

Попробуйте добавить эту строку:

rptv.ServerReport.Refresh(); 
1

this.ReportViewer1.AsyncRendering = ложь;

это сделало мою страницу работающей.

0

Если вы отправляете параметр, который может принимать пустые значения, вы должны определить это в аргументе ReportViever accept null. Он не определяет, что я показываю пустой отчет без каких-либо ошибок.