We are using Telerik report server version 2025Q2 with a Blazor UI, since we have upgraded when you select a parameter in the parameter list it does not shade it or do anything to indicate it has been selected. The report does run so it's really selecting the parameters but it does not reflect that. Is there a fix for this?
Thanks,
Toya
I need to get the values of some fields shown on a report in a VB.NET / Winforms app, and I've used the code from here;
However, I'm experiencing a crash at the first step of getting the InstanceReportSource with a cast exception as per the title.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim instanceReportSource As InstanceReportSource =
DirectCast(Me.TKReportViewer.ReportSource, InstanceReportSource) <========= Invalid Cast here
Dim report As Telerik.Reporting.Report =
DirectCast(instanceReportSource.ReportDocument, Telerik.Reporting.Report)
Dim txt As Telerik.Reporting.TextBox =
TryCast(report.Items.Find("quoteReferenceNumber", True)(0), Telerik.Reporting.TextBox)
End Sub
I can't find any other questions / answers on this - anyone have an idea what might be wrong?
Hello,
I'm working on adding a custom template to our reports. I based it on the example that is given with the latest telerik reporting. Our designer would like us to get rid of the pagination (Our reports are max 2-3 pages) and move the parameters area around a bit, so I added the following template:
<template id="trv-report-viewer">
<div class="trv-report-viewer w-100 h-100 gap-4">
<div data-role="splitter" class="trv-parameters-splitter ">
<div data-id="trv-parameters-area" class="trv-parameters-area w-25" data-role="telerik_ReportViewer_ParametersArea">
<div class="d-flex flex-column pe-4">
<div class="d-flex align-items-center px-3">
<h3 class="flex-grow-1 ps-3">Report</h3>
<div class="trv-side-menu d-flex gap-3" data-role="telerik_ReportViewer_SideMenu">
<ul class="d-flex flex-row gap-2" aria-label="ariaLabelSideMenu">
<li aria-label="ariaLabelMenuNavigateBackward">
<a data-command="telerik_ReportViewer_historyBack" title="menuNavigateBackwardTitle" href="#" class="element_Action shadow-none bg-none pb-0">
<i class="bi bi-arrow-90deg-left"></i>
</a>
</li>
<li aria-label="ariaLabelMenuNavigateForward">
<a data-command="telerik_ReportViewer_historyForward" title="menuNavigateForwardTitle" href="#" class="element_Action shadow-none bg-none pb-0">
<i class="bi bi-arrow-90deg-right"></i>
</a>
</li>
<li class="element_Action " aria-label="ariaLabelMenuRefresh">
<a data-command="telerik_ReportViewer_refresh" title="ariaLabelMenuRefresh" class="element_Action shadow-none">
<i class="bi bi-arrow-clockwise"></i>
</a>
</li>
<li aria-label="ariaLabelMenuToggleMenu">
<button
title="Toggle Filter"
type="button"
class="element_Action shadow-none"
onclick="toggleReportViewerParameters(event, this)">
<i class="bi bi-sliders2-vertical"></i>
</button>
</li>
</ul>
</div>
</div>
<div class="reportViewer_Parameters ">
<div class="trv-parameters-area-content" role="complementary">
<div class="trv-parameters-wrapper"></div>
</div>
<div class="trv-parameters-area-footer mt-3">
<button type="button" aria-label="ariaLabelParametersAreaPreviewButton" class="element_Button trv-parameters-area-preview-button">Preview</button>
</div>
<div class="trv-error-pane k-tooltip-validation k-widget">
<div class="trv-error-message"></div>
</div>
<div class="trv-parameters-area-overlay"></div>
</div>
<div class="d-flex flex-wrap gap-1 px-2 align-items-center reportViewer_exportOrPrint">
<select
name="exportFormat"
class="reportViewer_exportFormat flex-shrink-0"
onchange="changeReportExportFormat(this)">
<option value="PDF">Adobe (PDF) file</option>
<option value="CSV">CSV (comma delimited)</option>
<option value="XLS">Excel 97-2003</option>
<option value="XLSX">Excel Worksheet</option>
<option value="PPTX">PowerPoint Presentation</option>
<option value="RTF">Rich Text Format</option>
<option value="IMAGE">TIFF File</option>
<option value="MHTML">Web Archive</option>
<option value="DOCX">Word Document</option>
<option value="XPS">XPS Document</option>
</select>
<button class="element_Button reportViewer_exportButton" data-command="telerik_ReportViewer_export" data-command-parameter="pdf">Export</button>
<span class="is-dimmed px-1">or</span>
<button class="element_Button" data-command="telerik_ReportViewer_print">Print</button>
</div>
</div>
</div>
<div class="k-splitbar k-splitbar-horizontal"></div>
<div class="trv-content-wrapper w-75 bg-darkcloud">
<div data-id="trv-pages-area" class="trv-pages-area border-0 p-4" data-role="telerik_ReportViewer_PagesArea" role="main" aria-label="ariaLabelPagesArea">
<div class='trv-page-container'>
<div class='trv-page-wrapper active'></div>
</div>
<div class='trv-error-pane'>
<div class="trv-centered k-tooltip-validation">
<div class='trv-error-message'></div>
</div>
<div style="clear: both;"></div>
</div>
</div>
</div>
</div>
</div>
</template>
<!--PARAMETERS-->
<template id="trv-parameter">
<div class="trv-parameter-container mt-3">
<div class="trv-parameter-header">
<div class="trv-parameter-title label is-dimmed ps-3"></div>
</div>
<div class="trv-parameter-error">
<span class="trv-parameter-error-message"></span>
</div>
<div class="trv-parameter-value"></div>
</div>
</template>
<template id="trv-parameter-editor-available-values-multiselect">
<div class="trv-parameter-editor-available-values-multiselect">
<div class="trv-list"></div>
<div class="trv-parameter-actions">
<button class="trv-select-all element_Action">parameterEditorSelectAll</button>
<button class="trv-select-none element_Action">parameterEditorSelectNone</button>
</div>
</div>
</template>
<template id="trv-parameter-editor-available-values-multiselect-combo">
<div class="trv-parameter-editor-available-values-multiselect">
<div class="trv-combo"></div>
<div class="trv-parameter-actions">
<button class="trv-select-all element_Actionelement_Action">parameterEditorSelectAll</button>
<button class="trv-select-none element_Actionelement_Action">parameterEditorSelectNone</button>
</div>
</div>
</template>
<template id="trv-parameter-editor-available-values">
<div class="trv-parameter-editor-available-values">
<div class="trv-list" id="trv-parameter-editor-singleselect-list"></div>
<div class="trv-parameter-actions">
<button class="trv-select-none element_Action">parameterEditorSelectNone</button>
</div>
</div>
</template>
<template id="trv-parameter-editor-available-values-combo">
<div class="trv-parameter-editor-available-values">
<div class="trv-combo" id="trv-parameter-editor-singleselect-combo"></div>
<div class="trv-parameter-actions">
<button class="trv-select-none element_Action">parameterEditorSelectNone</button>
</div>
</div>
</template>
<template id="trv-parameter-editor-datetime">
<div class="element_DateTimePicker">
<input type="datetime" class=" trv-parameter-editor-datetime" />
</div>
</template>
<template id="trv-parameter-editor-text">
<div class="element_Input">
<input type="text" class=" trv-parameter-editor-text" />
</div>
</template>
<template id="trv-parameter-editor-number">
<div class="element_Input">
<input type="number" step="any" class=" trv-parameter-editor-number" />
</div>
</template>
<template id="trv-parameter-editor-boolean">
<input type="checkbox" class="element_Checkbox trv-parameter-editor-boolean" />
</template>
<template id="trv-parameter-editor-multivalue">
<div class="trv-parameter-editor-multivalue element_Textarea">
<textarea></textarea>
</div>
</template>
Now i can see that I got multiple pages loaded, but if I scroll, then the follow-up pages do not load.
Here is how we call the template:
<telerik:ReportViewer
ID="html5ReportViewer" ServiceUrl="/api/reports"
EnableAccessibility="false"
PersistSession="false"
ParametersAreaPosition="Left"
TemplateUrl="~/reportTemplate/reportViewerTemplate.html"
PageMode="ContinuousScroll"
ScaleMode="FitPageWidth"
runat="server">
If I remove the TemplateUrl, then everything works as expected. The extra classes I added are from Bootstrap.
If anyone has an idea what is wrong with my template, please let me know. I've tried replacing the whole thing with the file from C:\Program Files (x86)\Progress\Telerik Reporting 2025 Q2\Html5\ReportViewer\templates but it didn't solve the issue.
Thanks for your future input!
Hello Telerik Support Team,
When I execute the npm instruction below to install telerik angular report-viewer package, it results a lot of errors as shown further down. Any ideas of what I may be missing or what I may be doing wrong to install telerik angular report-viewer package is appreciated.
command: npm install @progress/telerik-angular-native-report-viewer
√ Browser application bundle generation complete.
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:8:0-59 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-dateinputs' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:12:0-56 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-dropdowns' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:14:0-53 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-inputs' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:16:0-54 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-buttons' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:18:0-61 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-notification' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:20:0-55 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-layout' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:22:0-56 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-toolbar' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:24:0-59 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-indicators' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:26:0-55 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-treeview' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:28:0-54 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-tooltip' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:30:0-54 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-icons' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:32:0-54 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-pager' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:34:0-55 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-dialog' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:36:0-54 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-listbox' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:39:0-66 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-conversational-ui' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:41:0-54 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-utils' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:43:0-60 - Error: Module not found: Error: Can't resolve '@progress/kendo-angular-label' in '\AngularUI\ClientApp\node_modules\@progress\telerik-angular-native-report-viewer\fesm2022'
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:880:53-65 - Error: export 'debounceTime' (imported as 'debounceTime') was not found in 'rxjs' (possible exports: ArgumentOutOfRangeError, AsyncSubject, BehaviorSubject, ConnectableObservable, EMPTY, EmptyError, GroupedObservable, NEVER, Notification, NotificationKind, ObjectUnsubscribedError, Observable, ReplaySubject, Scheduler, Subject, Subscriber, Subscription, TimeoutError, UnsubscriptionError, VirtualAction, VirtualTimeScheduler, animationFrame, animationFrameScheduler, asap, asapScheduler, async, asyncScheduler, bindCallback, bindNodeCallback, combineLatest, concat, config, defer, empty, forkJoin, from, fromEvent, fromEventPattern, generate, identity, iif, interval, isObservable, merge, never, noop, observable, of, onErrorResumeNext, pairs, partition, pipe, queue, queueScheduler, race, range, scheduled, throwError, timer, using, zip)
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:1407:30-34 - Error: export 'take' (imported as 'take') was not found in 'rxjs' (possible exports: ArgumentOutOfRangeError, AsyncSubject, BehaviorSubject, ConnectableObservable, EMPTY, EmptyError, GroupedObservable, NEVER, Notification, NotificationKind, ObjectUnsubscribedError, Observable, ReplaySubject, Scheduler, Subject, Subscriber, Subscription, TimeoutError, UnsubscriptionError, VirtualAction, VirtualTimeScheduler, animationFrame, animationFrameScheduler, asap, asapScheduler, async, asyncScheduler, bindCallback, bindNodeCallback, combineLatest, concat, config, defer, empty, forkJoin, from, fromEvent, fromEventPattern, generate, identity, iif, interval, isObservable, merge, never, noop, observable, of, onErrorResumeNext, pairs, partition, pipe, queue, queueScheduler, race, range, scheduled, throwError, timer, using, zip)
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:1447:30-34 - Error: export 'take' (imported as 'take') was not found in 'rxjs' (possible exports: ArgumentOutOfRangeError, AsyncSubject, BehaviorSubject, ConnectableObservable, EMPTY, EmptyError, GroupedObservable, NEVER, Notification, NotificationKind, ObjectUnsubscribedError, Observable, ReplaySubject, Scheduler, Subject, Subscriber, Subscription, TimeoutError, UnsubscriptionError, VirtualAction, VirtualTimeScheduler, animationFrame, animationFrameScheduler, asap, asapScheduler, async, asyncScheduler, bindCallback, bindNodeCallback, combineLatest, concat, config, defer, empty, forkJoin, from, fromEvent, fromEventPattern, generate, identity, iif, interval, isObservable, merge, never, noop, observable, of, onErrorResumeNext, pairs, partition, pipe, queue, queueScheduler, race, range, scheduled, throwError, timer, using, zip)
./node_modules/@progress/telerik-angular-native-report-viewer/fesm2022/progress-telerik-angular-native-report-viewer.mjs:1492:32-36 - Error: export 'take' (imported as 'take') was not found in 'rxjs' (possible exports: ArgumentOutOfRangeError, AsyncSubject, BehaviorSubject, ConnectableObservable, EMPTY, EmptyError, GroupedObservable, NEVER, Notification, NotificationKind, ObjectUnsubscribedError, Observable, ReplaySubject, Scheduler, Subject, Subscriber, Subscription, TimeoutError, UnsubscriptionError, VirtualAction, VirtualTimeScheduler, animationFrame, animationFrameScheduler, asap, asapScheduler, async, asyncScheduler, bindCallback, bindNodeCallback, combineLatest, concat, config, defer, empty, forkJoin, from, fromEvent, fromEventPattern, generate, identity, iif, interval, isObservable, merge, never, noop, observable, of, onErrorResumeNext, pairs, partition, pipe, queue, queueScheduler, race, range, scheduled, throw Error, timer, using, zip)
Error: error NG8001: 'reporting-angular-viewer' is not a known element:
1. If 'reporting-angular-viewer' is an Angular component, then verify that it is part of this module.
2. If 'reporting-angular-viewer' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
Hello,
Im retrieving some images from the database and im trying to show them like in a grid view like the mobile gallery. I've been trying with List and a picture box but each image shows in its on row.
What im trying to do
Column1 Column2
Image1 Image2
Image3 Image4
What im getting
Column1 Column2
Image1
Image2
Image3
Image4
Any help appreciated
I'm having issues with hiding or disabling the Search button on the Report Viewer.
I found the attribute here for the Search Dialog:
I found this link on how to disable a button in the Viewer:
https://docs.telerik.com/reporting/knowledge-base/hide-or-change-html5-report-viewer-toolbar-buttons
But when I try it, the Search button continues to be active.
This is the code I have below. I would also point out that the reason I am trying to hide the Search is because when I do try to a search, I get a bunch of gobbly-gook that appears in the results. See attached. I'm not sure what that is all about. So I am willing to keep the Search button active as an alternative if there is a way to return clean results.
<script type="text/javascript">
$("#reportViewer1")I am using reporting 15.2 in Sitefinity 14.3, works great
Updated to sitefinity 15.3 copied over all the reporting assemblies and now it's throwing this error
Cannot access the Reporting REST service. (serviceUrl = '/api/reports/'). Make sure the service address is correct and enable CORS if needed. (https://enable-cors.org)
It's clearly not CORS related, but the 404 not found is weird. Any thoughts?
Hi support team.
I go back to you on this subject because I have a problem as below:
I'm using Telerik Report Designer Standalone for making my report template.
In fact, I have 2 series: 1 barserie and 1 lineserie. In Line serie, I can make any style of DataPointLabel without any problem. However in bar serie, I want to change the color of DataPointLabel as below but it doesn't take in affect, please help me to resolve it
Hi team, please help to check this error
Telerik.Reporting.Serialization.SerializerExcepion HResult=0x80131500 Message=The XML serializer cannot resolve type with name: System.ComponentModel.ISite Source=Telerik.Reporting StackTrace: at Telerik.Reporting.Serialization.ObjectReader.ReadValue(Object obj, PropertyDescriptor prop) at Telerik.Reporting.Serialization.ObjectReader.ReadAttributes(Object obj, PropertyDescriptorCollection props) at Telerik.Reporting.Serialization.ObjectReader.ReadProperties(Object obj) at Telerik.Reporting.Serialization.ObjectReader.ReadObject(Type type) at Telerik.Reporting.Serialization.ObjectReader.ReadXmlElement(String name) at Telerik.Reporting.Serialization.ObjectReader.ReadCollection(Object collection) at Telerik.Reporting.Serialization.ObjectReader.ReadProperties(Object obj) at Telerik.Reporting.Serialization.ObjectReader.ReadObject(Type type) at Telerik.Reporting.Serialization.ObjectReader.ReadXmlElement(String name) at Telerik.Reporting.Serialization.ObjectReader.Deserialize(IResourceHandler handler) at Telerik.Reporting.JsonSerialization.JsonSerializer.Deserialize(String value) at Telerik.Reporting.JsonSerialization.JsonSerializer.Deserialize(StreamReader reader) at Telerik.Reporting.JsonSerialization.JsonSerializer.Deserialize(Stream stream) at Telerik.Reporting.JsonSerialization.ReportJsonSerializer.Deserialize(Stream stream) at MOS.ReportWriter.Web.Core.TelerikExtensions.ReportHelper.LoadReportFromDataWithDatasources(String reportData, List`1 webServiceDataSources) in C:\working\sourcecode\hrs-report\MOS.ReportWriter.Web\Core\TelerikExtensions\ReportHelper.cs:line 110 This exception was originally thrown at this call stack: [External Code] Inner Exception 1: InvalidCastException: Invalid cast from 'System.String' to 'System.ComponentModel.ISite'.
When i trying to modify the WebServiceDatasource in the report document with code below
public static Telerik.Reporting.Report LoadReportFromDataWithDatasources(string reportData, List<CustomeWebServiceDataSource> webServiceDataSources)
{
try
{
using MemoryStream stream = new(Convert.FromBase64String(reportData));
var reportPackager = new ReportPackager();
Telerik.Reporting.Report reportDocument = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(stream);
// Filter only WebServiceDataSources
var originalDataSources = reportDocument.GetDataSources();
var webServiceSources = originalDataSources.OfType<WebServiceDataSource>().ToList();
// Match and update existing WebServiceDataSources
var matchedDataSources = webServiceSources
.Where(ws => webServiceDataSources.Any(x => x.ServiceUrl == ws.ServiceUrl))
.ToList();
var unmatchedCustomSources = webServiceDataSources
.Where(x => !webServiceSources.Any(ws => ws.ServiceUrl == x.ServiceUrl))
.ToList();
var rebuiltDataSources = new List<object>();
foreach (var ws in matchedDataSources)
{
var matchingCustom = webServiceDataSources.FirstOrDefault(x => x.ServiceUrl == ws.ServiceUrl);
var paramValues = JsonConvert.DeserializeObject<Dictionary<string, object>>(matchingCustom?.ParameterValues);
var updatedWs = new CustomeWebServiceDataSource
{
Name = ws.Name,
DataEncoding = ws.DataEncoding.CodePage,
Method = ws.Method.ToString(),
Parameters = ws.Parameters.Select(p => new DataSourceParameter
{
Name = p.Name,
Value = new DataSourceParameterValue { Value = p.Value?.ToString() },
WebServiceParameterType = p.WebServiceParameterType.ToString()
}).ToList(),
ServiceUrl = ws.ServiceUrl,
DataSelector = ws.DataSelector
};
updatedWs.SetParameterValues(paramValues);
rebuiltDataSources.Add(updatedWs);
}
// Add new unmatched custom sources
rebuiltDataSources.AddRange(unmatchedCustomSources);
// Preserve non-WebServiceDataSources
var otherDataSources = originalDataSources.Where(ds => ds is not WebServiceDataSource);
rebuiltDataSources.AddRange(otherDataSources);
// Serialize updated report and inject data sources
var reportContent = SerializeReportToJson(reportDocument);
var reportJson = JsonConvert.DeserializeObject<JToken>(reportContent);
// Use full polymorphic list
reportJson["DataSources"] = JsonConvert.DeserializeObject<JArray>(JsonConvert.SerializeObject(rebuiltDataSources));
reportContent = JsonConvert.SerializeObject(reportJson);
using MemoryStream finalStream = new(System.Text.Encoding.UTF8.GetBytes(reportContent));
var serializer = new ReportJsonSerializer();
return (Telerik.Reporting.Report)serializer.Deserialize(finalStream);
}
catch
{
return null;
}
}
return (Telerik.Reporting.Report)serializer.Deserialize(finalStream);