【发布时间】:2014-07-20 06:22:56
【问题描述】:
报告:报告库
RepoerViewer:Html5
ReportService:Web API
在 Web api 服务中,dataSource 带来了 32,000 行数据。但报告中只使用了 10 行数据。这样,报告很慢。如何将参数传递给 web api 服务?
报告查看器:
<div id="reportViewer1" class="k-widget">
loading...
</div>
<script type="text/javascript">
$("#reportViewer1")
.telerik_ReportViewer({
serviceUrl: "http://localhost:2404/api/StokPaketList/",
templateUrl: '../ReportViewer/templates/telerikReportViewerTemplate.html',
reportSource: {
report: "BeeSp.ReportLibrary.Stok.RprStokPaket, BeeSp.ReportLibrary",
parameters: {
CultureID: "en"
}
}
});
</script>
报告 Web Api 服务:
class CustomReportResolverWithFallBack : IReportResolver
{
readonly IReportResolver _parentResolver; private IStokPaketService _stokPaketService;
public CustomReportResolverWithFallBack(IReportResolver parentResolver, IStokPaketService stokPaketService)
{
this._parentResolver = parentResolver;
_stokPaketService = stokPaketService;
}
public ReportSource Resolve(string report)
{
var reportDocument = this.CustomReportResolver(report);
if (null == reportDocument
&& null != this._parentResolver)
{
reportDocument = this._parentResolver.Resolve(report);
}
return reportDocument;
}
public ReportSource CustomReportResolver(string report)
{
var type = Type.GetType(report);
var reportInstance = (Report)Activator.CreateInstance(type);
//in this case, report data source brings 32,000 rows of data
var reportData = _stokPaketService.GetCStokPakets("GOLF").ToList();
var objectDataSouce = new ObjectDataSource { DataSource = reportData };
reportInstance.DataSource = objectDataSouce;
return reportInstance;
}
}
【问题讨论】:
-
感谢您发布这个问题提供了很多帮助
标签: telerik reporting reportviewer asp.net-web-api telerik-reporting