Telerik Forums
Reporting Forum
1 answer
32 views

I have a C#, WPF application that generates some data. I need to put that data into various Tables in a PDF file.

I'm trying to create a Table in a PDF by following this example.

I don't know if the Table is:

Telerik,Reporting.Table
or
Telerik.Reporting.Processing.Table.

Either way, I cannot get it to work.

If I use:

Telerik.Reporting.Table table = new();

the table does not have ".Rows."

If I use:

Telerik.Reporting.Processing.Table table = new();

I get the following error:

'Table' does not contain a constructor that takes 0 arguments.

Please help, I have not been able to find a way to get this to work.

Thanks,
Terry

Dess | Tech Support Engineer, Principal
Telerik team
 answered on 14 Jan 2026
1 answer
25 views
We are using 19.0.25.211 of the report viewer (we cannot go higher due to other constraints)

When using Telerik.Reporting.ReportPackager to Unpack an existing report file, we get the following error.

Could not load file or assembly 'Telerik.Reporting.Data.Design, Version=19.0.25.211

I cannot find detail on this specific assembly anywhere.

We need to Unpack the report in order to update internal datasources etc.
Ivet
Telerik team
 answered on 14 Jan 2026
1 answer
27 views
I have the following inside of a table cell:

= "From: " + IsNull(Fields.OriginalLocation, '')
+ "\r\n"
+ "To: " + IsNull(Fields.NewLocation, '')
+ "\r\n"
+ "By: " + IsNull(Fields.Person, '')
+ "\r\n"
+ "On: " + IsNull(Fields.Date, '')

This does not work inside of the web report designer's "Value" field for the table cell. I have tried other methods as well. How can I ensure that there is a new line character between each of these?
Ivet
Telerik team
 answered on 12 Jan 2026
1 answer
55 views

Due to the recent changes regarding developer licensing, I have been asked to get clarity on what is allowed regarding developer license assignment, and the resulting impact on ensuring that built files are correctly licensed.
According to "https://www.telerik.com/purchase/faq/licensing-purchasing", under "How do I assign developers and managers to the purchased licenses?", it states that "The license holder can assign license developers and managers through Your Account in the section Licensed Users and reassign them anytime."  This wording appears to suggest that developer licenses can be reassigned freely as needed, yet my understanding is that this is not the intended interpretation, and that reassignment is only permitted under specific circumstances. I have not been able to find any documentation that explicitly states this.

Our concern arises from how these licensing changes affect the building of .NET assemblies.  According to the license agreement at "https://www.telerik.com/purchase/license-agreement/reporting-dlw-s", we are granted what appears to be an unlimited testing and building license, not restricted by seat count, however the new licensing behavior seems to conflict with this. Any assembly that uses Telerik Reporting and is built by an unlicensed developer will be unlicensed at runtime.

4.A.1.1.2. Testing and Building License. If you purchase a Developer License, you may also use (as applicable based on the Product(s) identified in the Order or included in the DevTools collection(s) identified in the Order) the UI/Kendo Products Product Package, and/or Progress Telerik Reporting Product Package in the testing and building of Your Integrated Products. Testing consists of one or more of the following functions: retrieving source code developed by your Licenced Developers from the source control repository, and/or using a compiled version of Your Integrated Product, for the purposes of quality assurance (i.e. writing tests and manually testing). Building consists of one or more of the following functions: retrieving code developed by Your Licensed Developers from the source control repository, compiling such code (without making or performing any modifications, customizations, configurations, or further development actions which utilize or impact the Products) and checking dependencies and modules, running automated unit tests, linking libraries and code, building and storing artifacts, archiving build logs, and publishing/distributing Your Integrated Products to your Permitted End Users. This testing and building license is not limited to a number of seats.

Additionally, at least one cross‑reference within that license agreement appears to point to an incorrect section number (the one referring to the definition of a user points to the section adjacent to the actual definition); the rest may be worth a brief look.

If there is a page that explicitly clarifies the intended rules around developer license assignment and reassignment, I would appreciate being directed to it.  If no such clarification currently exists, I recommend including this information in the appropriate documentation, as the current wording appears ambiguous.

Thank you in advance for your guidance.

Dimitar
Telerik team
 answered on 09 Jan 2026
1 answer
116 views

Hello.
I am using ASP.NET Framework, and in the Telerik.Reporting.Graph section I have a chart that is populated by a stored procedure.
The output of my stored procedure has three columns: DayOfMonthProductionType, and Value, and it is structured as follows.

DayOfMonth ProductionType Value
1 Staple 1244
1 SumAll 3066.2
1 Tow 1822.2
2 Staple 624.9
2 SumAll 3984.6
2 Tow 3359.7
3 Staple 1865.38
3 SumAll 5126.18
3 Tow 3260.8

