Winforms ReportViewer为参数传递null,即使参数已设置

Winforms ReportViewer为参数传递null,即使参数已设置,winforms,reportviewer,ssrs-2008-r2,Winforms,Reportviewer,Ssrs 2008 R2,尽管我在代码中设置了参数,但我一直认为参数必须设置为错误。我已经运行了探查器来查看传递给SSR的内容,探查器指示parameters=null。然而,所有这些都是在代码中设置的。有人有什么想法吗?代码如下: string strReportPath; Microsoft.Reporting.WinForms.ReportParameter prmFranchiseOID; Microsoft.Reporting.WinForms.ReportParameter prmSc

尽管我在代码中设置了参数,但我一直认为参数必须设置为错误。我已经运行了探查器来查看传递给SSR的内容,探查器指示parameters=null。然而,所有这些都是在代码中设置的。有人有什么想法吗?代码如下:

string strReportPath;
      Microsoft.Reporting.WinForms.ReportParameter prmFranchiseOID;
      Microsoft.Reporting.WinForms.ReportParameter prmSchoolOID;
      Microsoft.Reporting.WinForms.ReportParameter prmRoomOID;
      Microsoft.Reporting.WinForms.ReportParameter prmOrderDate;
      Microsoft.Reporting.WinForms.ReportParameter prmLanguage;
      Microsoft.Reporting.WinForms.ReportParameter prmContrast;
      List<Microsoft.Reporting.WinForms.ReportParameter> prms = new List<ReportParameter>();
        byte[] pdf = null;

        try
        {
            prmFranchiseOID = new Microsoft.Reporting.WinForms.ReportParameter("FranchiseOID", "8D126AA2-2E5C-4B2B-8D19-167027F8C7D8");
            prmSchoolOID = new Microsoft.Reporting.WinForms.ReportParameter("SchoolOID", "96FEE335-0CB9-413A-9DDC-78F8C67770C4");
            prmRoomOID = new Microsoft.Reporting.WinForms.ReportParameter("RoomOID", "null");
            prmOrderDate = new Microsoft.Reporting.WinForms.ReportParameter("OrderDate", DateTime.Now.AddDays(1).Date.ToString());
            prmLanguage = new Microsoft.Reporting.WinForms.ReportParameter("Language", "en-CA");
            prmContrast = new Microsoft.Reporting.WinForms.ReportParameter("Contrast", "true");

            prms.Add(prmFranchiseOID);
            prms.Add(prmSchoolOID);
            prms.Add(prmRoomOID);
            prms.Add(prmOrderDate);
            prms.Add(prmLanguage);
            prms.Add(prmContrast);

            // Note: For Account Holder users, their specified report folder is "/LunchLady/User".
            strReportPath = "/LunchLady/Franchise/" + urlReportName;

            try
            {
                rvReport.ServerReport.ReportServerUrl = new System.Uri("https://testsql.thelunchlady.ca/ReportServer");
                rvReport.ServerReport.ReportPath = strReportPath;
                rvReport.ServerReport.SetParameters(prms);

                string ReportType = "PDF";

                pdf = rvReport.ServerReport.Render(ReportType);

感谢您在ASP.NET中对SSRS控件进行了大量编程,我发现与WinForms相关或不相关的一点是,每个SSRS参数本身就是一个集合,因为参数可以是多选的

因此,对我们有效的是,您案例中的收集PRM类型为

List<IEnumerable<ReportViewer.ReportParameter>> prms
此外,在使用SetParameters函数添加参数时,我们一次添加一个参数:

for (int i = 0; i < prms.Count; i++)
{
    rvReport.ServerReport.SetParameters(prms[i]);
}

同样,这是我们在ASP.NET中的工作原理,您可以尝试一下。

哪个参数导致了此问题?还是全部都是?@user2840110您的代码似乎不完整。你能把完整的密码贴出来吗。