telerik - una - pasar parametros reportviewer vb net
¿Cómo puedo pasar los parámetros a ReportSource que en el servicio de API de la web (1)
Supongo que hay una mejor manera de hacerlo, pero lo que hago es poner todos los parámetros en el parámetro reportSource.report
creando un objeto JSON serializado. Luego, en el método CustomerReportResolver()
deserializo el objeto utilizando la biblioteca Newtonsoft.Json. Entonces algo como lo siguiente:
var json = {};
json.reportType = "BeeSp.ReportLibrary.Stok.RprStokPaket, BeeSp.ReportLibrary";
json.rows = 10;
$("#reportViewer1")
.telerik_ReportViewer({
serviceUrl: "http://localhost:2404/api/StokPaketList/",
templateUrl: ''../ReportViewer/templates/telerikReportViewerTemplate.html'',
reportSource: {
report: JSON.stringify(json),
parameters: {
CultureID: "en"
}
}
});
y luego en el lado del servidor:
public ReportSource CustomReportResolver(string report)
{
JToken token = JObject.Parse(report);
int rows = (int)token["rows"];
string reportType = (string)token["reportType"];
}
Luego, en el objeto de origen de datos puede agregar el parámetro de filas como lo haría con cualquier otro parámetro.
Informes: biblioteca de informes
RepoerViewer: Html5
ReportService: Web Api
en servicios de API web, dataSource trae 32,000 filas de datos. pero solo 10 filas de datos utilizadas en el informe. De esta forma, informes muy lentos. ¿Cómo puedo pasar los parámetros al servicio de API web?
ReportViewer:
<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>
Informar sobre el Servicio 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;
}
}