我遇到了报告服务的问题,在2005版本上运行本地rdlc文件。
我在HTML中有一个报表查看器设置为在本地运行,如下所示:
<rsweb:ReportViewer ID="ReportingServicesReportViewer" runat="server" Height="100%"
ProcessingMode="Local" ShowParameterPrompts="False" Width="100%">
</rsweb:ReportViewer>
在代码中
// create SqlConnection
SqlConnection myConnection = new SqlConnection(ConnectionString);
myCommand.Connection = myConnection;
SqlDataAdapter da = new SqlDataAdapter(myCommand);
//get the data
DataSet data = new DataSet();
da.Fill(data);
if (data != null && data.Tables.Count > 0 && data.Tables[0].Rows.Count > 0)
{
ReportingServicesReportViewer.Visible = true;
ltrStatus.Text = string.Empty;
//provide local report information to viewer
ReportingServicesReportViewer.LocalReport.ReportPath = Server.MapPath(Report.RDLCPath);
//bind the report attributes and data to the reportviewer
ReportDataSource rds = new ReportDataSource("DataSet1", data.Tables[0]);
ReportingServicesReportViewer.LocalReport.DataSources.Clear();
ReportingServicesReportViewer.LocalReport.DataSources.Add(rds);
ReportingServicesReportViewer.LocalReport.Refresh();
}
else
{
ReportingServicesReportViewer.Visible = false;
ltrStatus.Text = "No data to display.";
}
当执行使用报告结果填充报告查看器的方法时,没有任何内容出现,就好像报告查看器不在那里一样。
到目前为止我做了什么麻烦拍摄:
有没有人遇到类似这样的问题,有什么想法吗?
答案 0 :(得分:9)
我和VS2012有同样的问题,报告显示加载图像,然后加载完成后,报告为空白。数据存在但未呈现。
解决方案:只需将报告 AsyncRendering更改为False ,报告再次正常工作。
答案 1 :(得分:8)
尝试使用简单的报告,有时报告查看器会抛出由无效的RDLC引起的异常并显示空报告。
还尝试调试项目并查看Visual Studio中的输出窗口:您将看到RDL引擎发出的警告,调查错误原因可能很有用。
答案 2 :(得分:7)
当我在rdlc中添加参数但未分配参数时,我遇到了同样的问题。 我通过添加此代码解决了这个问题。
Dim p_Date As Microsoft.Reporting.WebForms.ReportParameter
p_Date = New Microsoft.Reporting.WebForms.ReportParameter("DATE", txtDate.Text)
Me.ReportViewer1.LocalReport.SetParameters(New Microsoft.Reporting.WebForms.ReportParameter() {p_Date})
ReportViewer1.LocalReport.Refresh()
答案 3 :(得分:3)
我遇到了同样的问题,在我的情况下,我发现我提供的数据集实际上并不是报告所期望的对象类型。
在我的情况下,报告需要一个业务对象,但我提供了一个SQL数据源。
当报表上的参数不允许为空或空白但未提供参数值时,我也遇到了同样的问题。
另请注意,为了在代码中设置数据源,必须在onload事件中完成,而不是在page_load事件中完成。
答案 4 :(得分:3)
在我的情况下,ReportViewer控件不提供错误消息(EventViewer或ReportViewer控件体),只是空白页面。我认为这很难找到并解决问题。 Yoel Halb的回答是我的关键!
名为IsReadyForRendering的属性为False。 In the BOL指的是参数主题。
我可以用代码检查整个参数的每个值(你可以从即时窗口执行它)
SampleObject
当您使用值&#34; MissingValidValue&#34;
查看属性State时,您会发现有问题的参数希望这有帮助!
答案 5 :(得分:2)
这个花了一些时间来弄清楚,所以希望这些检查可以节省你一些时间:
1)验证web.config
<system.web>
<httpHandlers>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" validate="false" />
</httpHandlers>
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</buildProviders>
</system.web>
<system.webServer>
<handlers>
<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</handlers>
<system.webServer>
2)在将任何配置移动到代码
之前,直接在设计视图中尝试报表查看器控件Hard-Coded Report Viewer Control
3)验证脚本管理器是否在报表查看器之前的页面上
4)确保报告在本地或SSRS服务器上的设计查看器之外运行
5)确保报告对所有参数都有默认值!需要参数但没有默认值的报告显示为空白。
答案 6 :(得分:1)
在我的情况下,罪魁祸首是让参数与Allow null value = false(未选中)...不要问我为什么。
答案 7 :(得分:1)
在更改纸张或reportviewer的大小后无法使用,您可以通过增加
的延迟来尝试我的解决方案WaitControlDisplayAfter
有时您的数据太大,无法进行异步处理
答案 8 :(得分:0)
有同样的问题。花了一段时间为我弄清楚但事实证明我不小心新推出了reportViewer控制自己,所以我在设计表单时丢失了Visual Studio Designer为我创建的内容,这就是为什么reportviewer控件一直空白 - 我从未在Visual Studio Designer的ReportViewer对象上设置任何属性。
愚蠢的错误,但花了很长时间才弄明白。
答案 9 :(得分:0)
我花了很多天来找出类似的问题。也许这可以帮助某人。我已经阅读了关于stackoverflow的几乎所有线程,但是在这里阅读注释使我可以尝试一下。在我的情况下,显示了前两行(参数行和带有隐藏参数选项的行),但是包含管理按钮和报表本身的行为空。点击View report
不会执行任何操作。
我所做的是在没有提供参数的情况下加载了报表-我希望用户在Page_Load
上填写它们。
protected void Page_Load( object sender, EventArgs e )
{
this.LoadReport();
}
private void LoadReport()
{
// retrieve path param from "Reports/{path}" URL
string reportPath = Request.QueryString[ "path" ] as string;
string reportServerUrl = System.Configuration.ConfigurationManager.AppSettings[ "ReportServerUrl" ];
this.MainReport.ProcessingMode = ProcessingMode.Remote;
this.MainReport.ServerReport.ReportServerUrl = new Uri( reportServerUrl );
this.MainReport.ServerReport.ReportPath = reportPath;
this.MainReport.ServerReport.Refresh();
}
将Page_Load
代码更改为下面给出的代码后,一切正常。
protected void Page_Load( object sender, EventArgs e )
{
if ( !this.IsPostBack )
this.LoadReport();
}