“参数值缺失或无效。请输入所有参数的有效数据“。 Telerik Reporting Rest Web API(.tdmx)

问题描述 投票:0回答:2

我创建了Telerik rest web API服务。

//报告控制器c#代码

public ReportsController()
        {
            var appPath = HttpContext.Current.Server.MapPath("~/");
            var reportsPath = Path.Combine(appPath, "Reports");

            var resolver = new ReportFileResolver(reportsPath)
                .AddFallbackResolver(new ReportTypeResolver());

            //Setup the ReportServiceConfiguration
            configurationInstance = new ReportServiceConfiguration
            {
                HostAppId = "Html5App",
                Storage = new FileStorage(),
                ReportResolver = resolver,

                // ReportSharingTimeout = 0,
                // ClientSessionTimeout = 15,
            };

            this.ReportServiceConfiguration = configurationInstance;
        }



//报告查看器代码

    $("#reportViewer1")
        .telerik_ReportViewer({
            serviceUrl: "http://localhost:12345/api/Reports",
            reportSource: {
                report: "Dashboard.trdx",
                parameters: { ReportYear : 2009 }
            },
            viewMode: telerikReportViewer.ViewModes.INTERACTIVE,
            scaleMode: telerikReportViewer.ScaleModes.SPECIFIC,
            scale: 1.0,
            enableAccessibility: false,
            sendEmail: { enabled: true }
        });



// trdx参数代码

 <DataSources>
    <SqlDataSource ConnectionString="Telerik.Reporting.Examples.CSharp.Properties.Settings.TelerikConnectionString" SelectCommand="SELECT DISTINCT YEAR(OrderDate) AS Year&#xD;&#xA;FROM         Sales.SalesOrderHeader&#xD;&#xA;ORDER BY Year" Name="yearDataSource" />
    <SqlDataSource ConnectionString="Telerik.Reporting.Examples.CSharp.Properties.Settings.TelerikConnectionString" SelectCommand="SELECT&#xD;&#xA;&#x9;P.Name AS ProductName&#xD;&#xA;&#x9;, SOD.LineTotal / 1000 AS LineTotal&#xD;&#xA;&#x9;, SOH.OrderDate&#xD;&#xA;&#x9;, SS.Name AS StoreName&#xD;&#xA;&#x9;, C.FirstName + ' ' + COALESCE (C.MiddleName, '') + ' ' + C.LastName AS SalesPersonFullName&#xD;&#xA;FROM&#xD;&#xA;&#x9;Production. Product AS P&#xD;&#xA;&#x9;INNER JOIN Sales.SalesOrderDetail AS SOD ON P.ProductID = SOD.ProductID&#xD;&#xA;&#x9;INNER JOIN Sales.SalesOrderHeader AS SOH ON SOD.SalesOrderID = SOH.SalesOrderID&#xD;&#xA;&#x9;INNER JOIN Sales.Store AS SS             ON SS.CustomerID = SOH.CustomerID&#xD;&#xA;&#x9;INNER JOIN Sales.SalesPerson AS SP       ON SP.SalesPersonID = SOH.SalesPersonID&#xD;&#xA;&#x9;INNER JOIN HumanResources.Employee AS E  ON E.EmployeeID = SP.SalesPersonID&#xD;&#xA;&#x9;INNER JOIN Person.Contact AS C           ON C.ContactID = E.ContactID&#xD;&#xA;WHERE     (YEAR(SOH.OrderDate) = @Year)" Name="mainDataSource">
      <Parameters>
        <SqlDataSourceParameter DbType="Int32" Name="@Year">
          <Value>
            <String>=Parameters.ReportYear.Value</String>
          </Value>
        </SqlDataSourceParameter>
      </Parameters>
      <DefaultValues>
        <SqlDataSourceParameter DbType="Int32" Name="@Year">
          <Value>
            <String>2001</String>
          </Value>
        </SqlDataSourceParameter>
      </DefaultValues>
    </SqlDataSource>
  </DataSources>



传递参数“ReportYear”并使用.trdx文件。



我收到错误“参数值丢失或无效。请输入所有参数的有效数据。”

如果我没有传递参数,那么报告将正常运行。

在.trdx文件中获取参数值还需要什么?

我真的很喜欢它。如果有人可以帮助它,那将是很棒的。

asp.net-mvc asp.net-web-api reporting-services telerik telerik-reporting
2个回答
0
投票

您必须将报告参数添加到report,而不是sql参数。

右键单击报告并转到报告参数。

https://docs.telerik.com/reporting/designing-reports-parameters-adding-parameters


0
投票

将报告参数传递为“ReportYear”而不是“Year”

© www.soinside.com 2019 - 2024. All rights reserved.