ProductionType has three values: TowStaple, and SumAll.

I need SumAll to be displayed as a line chart, and Tow and Staple to be displayed as bar (column) charts within the same chart.
DayOfMonth should be displayed horizontally on the X-axis and represent the days of the month.

No matter how much I tried, I could not limit the ProductionType values in the line chart using the filters in:

  • series < lineSeries1 < GraphGroup < Filters
  • series < SeriesGroup < Filters

so that only ProductionType = SumAll is shown in the line chart.

The only place where I managed to apply this filter was in:

  • Data < SeriesGroup < Filters

but that filters the entire dataset, causing the bar chart to be filtered as well.

Please help me with this issue.
A sample of my code is attached.

Thank you.

 

1 answer
43 views

Hello,

I have a TRDX report where the data comes from SQL stored procedures.
The report works successfully at runtime, and the data is returned correctly by the stored procedures.

However, in the Telerik Report Designer, I get errors like:

Object 'XXX' is not defined in the current context

=Fields.SomeField
=Fields.OtherField

So we are in a situation where:

  • SQL returns the fields correctly

  • The application renders the report correctly

  • But the Designer does not recognize the fields

  • And shows “not defined” errors during design time


What I understand

It looks like the Designer cannot infer the field schema from stored procedures unless they return static metadata.


Question

What is the recommended/best practice way to expose stored procedure output fields to the Designer so we avoid the “Object not defined” errors?

For example:

  • Should we add dummy SELECT statements for metadata?

  • Is there a supported/recommended pattern for TRDX reports using stored procedures?

  • Is there another way to force the Designer to read schema?

  • Important Note

    I am not asking about runtime behavior (which works).
    My issue is purely about design-time schema detection.

Dimitar
Telerik team
 answered on 09 Dec 2025
0 answers
40 views

Hi everyone,

I’m trying to display compiled Telerik reports (.Designer.cs) in a Photino.Blazor desktop application using the BlazorNative ReportViewer.

