在Report Viewer 11(VS2012)WinForms中,我们在本地RDLC报告中遇到了有关报告参数的奇怪问题。
我们设置了一个使用报告参数的本地报告,并向用户显示:
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"
xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
[...]
<ReportParameters>
<ReportParameter Name="TestValue">
<DataType>String</DataType>
<Prompt>ReportParameter1</Prompt>
</ReportParameter>
</ReportParameters>
[...]
<Textbox Name="TestValueTextBox">
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Parameters!TestValue.Value</Value>
[...]
</TextRun>
</TextRuns>
<Style>
</Report>
在代码中,我们应用像这样的参数:
this.View.reportViewer.LocalReport.LoadReportDefinition(reportRdlc);
ReportParameter rp = new ReportParameter("TestValue", "TEST");
this.View.reportViewer.LocalReport.SetParameters(rp);
报告查看器不应用该值,而是抱怨该值丢失。
在Report Viewer 10(VS2010)中,这实际上没有任何问题。
有人知道为什么这实际上不适用于Report Viewer 11(WinForms)?
答案 0 :(得分:0)
我很确定v2012有RDLC Schema更改,因此我认为您需要使用正确的架构更新报告。不确定所有改变了但是对于初学者来说可能有所帮助,
“的xmlns =” http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition“
我可能错了,但表面上看起来至少是问题的方向。
答案 1 :(得分:0)
在刷新报告之前立即设置参数,它将神奇地起作用。
不知道原因,因为我们无法调试它。
reportViewer.LocalReport.SetParameters(paramters);
// do not put any other operation here
reportViewer.RefreshReport();
这是我第一次留下答案,因为我在其他任何地方都找不到这种解决方案。