我创建了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
FROM Sales.SalesOrderHeader
ORDER BY Year" Name="yearDataSource" />
<SqlDataSource ConnectionString="Telerik.Reporting.Examples.CSharp.Properties.Settings.TelerikConnectionString" SelectCommand="SELECT
	P.Name AS ProductName
	, SOD.LineTotal / 1000 AS LineTotal
	, SOH.OrderDate
	, SS.Name AS StoreName
	, C.FirstName + ' ' + COALESCE (C.MiddleName, '') + ' ' + C.LastName AS SalesPersonFullName
FROM
	Production. Product AS P
	INNER JOIN Sales.SalesOrderDetail AS SOD ON P.ProductID = SOD.ProductID
	INNER JOIN Sales.SalesOrderHeader AS SOH ON SOD.SalesOrderID = SOH.SalesOrderID
	INNER JOIN Sales.Store AS SS ON SS.CustomerID = SOH.CustomerID
	INNER JOIN Sales.SalesPerson AS SP ON SP.SalesPersonID = SOH.SalesPersonID
	INNER JOIN HumanResources.Employee AS E ON E.EmployeeID = SP.SalesPersonID
	INNER JOIN Person.Contact AS C ON C.ContactID = E.ContactID
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文件中获取参数值还需要什么?
我真的很喜欢它。如果有人可以帮助它,那将是很棒的。
您必须将报告参数添加到report,而不是sql参数。
右键单击报告并转到报告参数。
https://docs.telerik.com/reporting/designing-reports-parameters-adding-parameters
将报告参数传递为“ReportYear”而不是“Year”