Hi,
I am facing a scaling problem with PivotView.
When the bound data is very limited, say 6000, everything is fluent.
When the underling goes to 600 000 items, the application is not usable:
1) the data population is very slow
blazor_pivottable.Pages.Index: Information: [pivot-mkt] PivotEnginePopulating
blazor_pivottable.Pages.Index: Information: [dbg-perf] UI Refresh 600000 Mkt took 00:00:59.4519350
blazor_pivottable.RefreshingCache: Information: Skip UI update, UI is busy
blazor_pivottable.RefreshingCache: Information: Start UI update, UI is busy
blazor_pivottable.Pages.Index: Information: [dbg-perf] UI Refresh STARTS ...
blazor_pivottable.Pages.Index: Information: [pivot-mkt] PivotEnginePopulated
2) click on field list icon takes long time to open the dialog
3) drag and drop field list to configure the pivot table very slow.
4) application brokes:
Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: Error: Unhandled exception in circuit 'k0laMIlEvKcZOB7okgGjZgvuWee05BwCbEBD-4VnM8A'.
System.NullReferenceException: Object reference not set to an instance of an object.
at Syncfusion.Blazor.Charts.Internal.ChartSeriesRenderer.GetAxisLength()
at Syncfusion.Blazor.Charts.Internal.ChartSeriesRenderer.SeriesRenderer()
at Syncfusion.Blazor.Charts.Internal.ChartSeriesRenderer.HandleChartSizeChange(Rect rect)
at Syncfusion.Blazor.Charts.Internal.ChartSeriesRendererContainer.HandleChartSizeChange(Rect rect)
at Syncfusion.Blazor.Charts.SfChart.UpdateRenderers()
at Syncfusion.Blazor.Charts.SfChart.OnLayoutChange()
at Syncfusion.Blazor.Charts.SfChart.DelayLayoutChange()
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteSynchronously(TaskCompletionSource`1 completion, SendOrPostCallback d, Object state)
at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<>c.<.cctor>b__23_0(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteBackground(WorkItem item)
blazor_pivottable.RefreshingCache: Information: Skip UI update, UI is busy
blazor_pivottable.RefreshingCache: Information: Start UI update, UI is busy
blazor_pivottable.Pages.Index: Information: [dbg-perf] UI Refresh STARTS ...
blazor_pivottable.Pages.Index: Information: [pivot-mkt] PivotEnginePopulating
blazor_pivottable.Pages.Index: Information: [dbg-perf] UI Refresh 600000 Mkt took 00:00:49.3102194
blazor_pivottable.Pages.Index: Information: [pivot-mkt] PivotEnginePopulated
blazor_pivottable.Pages.Index: Information: Disposed
blazor_pivottable.Pages.Index: Information: [dbg-perf] UI Refresh 600000 Mkt took 00:00:33.1504902
Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: Error: Unhandled exception in circuit 'k0laMIlEvKcZOB7okgGjZgvuWee05BwCbEBD-4VnM8A'.
System.Collections.Generic.KeyNotFoundException: The given key 'PrimaryXAxis' was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Syncfusion.Blazor.Charts.Internal.ChartAxisRendererContainer.AssignAxisToSeries(IEnumerable`1 seriesList, Boolean refreshSeries)
at Syncfusion.Blazor.Charts.SfChart.InitiAxis()
at Syncfusion.Blazor.Charts.SfChart.RefreshChart()
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteSynchronously(TaskCompletionSource`1 completion, SendOrPostCallback d, Object state)
at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<>c.<.cctor>b__23_0(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteBackground(WorkItem item)
The attached fake code illustrate the problem in production.
you can use appsettings.json to configure the data size and data refreshing interval:
"dataSize": 600000,
"cycleInSeconds": 30
Can you please suggest what can I do to improve the performance ?
Many thanks,
Yi
Hi Yi Han,
This problem occurs because the time interval you specified is insufficient to load the 6,00,000 data. However, we are analyzing the reported problem at our end. We will update further details within two business days (April 26, 2022).
Regards,
Angelin Faith Sheeba.
Hi Angelin Faith Sheeba,
Once you find a way to perf tune the use case with 600 000 items (the data structure in my uploaded code), what's the latency can I expect ?
Thanks,
Yi
Hi Yi Han,
We would like to inform you that the virtualization feature only works with data sources that have unique records. As a result, when we offer 1 million data with no unique records, the pivot table renders normally even with virtualization enabled. For this kind of scenario, you can use AllowDataCompression property along with virtualization feature that will increase the component performance on rendering. This AllowDataCompression property allows the given data to be compressed based on the uniqueness of the raw data, and unique records will be used as a data source to the Pivot Table rendering further. These compressed data will then be used throughout the component for further operations. Please refer the code example.
Code Example:
appSettings.json
|
"dataSize": 600000, "cycleInSeconds": 15
|
Index.razor
|
<SfPivotView TValue="MarketOrderVm" EnableVirtualization=true AllowDataCompression="true"> </SfPivotView>
|
Meanwhile, we have modified your sample by enabling AllowDataCompression option and increase your time interval to 15s.
Sample: https://www.syncfusion.com/downloads/support/directtrac/general/ze/PivotScalingProblem-294223318
Also, please refer the following documentation for more details about “Data Compression”.
Document: Virtual Scrolling in Blazor Pivot Table Component | Syncfusion
On the other hand, we're working on a sample that will use data compression in the sample itself, which will boost performance even more. We will share you the sample within 2 business days (April 27, 2022).
We appreciate your patience until then. Please let us know if you have any concerns.
Regards,
Angelin Faith Sheeba.
Hi,
Thanks for your reply.
For me, augmenting or reducing the refreshing interval (cycleInSeconds) should not change the performance. The Refresh skips when UI is busy doing update - please refer to RefreshingCache.cs.
The following exception disappears once EnableVirtualization is disabled.
[18:05:07] fail:
Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: Error: Unhandled exception in circuit 'jbDZ5W84PIa3kBpfgJAeqgrVPAH89MKFuB-5M7m23Vg'.
System.NullReferenceException: Object reference not set to an instance of an object.
at Syncfusion.Blazor.Charts.Internal.ChartSeriesRenderer.GetAxisLength()
at Syncfusion.Blazor.Charts.Internal.ChartSeriesRenderer.SeriesRenderer()
at Syncfusion.Blazor.Charts.Internal.ChartSeriesRenderer.HandleChartSizeChange(Rect rect)
at Syncfusion.Blazor.Charts.Internal.ChartSeriesRendererContainer.HandleChartSizeChange(Rect rect)
at Syncfusion.Blazor.Charts.SfChart.UpdateRenderers()
at Syncfusion.Blazor.Charts.SfChart.OnLayoutChange()
at Syncfusion.Blazor.Charts.SfChart.DelayLayoutChange()
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteSynchronously(TaskCompletionSource`1 completion, SendOrPostCallback d, Object state)
at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<>c.<.cctor>b__23_0(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteBackground(WorkItem item)
1) EnginePopulated
In this thread https://www.syncfusion.com/forums/172612/how-to-update-pivot-table-with-source-data-refreshed, your collegue suggested me using 'EnginePopulated' event to give me the signal that a new refresh can kick in. That's the why `CanUpdateData` is introduced.
With debugging, we can see clearly that UI is displayed several seconds after EnginePopulated being triggered. Please use the console output.
So EnginePopulated might not the green flag to say "ok, now you can kick off a new refreshing" ?
2) EnableVirtualization
According to your doc:
EnableVirtualization
Allows to load the large amounts of data without any performance degradation by rendering rows and columns only in the current content view port. Rest of the aggregated data will be brought into view port dynamically based on vertical or horizontal scroll position.
So with large number of unique row and column headers, all data can't be displayed in the visible zone, EnableVirtualization can improve the performance - this is not my case. So it is useless, right? Further more, there is a bug on EnableVirtualization which prevent the filtering from working correctly: https://www.syncfusion.com/forums/174433/filter-does-not-work-when-enablevirtualization-true?reply=Sg3kRd
3) AllowDataCompression
Does not seem to improve the performance - I tried enable/disable it.
4) The problem 2 and 3 in my initial question are still there.
Please suggest.
Thanks.
Yi
Hi Yi Han,
As we mentioned in our previous update, we are currently analyzing your requirements and preparing the sample to ensure performance. As a result, we will update the information by tomorrow (April 27, 2022). Until then, we appreciate your patience.
Regards,
Angelin Faith Sheeba.
Hi Yi Han,
We have tried to achieve the data compression at the sample level. But we are facing complexity to meet your requirement. As a result, we have consider to improve the performance with data compression at component source itself and logged an improvement task for that, and it will be available in 2022 Vol 2 SP Release which is scheduled to be released in July 2022. You can track the same by using the following link.
https://www.syncfusion.com/feedback/34504/improve-pivot-table-performance-with-data-compression
Please let us know if you have any concerns.
Regards,
Angelin Faith Sheeba.
Hi
Thank you for your reply.
The use case is in our production - in the current state, the view is not usable.
That't why I would like very much to have a solution finding ASAP.
Do you want a production support ticket?
The production support plateform seems broken now: https://support.syncfusion.com/create
Thanks
Yi
Hi Yi Han,
We're now working on roadmaps for the 2022 Vol2 main release, and we'll consider your request into account, which is estimated to be rolled out at the end of June 2022.
We appreciate your patience until then.
Regards,
Angelin Faith Sheeba.
Hi Yi Han,
Sorry for the inconvenience.
We regret to inform you that, due to its priority and other high priority tasks in the queue, we are unable to consider your requirement in our 2022 Volume 2 main release. However, we will consider this in the Vol 2, SP release which is estimated to schedule at end of July, 2022.
Please let us know if you have any concerns.
Regards,
Angelin Faith Sheeba.
Hi,
can you please make an update on this?
Regards,
Yi
Hi Yi Han,
We improved the pivot table component's rendering time with the data compression option. And it will be available in our 2022 Volume 2 SP release, which is estimated to be rolled out at mid of August 2022.
We appreciate your patience until then.
Angelin Faith Sheeba.
Hi Yi Han,
We are glad to announce that our Essential Studio weekly release V20.2.39 is rolled out and the improvement to render pivot table with DataCompression option has been included in this release. Please refer to the following sample.
Sample: https://www.syncfusion.com/downloads/support/directtrac/general/ze/PivotTable-366694193
We thank you for your support and appreciate your patience in waiting for this release. Please contact us if you require any further assistance.
Regards,
Angelin Faith Sheeba.
Hi,
thx for your reply
but are you sure that the perf issue is resolved ?
the app is just hanging ...
(Index.razor)
Then ...
Hi Yu Han,
Sorry for the inconvenience. For your reference, we have modified your sample below. The pivot table will now refresh can be done on setting “dataSize” up to 1M combinational records and a minimum cycle time of 5 seconds. And you can use the Pivot Table component with or without the data compression option enabled to obtain this performance.
Sample: https://www.syncfusion.com/downloads/support/directtrac/general/ze/PivotTable_(4)913600800
Additionally, while executing the Pivot Table component with the field list option enabled, we encounter some performance problems. And currently we are analyzing it at our end. We will update further details within two business days (17-August-2022). Until then, we recommend you to use the Pivot Table component without enabling field list option disabled. However, using the fields panel, which is positioned above the grouping bar and works similarly to the field list UI, you can add and remove fields that are available in the given data source.
To know more about fields panel option, please refer the below document link.
Document: https://blazor.syncfusion.com/documentation/pivot-table/grouping-bar#show-or-hide-fields-panel
Please let us know if you have any concerns.
With regards,
Rajeshkannah Gopalakrishnan
Hi Yu Han,
Sorry for the inconvenience. For your reference, we have modified your sample below. The pivot table will now refresh can be done on setting “dataSize” up to 1M combinational records and a minimum cycle time of 5 seconds. And you can use the Pivot Table component with or without the data compression option enabled to obtain this performance.
Sample: https://www.syncfusion.com/downloads/support/directtrac/general/ze/PI1929~1-1562706016
Additionally, while executing the Pivot Table component with the field list option enabled, we encounter some performance problems. And currently we are analyzing it at our end. We will update further details within two business days (17-August-2022). Until then, we recommend you to use the Pivot Table component without enabling field list option disabled. However, using the fields panel, which is positioned above the grouping bar and works similarly to the field list UI, you can add and remove fields that are available in the given data source.
To know more about fields panel option, please refer the below document link.
Document: https://blazor.syncfusion.com/documentation/pivot-table/grouping-bar#show-or-hide-fields-panel
Please let us know if you have any concerns.
With regards,
Rajeshkannah Gopalakrishnan
Hi
Rajeshkannah,
thx for your reply.
https://www.syncfusion.com/downloads/support/directtrac/general/ze/PI1929~1-1562706016 is not the right zip, I think.
With https://www.syncfusion.com/downloads/support/directtrac/general/ze/PivotTable_(4)913600800:
with AllowDataCompression=false EnableVirtualization=false:
[15:09:16] fail: Microsoft.Extensions.Hosting.Internal.Host[9] BackgroundService failed System.InvalidOperationException: Collection was modified; enumeration operation may not execute. at System.Collections.Generic.Dictionary`2.ValueCollection.Enumerator.MoveNext() at blazor_pivottable.RefreshingCache.Refresh() in D:\PivotTable SYNCFUSION NEW RELEASE\PivotScalingProblem\PivotScalingProblem\RefreshingCache.cs:
line 22 at blazor_pivottable.RefreshingCacheService.ExecuteAsync(CancellationToken stoppingToken) in D:\PivotTable SYNCFUSION NEW RELEASE\PivotScalingProblem\PivotScalingProblem\RefreshingCacheService.cs:line 24 at Microsoft.Extensions.Hosting.Internal.Host.TryExecuteBackgroundServiceAsync(BackgroundService backgroundService)
[15:09:16] crit: Microsoft.Extensions.Hosting.Internal.Host[10] The HostOptions.BackgroundServiceExceptionBehavior is configured to StopHost. A BackgroundService has thrown an unhandled exception, and the IHost instance is stopping. To avoid this behavior, configure this to Ignore; however the BackgroundService will not be restarted. System.InvalidOperationException: Collection was modified; enumeration operation ma
y not execute. at System.Collections.Generic.Dictionary`2.ValueCollection.Enumerator.MoveNext() at blazor_pivottable.RefreshingCache.Refresh() in D:\PivotTable SYNCFUSION NEW RELEASE\PivotScalingProblem\PivotScalingProblem\RefreshingCache.cs:line 22 at blazor_pivottable.RefreshingCacheService.ExecuteAsync(CancellationToken stoppingToken) in D:\PivotTable SYNCFUSION NEW RELEASE\PivotScalingProblem\PivotScali
ngProblem\RefreshingCacheService.cs:line 24 at Microsoft.Extensions.Hosting.Internal.Host.TryExecuteBackgroundServiceAsync(BackgroundService backgroundService)
[15:09:21] info: Microsoft.Hosting.Lifetime[0] Application is shutting down...
Stopping IIS Express ...
with AllowDataCompression=true EnableVirtualization=true :
Still have crash with adding / removing fields/ move field from row to column or reversely:
[15:23:18] fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111] => SpanId:0f4a9591ce9bae16, TraceId:356d1d284bd23f3990df3eb0cc6400cf, ParentId:0000000000000000 => ConnectionId:0HMJUO15DK3I9 => RequestPath:/_blazor RequestId:0HMJUO15DK3I9:00000002 => TransportConnectionId:PwzVQ9h2IiQ-pT3QxDMQrA Unhandled exception in circuit 'uqMvPgyPM_E8oTkVVy_euF-S1CPegcV8m6zvy-8Frhk'. System.NullReferenceException: Object reference not set to an instance of an object. at Syncfusion.Blazor.Charts.Internal.ColumnBaseRenderer.GetSideBySideInfo() at Syncfusion.Blazor.Charts.Internal.BarSeriesRenderer.CalculateColumnPathOption() at Syncfusion.Blazor.Charts.Internal.BarSeriesRenderer.RenderSeries() at Syncfusion.Blazor.Charts.Internal.ChartSeriesRenderer.SeriesRenderer() at Syncfusion.Blazor.Charts.Internal.ChartSe
riesRenderer.HandleChartSizeChange(Rect rect) at Syncfusion.Blazor.Charts.Internal.ChartSeriesRendererContainer.HandleChartSizeChange(Rect rect) at Syncfusion.Blazor.Charts.SfChart.UpdateRenderers() at Syncfusion.Blazor.Charts.SfChart.OnLayoutChange() at Syncfusion.Blazor.Charts.SfChart.DelayLayoutChange() at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state) at Microsoft.AspNetCore
.Components.Rendering.RendererSynchronizationContext.ExecuteSynchronously(TaskCompletionSource`1 completion, SendOrPostCallback d, Object state) at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<>c.<.cctor>b__23_0(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previo
us location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteBackground(WorkItem item)
Or just let UI to refreshing:
System.NullReferenceException: Object reference not set to an instance of an object.
at Syncfusion.Blazor.PivotView.Internal.Render`1.CalculateGridHeight()
at Syncfusion.Blazor.PivotView.Internal.GridRenderer`1.OnDataBound()
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at Syncfusion.Blazor.Grids.SfGrid`1.OnAfterRenderAsync(Boolean firstRender)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: Error: Unhandled exception in circuit 'Q6EnpByg2Cisunr8koPCvcZYTj3Ut1YP6ORxH2TPkAQ'.
System.NullReferenceException: Object reference not set to an instance of an object.
at Syncfusion.Blazor.PivotView.Internal.Render`1.CalculateGridHeight()
at Syncfusion.Blazor.PivotView.Internal.GridRenderer`1.OnDataBound()
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at Syncfusion.Blazor.Grids.SfGrid`1.OnAfterRenderAsync(Boolean firstRender)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: Warning: Unhandled exception rendering component: Object reference not set to an instance of an object.
Then crashes:
ANOTHER important question:
can you provide guideline for upgrading from 19.4.0.48 to 20.2.0.43 ?
Just updating nuget pkg => nothing works.
Thanks!
Yi
Hi Yi Han,
|
Query |
Response |
|
with AllowDataCompression=false EnableVirtualization=false |
We regret to inform you that from the provided sample, we are unable to reproduce the reported issue at our end. We have included the sample and video links below for your convenience that have undergone testing at our end.
Sample: https://www.syncfusion.com/downloads/support/directtrac/general/ze/PivotScalingProblem1343873317 Video: https://www.syncfusion.com/downloads/support/directtrac/general/ze/PivotScalingIssue-video353727942 |
|
with AllowDataCompression=true EnableVirtualization=true |
We are validating this query at our end and will provide further details within two business days (August 18, 2022).
|
|
Can you provide guideline for upgrading from 19.4.0.48 to 20.2.0.43 ? |
Please refer the following document links for upgrading latest NuGet package.
Document: https://blazor.syncfusion.com/documentation/upgrade/ https://blazor.syncfusion.com/documentation/common/adding-script-references |
Please let us know if any concerns occur.
With regards,
Rajeshkannah Gopalakrishnan
Thank you for your reply.
However, using the fields panel, which is positioned above the grouping bar and works similarly to the field list UI, you can add and remove fields that are available in the given data source.
=> given the poor performance on 1_000_000 data size, even with 20.2.0.43 and <AllowDataCompression=true EnableVirtualization=true >,
this won't be an option - user change the pivot table configuration with moving/add/removing aggregating N times, they wait for the final result of that.
with field panel, after every action, user has to wait => the UI is just unusable.
Right-click a cell inside the pivot table. Select “Pivot Table Options…” from the menu. On the Layout & Format tab, uncheck the “Autofit on column widths on update” checkbox. Press OK.
Hi Tanu Krishna
Are you sure your reply is for this ticket?
Yi
Hi Yi Han,
We have examined your query and we would inform you that when data compression and virtualization is enabled, it will take less time to do report manipulations like filtering, sorting, and modifying the aggregation for the bound fields in the report as compared to the initial rendering. However, changing the fields in a report by adding, deleting, or rearranging them takes the same amount of engine population time as initial rendering. And due to the current architecture of our pivot table, only this behavior can be used to update the data in the pivot table.
For 1 milllion “dataSize” for 5 “cycleInSecs” , below are the statistics of time taken to update the pivot table.
|
During initial rendering |
|
|
Report manipulation by adding/removing or rearranging fields |
|
Kindly let us know if any concerns occur.
With regards,
Rajeshkannah Gopalakrishnan
Thank you for your reply.
Additionally, while executing the Pivot Table component with the field list option enabled, we encounter some performance problems. And currently we are analyzing it at our end. We will update further details within two business days (17-August-2022).
=> any update on this?
As I mentioned in the reply August 16, 2022 04:45 PM, " using the fields panel" is not an option. The batched+differed update with field list UI is a must, given the waiting time 22 sec.
Thank you for mentioning the stats, - that's my stats => you may have more insight on perf issue. If you do, please kindly provide and suggest how to improve the perf more.
Hi Yi Han,
Sorry for the delay. We have checked the performance problem
that occurs “when using the Pivot Table component with field list option
enabled”. Based on the that, we have fixed the reported performance issues in
the field list now. And the fix will be available in our upcoming
weekly release, which
is scheduled to be released on August 30, 2022.
We hope that the above fix would resolve the reported issue at your end. We appreciate your patience until then.
Sastha Prathap S.
Hi Yi Han,
We are glad to announce that our Essential Studio weekly release V20.2.45 is rolled out
and fix for the reported performance issue
has been included in
this release. For your reference, you can also find below screenshots that
illustrate the time it takes for the UI to update in comparison to a previous
release version.
Screenshot:
|
Previously |
Now |
|
|
|
We thank you for your support and appreciate your patience in waiting for this release. Please contact us if you require any further assistance.
Regards,
Angelin Faith Sheeba.
Thank you for your reply
with the latest packages:
<PackageReference Include="Syncfusion.Blazor.PivotTable" Version="20.2.0.48" />
<PackageReference Include="Syncfusion.Blazor.Themes" Version="20.2.0.43" />
no issue with
EnableVirtualization = falsebut with:
EnableVirtualization=true
with production data, I've got :
[3]Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: 2022-09-06 18:58:31.7624|0|WARN|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer|Unhandled exception rendering component: The given key '0' was not present in the dictionary. System.Collections.Generic.KeyNotFoundException: The given key '0' was not present in the dictionary. at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at Syncfusion.Blazor.PivotView.Internal.Render`1.GetCellInfo(AxisSet cellData) at Syncfusion.Blazor.PivotView.Internal.PivotCell`2.UpdateRowCellInfo() at Syncfusion.Blazor.PivotView.Internal.PivotCell`2.BuildRenderTree(RenderTreeBuilder __builder) at Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(RenderTreeBuilder builder) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer.HandleException [4]Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: 2022-09-06 18:58:31.7842|0|ERROR|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost|Unhandled exception in circuit 'VphVGens9GZNgFCvTRoPQ34JvJyrDzIJ0EbnF5SvPyM'. System.Collections.Generic.KeyNotFoundException: The given key '0' was not present in the dictionary. at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at Syncfusion.Blazor.PivotView.Internal.Render`1.GetCellInfo(AxisSet cellData) at Syncfusion.Blazor.PivotView.Internal.PivotCell`2.UpdateRowCellInfo() at Syncfusion.Blazor.PivotView.Internal.PivotCell`2.BuildRenderTree(RenderTreeBuilder __builder) at Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(RenderTreeBuilder builder) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost.ReportUnhandledException [3]Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: 2022-09-06 18:58:31.8110|0|WARN|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer|Unhandled exception rendering component: Cannot access a disposed object. System.ObjectDisposedException: Cannot access a disposed object. at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.ThrowObjectDisposedException() at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.GrowBuffer(Int32 desiredCapacity) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.RemoveOldFrame(DiffContext& diffContext, Int32 oldFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.RemoveOldFrame(DiffContext& diffContext, Int32 oldFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException) at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer.HandleException [4]Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: 2022-09-06 18:58:31.8344|0|ERROR|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost|Unhandled exception in circuit 'VphVGens9GZNgFCvTRoPQ34JvJyrDzIJ0EbnF5SvPyM'. System.ObjectDisposedException: Cannot access a disposed object. at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.ThrowObjectDisposedException() at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.GrowBuffer(Int32 desiredCapacity) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.RemoveOldFrame(DiffContext& diffContext, Int32 oldFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.RemoveOldFrame(DiffContext& diffContext, Int32 oldFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException) at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost.ReportUnhandledException [3]Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: 2022-09-06 18:58:31.8489|0|WARN|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer|Unhandled exception rendering component: Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at Syncfusion.Blazor.PivotView.SfPivotView`1.InvokeFailureAsync(Exception exception) at Syncfusion.Blazor.PivotView.SfPivotView`1.OnAfterScriptRendered() at Syncfusion.Blazor.SfBaseComponent.OnAfterRenderAsync(Boolean firstRender) at Syncfusion.Blazor.SfDataBoundComponent.OnAfterRenderAsync(Boolean firstRender) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer.HandleException [4]Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: 2022-09-06 18:58:31.8620|0|ERROR|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost|Unhandled exception in circuit 'VphVGens9GZNgFCvTRoPQ34JvJyrDzIJ0EbnF5SvPyM'. System.NullReferenceException: Object reference not set to an instance of an object. at Syncfusion.Blazor.PivotView.SfPivotView`1.InvokeFailureAsync(Exception exception) at Syncfusion.Blazor.PivotView.SfPivotView`1.OnAfterScriptRendered() at Syncfusion.Blazor.SfBaseComponent.OnAfterRenderAsync(Boolean firstRender) at Syncfusion.Blazor.SfDataBoundComponent.OnAfterRenderAsync(Boolean firstRender) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost.ReportUnhandledException [3]Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: 2022-09-06 18:58:31.8804|0|WARN|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer|Unhandled exception rendering component: Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at Syncfusion.Blazor.PivotView.Internal.Render`1.CalculateGridHeight() at Syncfusion.Blazor.PivotView.Internal.GridRenderer`1.OnParametersSetAsync() at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer.HandleException [4]Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: 2022-09-06 18:58:31.8906|0|ERROR|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost|Unhandled exception in circuit 'VphVGens9GZNgFCvTRoPQ34JvJyrDzIJ0EbnF5SvPyM'. System.NullReferenceException: Object reference not set to an instance of an object. at Syncfusion.Blazor.PivotView.Internal.Render`1.CalculateGridHeight() at Syncfusion.Blazor.PivotView.Internal.GridRenderer`1.OnParametersSetAsync() at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost.ReportUnhandledException [3]Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: 2022-09-06 18:58:31.8906|0|WARN|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer|Unhandled exception rendering component: Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at Syncfusion.Blazor.PivotView.Internal.GridRenderer`1.OnParametersSetAsync() at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)|Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer.HandleException [4]Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: 2022-09-06 18:58:31.9139|0|ERROR|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost|Unhandled exception in circuit 'VphVGens9GZNgFCvTRoPQ34JvJyrDzIJ0EbnF5SvPyM'. System.NullReferenceException: Object reference not set to an instance of an object. at Syncfusion.Blazor.PivotView.Internal.GridRenderer`1.OnParametersSetAsync() at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)|Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost.ReportUnhandledException
Hi,
Tried excel export feature following https://blazor.syncfusion.com/documentation/pivot-table/excel-export, but it does not work.