I have an MVC application that needs to allow dynamically changing connection strings and localization. The issue is that after I open up the first report instance, I am still getting the same report even after changing connection strings or the localization. Here is my code:
private
ReportServiceConfiguration GetReportServiceConfiguration()
{
var userId = _httpContext.User.FindFirst(ClaimTypes.NameIdentifier);
var connectionString = _configuration.GetConnectionString(
"db"
);
var locale =
"en"
;
if
(userId !=
null
)
{
var user = _userManager.FindByIdAsync(userId.Value).Result;
var tenantClaim = (_userManager.GetClaimsAsync(user).Result).SingleOrDefault(c => c.Type ==
"UserTenant"
);
var localeClaim = (_userManager.GetClaimsAsync(user).Result).SingleOrDefault(c => c.Type ==
"UserLocale"
);
if
(tenantClaim !=
null
)
{
connectionString = connectionString.Replace(
"=db"
,
"="
+ tenantClaim.Value);
}
if
(localeClaim !=
null
)
{
locale = localeClaim.Value;
}
}
var resolver =
new
NexcorTypeResolver(connectionString, locale);
return
new
ReportServiceConfiguration
{
HostAppId =
"Test"
,
Storage =
new
FileStorage(
this
.reportsPath),
ReportResolver = resolver,
ReportSharingTimeout = 0,
ClientSessionTimeout = 1
};
}
}
public class NexcorTypeResolver : IReportResolver
{
public string _connectionString;
public string _locale;
public NexcorTypeResolver(string connectionString, string locale)
{
_connectionString = connectionString;
_locale = locale;
}
public ReportSource Resolve(string report)
{
var cultureInfo = new System.Globalization.CultureInfo(_locale);
System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
var connectionStringHandler = new ReportConnectionStringManager(_connectionString);
var sourceReportSource = new InstanceReportSource { ReportDocument = new Worksheet() };
var reportSource = connectionStringHandler.UpdateReportSource(sourceReportSource);
return reportSource;
}
}
How can i do to build a report from a different version ?
Dear Sir/Madam,
4 hours search, downloading, trying and can't find the solution to make WPF report viewer works with the latest Telerik version of WPF and Reporting
Framework: 4.7.1
Telerik WPF version: 2018.2.620.45
Telerki Report Version: 12.1.18.620
Basically, New Blank telerik WPF Project -> All references are added -> Version 2018.2.620.45 (tried both, xaml and noxaml)
- Now Add Telerik Report R2 2018 (Blank)
- Then Add Telerik Report Viewer Window R2 2018
- Select Embedded, Existing Report definition, Type Report Definition, (wait for build to done) -> Report1
- Finish: In the Log page got this error:
Error: Fail to add project reference System.Runtime.InteropServices.COMException (0x80004005): Adding 'TelerikWpfApp6' as a project-to-project reference would cause this project to reference itself. at VSLangProj.References.AddProject(Project pProject) at Telerik.Reporting.Vs.Common.ProjectManager.TryAddProjectReference(Project projectToReference)
and when I run the project i got:
System.Windows.Markup.XamlParseException: ''Set property 'System.Windows.ResourceDictionary.Source' threw an exception.' Line number '65' and line position '10'.'
FileNotFoundException: Could not load file or assembly 'Telerik.ReportViewer.Wpf.Themes, Culture=neutral' or one of its dependencies. The system cannot find the file specified.
While Telerik.ReportViewer.Wpf.Themes is in the reference.
Many thanks.
Can someone provide some reference to using Telerik Reporting with WPF & EF Core 2.1, maybe a simple example. I've tried creating Report Library, when I go to configure my entitydatasource, I select my existing data connection click next and no DBContext is found even thought I have several? Being new to C# Telerik documentation on the subject is not any use to me..
Thanks in advance!!
I am attempting to follow the steps provided in the KB article How to: Create Multi-Column Report - Across the Page and Then Down. However, a few things are unclear to me.
1.) Do I need to created group sections on the actual report for this to work, or can I bind my SQL data source to the table itself and only have a single detail section consisting of this table alone?
2.) Once the data source is squared away, and I divide and mod the index of the data, do I divide/mod by the total columns of the data (for instance, my data is 3 columns, so I will technically have 6 columns across the page) or is the column number specifying how many times I want the data to be placed across the page (for instance, 2 columns consisting of 3 data columns)
3.) Once that is taken care of, where specifically do I place my grouping headers and detail values?
Hi,
I update Telerik.Reporting from 2016.10.1.16.504 to 12.1.18.620 by Upgrade Wizard. When render a report I have an exception System.EntryPointNotFoundException. The solution has been cleaned and rebuilt after the update Telerik.Reporting. I also checked all .dll files – all of them are new version. Do you have any information how to fix the issue?
I create a panel, set width/height as 100px / 50px and padding as 10px. When render to html, width/height of the div tag just only 80px x 30px, padding still be 10px. If I remove padding, width/height rendered will be 100px / 50px.
How can I have width/height is 100px / 50px even if I have padding?
Hi,
I looked around but could not find a solution
This is what we have but when we have multiple header items in dsHeader.
I wish it prints out different header data at once. the code below shows and prints only the first header and its body
What I would like to do is print out multiple data consecutively when dsHeader's length is more than one using the same code
odsHeader is object header source provided by Telerik Reporting R1 2017
namespace DMG.MRP.Report.Design
{
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using Telerik.Reporting;
using Telerik.Reporting.Drawing;
using System.Data;
using DMG.RPT.Biz;
/// <summary>
/// Summary description for RPT_PO.
/// </summary>
public partial class RPT_PO : Telerik.Reporting.Report
{
public RPT_PO()
{
InitializeComponent();
}
public void LoadDataReport(string po_no)
{
if (po_no == null)
{
return;
}
DataSet dsHeader = null, dsDetail = null;
using (RPT_Biz biz = new RPT_Biz())
{
dsHeader = biz.GetHeader_PO(po_no);
odsHeader.DataSource = dsHeader;
odsHeader.DataMember = "Table";
dsDetail = biz.GetDetail_PO(po_no);
odsHeader.DataSource = dsDetail;
odsHeader.DataMember = "Table";
}
this.DataSource = dsHeader.Tables["Table"];
table1.DataSource = dsDetail.Tables["Table"];
}
}
}