1

在 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)?

4

2 回答 2

1

在刷新报告之前设置参数,它会神奇地工作。
不知道原因,因为我们无法调试它。

reportViewer.LocalReport.SetParameters(paramters);  
// do not put any other operation here           
reportViewer.RefreshReport();

这是我第一次留下答案,因为我在其他任何地方都找不到这个解决方案。

于 2019-01-07T18:56:41.213 回答
0

我很确定 v2012 有 RDLC 架构更改,因此我相信您需要使用正确的架构更新报告。不知道发生了什么变化,但对于初学者来说可能会有所帮助,

"xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"

我可能是错的,但从表面上看,这至少是你问题的方向。

于 2013-10-14T22:06:42.063 回答