Here’s what I have so far:

  • I have a local Kestrel web server to be able to serve the REST endpoints required by the Viewer:
   public class Program
   {
       [STAThread]
       public static void Main(string[] args)
       {
           var configuration = new ConfigurationBuilder()
               .SetBasePath(AppContext.BaseDirectory)
               .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
               .AddEnvironmentVariables()
               .Build();

           PhotinoBlazorAppBuilder appBuilder = PhotinoBlazorAppBuilder.CreateDefault(args);

           ConfigureServices(appBuilder.Services, configuration);

           appBuilder.RootComponents.Add<App>("app");

           PhotinoBlazorApp app = appBuilder.Build();

           app.MainWindow.SetSize(700, 460)
               .SetLogVerbosity(0)
               .SetDevToolsEnabled(SystemUtils.IsDevelopment)
               .SetContextMenuEnabled(SystemUtils.IsDevelopment)
               .SetIconFile(iconPath)
               .SetTitle("MyReports");

           AppDomain.CurrentDomain.UnhandledException += (sender, error) =>
           {
               app.MainWindow.ShowMessage("Fatal exception", error.ExceptionObject.ToString());
           };

           string myAllowedOrigins = "_myAllowedOrigins";
           var host = Host.CreateDefaultBuilder()
               .ConfigureServices(services =>
               {
                   services.AddScoped<ReportServiceConfiguration, ReportServiceConfig>();
                   services.AddControllers();

                   services.AddCors(options =>
                   {
                       options.AddPolicy(name: myAllowedOrigins,
                           policy =>
                           {
                               policy.SetIsOriginAllowed(origin => origin.StartsWith("http://localhost"))
                                     .AllowAnyHeader()
                                     .AllowAnyMethod();
                           });
                   }
                   );
               })
               .ConfigureWebHostDefaults(webBuilder =>
               {
                   webBuilder.UseKestrel()
                             .UseUrls("http://localhost:5000")
                             .Configure(appBuilder =>
                             {
                                 appBuilder.UseCors(myAllowedOrigins);
                                 appBuilder.UseStaticFiles();
                                 appBuilder.UseRouting();
                                 appBuilder.UseEndpoints(endpoints =>
                                 {
                                     endpoints.MapControllers();
                                 });
                             });
               })
               .Build();

           host.Start();

           app.Run();
       }
  • I have compiled reports (MyReport.cs/MyReport.Designer.cs/MyReport.resx) instead of .trdp files.
  • I tried creating a report source using InstanceReportSource, like this:
var reportInstance = Factories.ReportFactory.CreateReport(_selectedReport.ReportCode);
_reportSource = new InstanceReportSource { ReportDocument = reportInstance };


In my Razor page:

<ReportViewer ReportSource="@_reportSource"
              ViewMode="@_viewMode"
              ScaleMode="@_scaleMode"
              Height="600px"
              Width="100%" />


Problem:

  • The BlazorNative <ReportViewer> expects a ReportSourceOptions type for ReportSource, not InstanceReportSource.
  • If I use ReportSourceOptions, I’m not sure how to pass compiled .Designer.cs reports and parameters.

 

Questions:

  • How can I correctly display a compiled .Designer.cs report in BlazorNative/Photino using <ReportViewer>?
  • How do I pass parameters to the report if I use ReportSourceOptions?
  • Do I need to switch to .trdp files, or can I make compiled reports work locally?
Antoine
Top achievements
Rank 1
 updated question on 08 Dec 2025
0 answers
66 views
I laid out in the detail section a form that will be physically printed and I just need the number from the database to appear in the upper right. My goal is for the form to repeat for every row in the database. Currently a table with the database put in the upper right shows all the values in the table and it pushes everything below it down page.
Lawrence
Top achievements
Rank 1
 asked on 03 Dec 2025
1 answer
46 views

This is my declaration in the .cshtml file:

        @(Html.TelerikReporting().ReportViewer()
                .Id("reportViewer1")
                .ServiceUrl(Url.Content("~/api/reports"))
                .ReportSource(new TypeReportSource() { TypeName = "ReportLibrary." + Model.FormReportsModel.ReportID.ToString() + ", ReportLibrary" })
                .ViewMode(ViewMode.Interactive)
                .ScaleMode(ScaleMode.Specific)
                .Scale(1.0)
                .PersistSession(false)
                .PrintMode(PrintMode.AutoSelect)
                .EnableAccessibility(true)
                .ClientEvents(events => events.RenderingBegin("onRenderingBegin"))
                .ClientEvents(events => events.RenderingEnd("onRenderingEnd"))
                .ParameterEditors(
                    editors => editors
                        .CustomEditors(new CustomParameterEditor
                        {
                            MatchFunction        = "customMatch",
                            CreateEditorFunction = "createCustomEditor"
                        })
                )
        )


It's been running fine for years without the "ParameterEditors" bit.  I added that not because I want to really edit a parameter, only because I realized I could change the initial hint:

            function customMatch(p1) {
                if (p1.name === "AccountID")       p1.Error = "Please choose one";
                if (p1.name === "FiscalManyYears") p1.Error = "Please choose at least two";
                return false;
            }

            function createCustomEditor(placeholder, options) {
                // This is not needed, because the previous function never returns TRUE.
            }

which works great on the new report . . . but suddenly all of the other reports are failing, because the [Preview] button never enables, no matter what selections are clicked for the parameters.  If I remove the ".ParameterEditors()" clause, the [Preview] button reverts to behaving as expected.

I would be happy if someone could point out a mistake I'm making.

David
Top achievements
Rank 1
Iron
 updated answer on 03 Dec 2025
1 answer
38 views

Hi,

below here example page

"...\Telerik Reporting 2025 Q3\Examples\CSharp\.NET 8\BlazorIntegrationDemo\Components\Pages\Home.razor"

changed to have runtime ReportSource setting (in original example it is defined in design-time)

 

piece below breaks page execution - it doesn't show report

        // Business logic - long-running request to db or call of far service
        await System.Threading.Tasks.Task.Delay(3000);

 

not working page:

@page "/" @rendermode InteractiveServer @using Telerik.ReportViewer.Blazor @inject IJSRuntime JsInterop <link rel="stylesheet" id="TelerikThemeLink" href="https://kendo.cdn.telerik.com/themes/10.2.0/default/default-ocean-blue.css" /> <style> article.content { height: 100%; } #rv1 { height: 84vh; margin-top: 10px; } .trv-report-viewer { width: 100%; height: 880px; } </style> @* Create the ReportViewerWidget *@ <p>This Blazor Report Viewer instance displays reports hosted locally using the Reporting REST service. For more information, visit the <a target="_blank" href="https://docs.telerik.com/reporting/blazor-report-viewer">Blazor Report Viewer</a> article.</p> <button type="button"class="btn btn-light btn-sm" @onclick="RefreshReport">Refresh Report</button> <button type="button"class="btn btn-light btn-sm" @onclick="Print">Print Report</button> <select @onchange="ChangeTheme" id="theme-switcher"> <option selected value="default-ocean-blue">Default Ocean Blue</option> <option value="default-main">Default Main</option> <option value="default-main-dark">Default Main Dark</option> <option value="default-orange">Default Orange</option> <option value="default-nordic">Default Nordic</option> <option value="default-urban">Default Urban</option> <option value="classic-main">Classic Main</option> <option value="classic-main-dark">Classic Main Dark</option> <option value="classic-moonlight">Classic Moonlight</option> <option value="classic-green">Classic Green</option> <option value="classic-lavender">Classic Lavender</option> <option value="classic-silver">Classic Silver</option> <option value="classic-metro">Classic Metro</option> <option value="classic-metro-dark">Classic Metro Dark</option> <option value="bootstrap-main">Bootstrap Main</option> <option value="bootstrap-vintage">Bootstrap Vintage</option> <option value="material-sky">Material Sky</option> <option value="material-aqua-dark">Material Aqua Dark</option> <option value="material-lime">Material Lime</option> <option value="material-lime-dark">Material Lime Dark</option> </select> <ReportViewer @ref="reportViewer1" ViewerId="rv1" ServiceUrl="/api/reports" ReportSource=@ReportSource Parameters="@(new ParametersOptions { Editors = new EditorsOptions { SingleSelect = EditorType.ListView , MultiSelect = EditorType.ListView} })" ScaleMode="@(ScaleMode.Specific)" Scale="1.0" SendEmail=@(new SendEmailOptions { Enabled = true }) ClientEvents="@(new ClientEventsOptions() { ExportBegin = "trvEventHandlers.exportBegin", ExportEnd = "trvEventHandlers.exportEnd" })" /> @code { ReportViewer reportViewer1; ReportSourceOptions ReportSource { get; set; } protected override async Task OnInitializedAsync() { awaitbase.OnInitializedAsync();

// -----------<ISSUE_HERE>---------------

// Business logic - long-running request to db or call of far service

await System.Threading.Tasks.Task.Delay(3000);

// ------------ </ISSUE_HERE>

 

 

 

this.ReportSource = new ReportSourceOptions { Report = "Report Catalog.trdp", Parameters = new Dictionary<string, object>() // set of predefined parameters { { "ProductCategory", "Clothing" }, { "ProductSubcategory", new [] { "Caps", "Gloves" } } } }; } async void RefreshReport() { await reportViewer1.RefreshReportAsync(); } async void Print() { await reportViewer1.Commands.Print.ExecuteAsync(); } async Task ChangeTheme(ChangeEventArgs e) { // Obtain the Kendo CDN Url values from the dropdown selectionstring? themeIdFull = e.Value asstring; if (String.IsNullOrEmpty(themeIdFull)) { return; } int firstDashIndex = themeIdFull.IndexOf("-", StringComparison.Ordinal); string themeIdBase = themeIdFull.Substring(0, firstDashIndex); // Set the URL to the Kendo theme - it can be a relative URL pointing to a local resource or to a custom themestring newThemeCdnUrl = $"https://kendo.cdn.telerik.com/themes/10.2.0/{themeIdBase}/{themeIdFull}.css"; // call the JS interop that will switch out the <link> elementawait JsInterop.InvokeVoidAsync("changeKendoTheme", new[] { newThemeCdnUrl }); } }


<ReportViewer @ref="reportViewer1"
              ViewerId="rv1"
              ServiceUrl="/api/reports"
              ReportSource=@ReportSource
              Parameters="@(new ParametersOptions { Editors = new EditorsOptions { SingleSelect = EditorType.ListView , MultiSelect = EditorType.ListView} })"
              ScaleMode="@(ScaleMode.Specific)"
              Scale="1.0"
              SendEmail=@(new SendEmailOptions { Enabled = true })
              ClientEvents="@(new ClientEventsOptions() {
                                  ExportBegin = "trvEventHandlers.exportBegin",
                                  ExportEnd = "trvEventHandlers.exportEnd"
                              })" />
@code {
    ReportViewer reportViewer1;
    ReportSourceOptions ReportSource { get; set; }

    protected override async Task OnInitializedAsync()
    {
        await base.OnInitializedAsync();
        
        // Business logic - long-running request to db or call of far service
        await System.Threading.Tasks.Task.Delay(3000);

        this.ReportSource = new ReportSourceOptions
        {
            Report = "Report Catalog.trdp",
            Parameters = new Dictionary<string, object>() // set of predefined parameters
            {
               { "ProductCategory", "Clothing" },
               { "ProductSubcategory", new [] { "Caps", "Gloves" } }
            }
        };
    }

Dimitar
Telerik team
 answered on 26 Nov 2025
Top users last month
Cynthia
Top achievements
Rank 1
Iron
Toby
Top achievements
Rank 3
Iron
Iron
Iron
Danielle
Top achievements
Rank 1
Iron
Iron
Joel
Top achievements
Rank 3
Bronze
Bronze
Iron
yw
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?