尚未指定报告定义的来源

MMD*_*MNC 2 report microsoft-reporting c#-4.0

我正在使用以下代码尝试SetParametr:

    var report = new ReportParameter[1];
    report[0] = new ReportParameter("MyName", "Raha");
    var reportDataSource1 = new ReportDataSource { Name = "WpfApplication17_User", Value = _users };


    _reportViewer.LocalReport.DataSources.Add(reportDataSource1);
    _reportViewer.ServerReport.SetParameters(report);
    _reportViewer.LocalReport.ReportPath = "../../Report1.rdlc";

    _reportViewer.RefreshReport();
Run Code Online (Sandbox Code Playgroud)

错误:尚未指定报告定义的来源

为什么错?

我创建了一个报告参数,参数名称是'MyName'

更新:

我正在使用以下代码:

    //var report = new ReportParameter[1];
    //report[0] = new ReportParameter("MyName", "Raha");


    var reportDataSource1 = new ReportDataSource { Name = "WpfApplication17_User", Value = _users };

    string exeFolder = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

    _reportViewer.LocalReport.ReportPath =exeFolder + @"\Reports\Report1.rdlc";


    _reportViewer.LocalReport.DataSources.Add(reportDataSource1);

    //_reportViewer.ServerReport.SetParameters(report);

    _reportViewer.RefreshReport();
Run Code Online (Sandbox Code Playgroud)

报告中显示的数据.

但是,我使用以下代码:

   var report = new ReportParameter[1];
            report[0] = new ReportParameter("MyName", "Raha");


            var reportDataSource1 = new ReportDataSource { Name = "WpfApplication17_User", Value = _users };

            string exeFolder = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

            _reportViewer.LocalReport.ReportPath = exeFolder + @"\Reports\Report1.rdlc";


            _reportViewer.LocalReport.DataSources.Add(reportDataSource1);

            _reportViewer.ServerReport.SetParameters(report);//error

            _reportViewer.RefreshReport();
Run Code Online (Sandbox Code Playgroud)

错误为:尚未指定报告定义的来源

Jon*_*ben 6

我发现自己陷入了同样的错误,原因其实很简单:必须首先设置报表定义,参数之前。这样,LocalReport可以检查它们是否真的是强制性的,并最终抛出异常。

下面的代码应该工作:

_reportViewer.LocalReport.DataSources.Add(reportDataSource1);
_reportViewer.LocalReport.ReportPath = "../../Report1.rdlc";
_reportViewer.ServerReport.SetParameters(report);
Run Code Online (Sandbox Code Playgroud)


Kri*_*ari 6

把ReportParameter放到后面

_reportViewer.LocalReport.ReportPath = "../../Report1.rdlc";
Run Code Online (Sandbox Code Playgroud)

在这里编写ReportParameter


pst*_*jds 3

该错误与您的参数无关。该错误与ReportPath. 请参阅有关设置报告路径的其他 SO 问题。您确定应用程序运行时指定的相对路径正确吗?该路径相对于您的源代码吗?如果您想查看它在哪里查找文件,那么您可以添加一些代码来解析该相对路径(Path.GetFullPath)并查看它指向的位置。确保您的rdlc文件位于该文件夹中。

编辑:
根据您更新的问题并验证是否确实找到了报告。我更详细地查看了您的代码。您正在设置 的参数ServerReport,但正在加载 中的报告LocalReport。尝试设置LocalReport.

_reportViewer.LocalReport.SetParameters(report);
Run Code Online (Sandbox Code Playgroud)