Hi. I try to use this example for create dynamically generated report. I'm want grouping output as described here.Only one change in code from documentation it change
group1.Groupings.Add(
new
Telerik.Reporting.Grouping(
"=Fields.ProductID"
));
to
group1.Groupings.Add(
new
Telerik.Reporting.Grouping(
"=Fields.ProductID"
));
As I understood this allow me output row with col1=1 in separate group with footer and header, col1=2 in separate group with footer and header, and two col1=4 with separate group. But it not work as expected. I see one header, one footer and all data between this header and footer.
What I do wrong?
Thank you in advance.
And I want to get the selected value in the ItemDataBinding event, but it is always null or it keeps the value if I set itthis.ReportParameters["GroupBy"].Value.ToString()
manually.
If I add a textbox in the editor with its value set to :Parameters.GroupBy.Value then the selected field is bound correctly.
Thanks for you help.
I have a report where someone could pass in a parameter to show "Detail" for the record. The "detail" is tied to a second within the Telerik Report. I am unsure of how to get it to fire and show as it should. I have added the primary and displays the records in the group header.
Attached is an image of what my report looks like SQLDatasource1 is the primary and uses parameters passed in to display. If input parameter DetailFlag = true then I want to show the Detail Record which is tied to SQLDataSource2.
Tried the following in the code-behind but not displaying.
Private
Sub
detail_ItemDataBound(sender
As
Object
, e
As
EventArgs)
Handles
detail.ItemDataBound
Dim
section
As
Processing.ReportSection = TryCast(sender, Processing.ReportSection)
If
section.Report.Parameters(
"DetailFlag"
).Value =
"True"
Then
Table1.Visible =
True
Else
Table1.Visible =
False
End
If
section.Style.BackgroundColor = groupHeaderSection.Style.BackgroundColor
End
Sub
Private
Sub
pageHeaderSection1_ItemDataBound(sender
As
Object
, e
As
EventArgs)
Handles
pageHeaderSection1.ItemDataBound
Dim
section
As
Telerik.Reporting.Processing.PageSection = TryCast(sender, Processing.PageSection)
Dim
txtAsOf
As
Processing.TextBox =
DirectCast
(Processing.ElementTreeHelper.GetChildByName(section,
"txtAsOf"
), Processing.TextBox)
Dim
txtReportParam
As
Processing.TextBox =
DirectCast
(Processing.ElementTreeHelper.GetChildByName(section,
"txtReportParam"
), Processing.TextBox)
txtAsOf.Value =
"AS OF "
& Today.ToString(
"MM/dd/yyyy"
)
txtReportParam.Value =
"FOR "
& section.Report.Parameters(
"Area"
).Value.ToString &
" - "
& section.Report.Parameters(
"Status"
).Value.ToString
End
Sub
One of the reports on my company's product, which uses Telerik Reporting R3 2016, is intermittently generating an error about resolving the dsGiftCard object data source that it uses. Sometimes, the report viewer says that it is unable to create a report instance, while other times it says that it is unable to get the parameters. The error only occurs on our deployments and not on our local builds. Our local builds load the report much faster. Usually the report loads fine, but this error generates on such a random basis my team is having trouble tracking it and finding out the cause. We're hoping someone here at Telerik can help us resolve this issue.
exceptionMessage: "An error has occurred while resolving 'dsGiftCard' data source: An error occurred while invoking data retrieval method."
exceptionType: "Telerik.Reporting.Processing.Data.ObjectDataSourceException"
message: "An error has occurred."
stackTrace: " at Telerik.Reporting.Processing.Data.ObjectDataSourceInstanceResolver.TryResolveAsMethodInvocationOnTarget(Type type, Func`1 resolveTarget, String dataMember, ObjectDataSourceParameterCollection parameters, Object& result)
↵ at Telerik.Reporting.Processing.Data.ObjectDataSourceInstanceResolver.TryResolveAsMethodInvocation(Object dataSource, String dataMember, ObjectDataSourceParameterCollection parameters, Object& instance)
↵ at Telerik.Reporting.Processing.Data.ObjectDataSourceInstanceResolver.ResolveDataSource(Object dataSource, String dataMember, Boolean evaluateParametersValues)
↵ at Telerik.Reporting.Processing.Data.ObjectDataProviderBase`1.ResolveDataSource()
↵ at Telerik.Reporting.Processing.Data.ObjectDataEnumerable.ResolveEnumerable()
↵ at Telerik.Reporting.Processing.Data.ObjectDataEnumerableBase.GetEnumerator()
↵ at Telerik.Reporting.Processing.Data.SeedDataAdapter.GroupData(IEnumerable`1 rawData)
↵ at Telerik.Reporting.Processing.Data.SeedDataAdapter.Execute(IEnumerable`1 data)
↵ at Telerik.Reporting.Processing.Data.ResultSetAdapter.Execute(IEnumerable`1 data)
↵ at Telerik.Reporting.Processing.Data.MultidimentionalDataProvider.Execute(MultidimensionalQuery query)
↵ at Telerik.Reporting.Processing.ReportParametersManager`1.CalculateParameterProperties(P parameter, IReportParameter parameterDef, IDictionary`2 parameterValues)
↵ at Telerik.Reporting.Processing.ReportParametersManager`1.Calculate(P parameter, IDictionary`2 parameterValues)
↵ at Telerik.Reporting.Processing.ReportParametersManager`1.CalculateChildren(P parameter, IDictionary`2 parameterValues)
↵ at Telerik.Reporting.Processing.ReportParametersManager`1.CalculateParameters(IDictionary`2 parameterValues)
↵ at Telerik.Reporting.Processing.DocumentParametersManager`1.CalculateParameters(IDictionary`2 values, Boolean ensureCalculated)
↵ at Telerik.Reporting.Processing.DocumentParametersManager`1.GetMergedParameters(IDictionary`2 values)
↵ at Telerik.Reporting.Services.WebApi.ReportsControllerBase.GetParameters(String clientID, ClientReportSource reportSource)
↵ at lambda_method(Closure , Object , Object[] )
↵ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
↵ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
↵--- End of stack trace from previous location where exception was thrown ---
↵ at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
↵ at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
↵ at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
↵--- End of stack trace from previous location where exception was thrown ---
↵ at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
↵ at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
↵ at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
↵--- End of stack trace from previous location where exception was thrown ---
↵ at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
↵ at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
↵ at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()"
Here is the C# method that the data source gets its data from:
public
static
DataTable RunReport(
string
sessionId,
string
paramsJson,
int
tableIndex,
int
? savedDataId,
int
reportId)
{
Stopwatch sw =
new
Stopwatch();
sw.Start();
DataSet ds =
null
;
DataSet dsCache =
null
;
try
{
var appSettings =
new
AppSettings();
var expires = appSettings.Get(
"Cache.ExpirationInSeconds"
, 2);
var urn = UrnId.CreateWithParts(sessionId, reportId.ToString(), paramsJson.GetHashCode().ToString());
dsCache = _memCache.Get<DataSet>(urn);
if
(dsCache !=
null
)
{
_memCache.Replace(urn, dsCache, TimeSpan.FromSeconds(expires));
Log.Debug(
"Data found in cache"
);
return
dsCache.Tables[tableIndex];
}
ICacheClient cacheClient =
null
;
if
(appSettings.Get(
"Cache.Provider"
,
"memory"
).ToLower() ==
"memory"
)
cacheClient =
new
MemoryCacheClient();
else
cacheClient = AwsDynamoDbLogic.GetGenericDynamoDbCacheClient(AwsDynamoDbLogic.ResolveAwsDynamoDbSettings(
new
AppSettings()));
var cdp = ConnectionDataProviderFactory.TryResolve(sessionId, cacheClient, appSettings);
var dialectProvider =
new
MeevoSqlServerOrmLiteDialectProvider(() => cdp);
var fac =
new
ReportDbConnectionFactory(cdp, dialectProvider);
var repo =
new
ReportRepository(fac);
var logic =
new
ReportLogic(repo);
ds = AsyncContext.Run(() => logic.RunReportAsync(reportId, CancellationToken.None, paramsJson))
as
DataSet;
//Remove by pattern will enumerate through entire dictionary and remove all entries that have expired or macth the regex
//lINE 331
_memCache.RemoveByPattern(
"{0}*"
.Fmt(UrnId.CreateWithParts(sessionId)));
_memCache.Add(urn, ds, TimeSpan.FromSeconds(expires));
Log.Debug(
"Count of data sets is: "
+ ds?.Tables?.Count);
if
(ds ==
null
)
Log.Debug(
"Data set is null"
);
return
ds.Tables[tableIndex];
}
catch
(Exception ex)
{
Log.Error(
"Source:\n"
+ ex.Source
+
"\n\nTarget Site:"
+ ex.TargetSite
+
"\n\nStack trace:\n"
+ ex.StackTrace
+
"\nReport ID: "
+ reportId.ToString()
+
"\nJson parameters: "
+ paramsJson
+
"\nTable index: "
+ tableIndex
+
"\n\nTable count: "
+ ds?.Tables?.Count
+
"\n\nCached table count: "
+ dsCache?.Tables?.Count);
throw
;
}
finally
{
sw.Stop();
Log.Debug(
"Execution Time: "
+ sw.ElapsedMilliseconds.ToString());
}
}
Hi,
One of our customer has an issue to selected item from report parameters dropdown.
When dropdown is opened first time, all items shows correctly. After item selection, the first item disappear!?
This happens only IE 11 (version 11.2244.14393.0), no problems with Firefox or Chrome
What could cause this behavior?
BR,
Auvo