greetings
Summary
When the Web Report Designer is initialized with non-English string resources (via window.telerikWebDesignerResources), the authentication type selector in the Web Service Data Source wizard behaves incorrectly. Even though "Sin autenticación" (the translated value of WebServiceDataSourceNoAuthentication) is visually selected in the dropdown, the wizard behaves as if a different authentication type is selected — displaying additional required credential fields and blocking progression.
The issue does not occur when using English string resources (WebServiceDataSourceNoAuthentication = "No authentication").
---
Steps to Reproduce
1. Configure a Blazor Web Report Designer with Spanish (es-CO) custom string resources using window.telerikWebDesignerResources:
// WebReportDesignerStrings.es-CO.js
export class WebReportDesignerStringsBase {
constructor() {
// ...
this.WebServiceDataSourceNoAuthentication = "Sin autenticación";
// ...
}
}
// Load resources before designer renders
window.telerikWebDesignerResources = new WebReportDesignerStringsBase();
2. Open the Web Report Designer in the browser with the Spanish resources active.
3. Add a new Web Service Data Source.
4. In the wizard URL step, observe the authentication selector — it shows "Sin autenticación" as the selected option.
5. Attempt to proceed through the wizard.
---
Expected Behavior
With "Sin autenticación" selected (equivalent to "No authentication"), the wizard should:
- Require only the Service URL field
- Not display credential input panels
- Allow proceeding to the next step without authentication configuration
---
Actual Behavior
Despite "Sin autenticación" being visually selected, the wizard behaves as if a different authentication type (Basic or 2-step) is selected:
- Additional authentication configuration panels appear or are required
- The wizard blocks progression expecting credential inputs
- The behavior is identical to what occurs when "Basic" or "2-step" is selected
---
Root Cause Analysis
The designer's compiled JavaScript (webReportDesigner) appears to compare the selected authentication type against the English string "No authentication" internally, rather than against a stable enum or index value. When the display text is "Sin autenticación", this comparison fails and the wizard falls through to a non-"no auth" code path.
Evidence: applying the temporary workaround of keeping WebServiceDataSourceNoAuthentication = "No authentication" (English text) in the es-CO resources file resolves the issue completely — the wizard functions correctly while all other strings remain in Spanish.
---
Workaround
In the non-English string resources file, keep WebServiceDataSourceNoAuthentication in English:
// workaround: keep English value until Telerik fixes internal comparison
this.WebServiceDataSourceNoAuthentication = "No authentication";
---
Minimal Reproduction
@* ReportEditor.razor *@
@page "/reportEditor"
@using Telerik.WebReportDesigner.Blazor
<WebReportDesigner DesignerId="wrd1"
ServiceUrl="apiReport/reportdesigner" />
// Loaded before designer renders via IJSRuntime.InvokeVoidAsync
window.telerikWebDesignerResources = {
WebServiceDataSourceNoAuthentication: "Sin autenticación",
// ... other keys
};
---
Additional Notes
- Both es-CO and en-US string resource files contain 971 keys each — the issue is not caused by missing keys.
- The designer correctly picks up the localized strings for all other UI elements; the bug is isolated to the authentication dropdown value comparison logic.
- Confirmed on version 19.1.25.521; not tested on earlier versions.
thank for your attention.
have a nice day.
Exporting a report from the Report-Viewer to Word(docx), then opened in Word for Web (browser-version of Word) causes incorrect rendering of the document. Images are replaced with placeholders.
In comparison, exporting the report as PDF, then opening and converting it to Word and uploading it, renders much more correct and with images.
Hi
If I run the angular report viewer within my main page, all is well. However if the report viewer is hosted in a <p-dialog> (or <p-overlaypanel>), the report does not render (even though data is loaded and the report can be exported). To confirm this, I even have the report visible in a <tr-viewer> on the main page behind the dialog and load them at the same time.
If the dialog is not visible when the main page opens, then the report viewer toolbar is in a column on the left, and is not operational. (see attached)
If the dialog is visible when the main page opens, then the toolbar appears at the top and functions normally. (see attached)
<tr-viewer #rptViewerBody
[containerStyle]="viewerContainerStyle"
[serviceUrl]="reportServerUrl"
[viewMode]="'INTERACTIVE'"
[scaleMode]="'SPECIFIC'"
[scale]="1.0">
</tr-viewer>
vs
<p-dialog modal="true"
appendTo="body"
header="Report"
[(visible)]="showReport"
[width]="1500"
[height]="1500">
<tr-viewer #rptViewerDialog
[containerStyle]="viewerContainerStyle"
[serviceUrl]="reportServerUrl"
[viewMode]="'INTERACTIVE'"
[scaleMode]="'SPECIFIC'"
[scale]="1.0">
</tr-viewer>
</p-dialog>
In the code, I tried both of these container styles. The result for the dialog was that relative position rendered the toolbar (top or left), but absolute position rendered nothing at all (height became 0)
this.viewerContainerStyle = {
position: 'absolute',
top: '0px',
left: '0px',
right: '0px',
bottom: '0px',
['font-family']: 'ms sans serif'
};
this.viewerContainerStyle = {
position: 'relative',
width: '1300px',
height: '1300px',
['font-family']: 'ms sans serif'
};
using @progress/telerik-angular-report-viewer": "7.19.718"
Thanks.
Hi,
There is an issue where the search window that opens from the Report Viewer tool bar does not allow for deleting text from the search string input box using backspace.
The keyboard command provider seems to have many other keys covered for the intended behavior, but backspace does not seem to be handled appropriately.
In my report, I use font SimSun to display Chinese, when preview it's OK, but after click print, an exception is thrown.
Internal Server Error
Font data for font "SimSun" cannot be obtained. Possible reasons are: The font is not installed in . The font is not found in the directories specified by the "FontLocations" configuration entries. The font is not declared in "" configuration section
In my docker image, run command -list, is there.
C:\Users\Anders> docker exec -it 3485 bash root@3485bbdabbb3:/app# fc-list /usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: DejaVu Serif:style=Bold /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf: DejaVu Sans Mono:style=Book /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: DejaVu Sans:style=Book /usr/share/fonts/simsun.ttf: SimSun,宋体:style=Regular /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf: DejaVu Sans:style=Bold /usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf: DejaVu Sans Mono:style=Bold /usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf: DejaVu Serif:style=Book
FROM /2.2- AS builder
WORKDIR /app
# caches restore result by copying file separately
COPY * config/
RUN restore
COPY .
RUN publish --output /app/ --configuration Release
RUN -n 's:.*<AssemblyName>\(.*\)</AssemblyName>.*:\1:p' * > __assemblyname
RUN if [ - __assemblyname; then filename=$ *); echo $filename%*} > __assemblyname;
# Stage 2
FROM /2.2--runtime
ENV PORT 80
EXPOSE 80
COPY simsun.ttf /usr/share/fonts/simsun.ttf
RUN apt-get update \
&& apt-get install -y \
libc6-dev \
\
libx11-dev \
\
&& rm -rf /var/lib/apt/lists/*
RUN fc-cache -f -v
WORKDIR /app
COPY --from=builder /app
ENTRYPOINT $cat /app/__assemblyname)In CSharp.ReportExamples.VS2017, I copy all reports into project CSharpAspNetCoreDemo, and make them always copy.
Then I change ReportsController to the Reports directory above.
When Run it in IIS, it's OK, but when check into Docker, there is an exception thrown.
{
"message": "An error has occurred.",
"exceptionMessage": "Type: Telerik.Reporting.XmlSerialization.Current.ReportSerializable`1[Telerik.Reporting.Report]",
"exceptionType": "System.MissingMethodException",
"stackTrace": " at Telerik.Reporting.Xml.ObjectXmlReader.CreateInstance(Type type, String name)\n at Telerik.Reporting.Xml.ObjectXmlReader.ReadObject(Type type)\n at Telerik.Reporting.Xml.ObjectXmlReader.ReadXmlElement(String name)\n at Telerik.Reporting.Xml.XmlSerializer.Deserialize(Stream stream, IResourceHandler resourceHandler)\n at Telerik.Reporting.XmlSerialization.ReportXmlSerializer.Telerik.Reporting.XmlSerialization.IXmlSerializer.Deserialize(Stream stream, IResourceHandler resourceHandler)\n at Telerik.Reporting.ReportPackager.UnpackageDocument(Stream packageStream)\n at Telerik.Reporting.Processing.UriReportDocumentResolver.Resolve(IProcessingContext context, UriReportSource rs)\n at Telerik.Reporting.Processing.ReportDocumentResolver.Bind[T](IProcessingContext context, ReportSource source, Func`2 func)\n at Telerik.Reporting.Processing.ResolvedReportDocument.ResolveReportsRecursively(ReportSource rs, IProcessingContext context, IDictionary`2 parentRsParameters, Boolean parentShouldDispose, List`1 result, IReportDocument& definition, ResolvedReport& tocReport, ReportBookTocPosition& tocReportPosition)\n at Telerik.Reporting.Processing.ResolvedReportDocument.Create(ReportSource rs, IProcessingContext context)\n at Telerik.Reporting.Services.Engine.ReportEngine.GetParameters(String clientID, String report, Dictionary`2 parameterValues)\n at Telerik.Reporting.Services.AspNetCore.ReportsControllerBase.GetParameters(String clientID, ClientReportSource reportSource)\n at lambda_method(Closure , Object , Object[] )\n at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()\n at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()\n at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)\n at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()\n at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()"
}
This is my Dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /
COPY ["AspNetCoreDemo/CSharpAspNetCoreDemo", "AspNetCoreDemo/"]
RUN restore "AspNetCoreDemo/CSharpAspNetCoreDemo"
COPY .
WORKDIR "/src/AspNetCoreDemo"
RUN build "CSharpAspNetCoreDemo" -c Release -o /app
FROM AS publish
RUN publish "CSharpAspNetCoreDemo" -c Release -o /app
FROM base AS final
RUN apt-get update \
&& apt-get install -y --allow-unauthenticated \
libc6-dev \
\
libx11-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=publish /app
ENTRYPOINT ["", "CSharpAspNetCoreDemo"]Using Roboto Medium changes values "FVS!dBTI" should be "EUR Cash" (shift characters by 1) weird !!!!