Bug in changed PageViewMode with nested levels (WinForms)

2 Answers 34 Views
GridView
Julian
Top achievements
Rank 1
Iron
Iron
Iron
Julian asked on 14 Nov 2025, 11:25 AM

Hi

I refer to the aritcle "How to Change PageViewMode for the Nested Levels in RadGridView - Telerik UI for WinForms"

I have a setting implemented that is like in the article.

It is working but has a flaw:

When an entry of the second tier is expanded and I then collapse the corresponding entry in the first tier and re-expand it, I get an NullReferenceException coming out of Telerik code:


System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
   bei Telerik.WinControls.UI.RowsContainerElement.UpdateMergeCells(GridCellElement cellElement)
   bei Telerik.WinControls.UI.RowsContainerElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeViewElement(RectangleF viewElementRect)
   bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.RadPageViewElementBase.ArrangeChildren(SizeF finalSize)
   bei Telerik.WinControls.UI.RadPageViewElementBase.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.ArrangeContent(RectangleF clientRect)
   bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.PerformArrange(RectangleF clientRect)
   bei Telerik.WinControls.UI.RadPageViewElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.LightVisualElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.GridDetailViewRowElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.VirtualizedStackContainer`1.ArrangeElementCore(RadElement element, SizeF finalSize, RectangleF arrangeRect)
   bei Telerik.WinControls.UI.VirtualizedStackContainer`1.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.UI.ScrollableRowsContainerElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.RowsContainerElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeViewElement(RectangleF viewElementRect)
   bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.RadPageViewElementBase.ArrangeChildren(SizeF finalSize)
   bei Telerik.WinControls.UI.RadPageViewElementBase.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.ArrangeContent(RectangleF clientRect)
   bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.PerformArrange(RectangleF clientRect)
   bei Telerik.WinControls.UI.RadPageViewElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.LightVisualElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.GridDetailViewRowElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.VirtualizedStackContainer`1.ArrangeElementCore(RadElement element, SizeF finalSize, RectangleF arrangeRect)
   bei Telerik.WinControls.UI.VirtualizedStackContainer`1.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.UI.ScrollableRowsContainerElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.RowsContainerElement.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeViewElement(RectangleF viewElementRect)
   bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeOverride(SizeF finalSize)
   bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect)
   bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect)
   bei Telerik.WinControls.Layouts.ContextLayoutManager.UpdateLayout()
   bei Telerik.WinControls.UI.GridTableElement.UpdateOnRowExpandedCore(GridViewRowInfo row)
   bei Telerik.WinControls.UI.GridTableElement.UpdateOnRowExpanded(GridViewRowInfo row)
   bei Telerik.WinControls.UI.GridTableElement.UpdateOnRowPropertyChanged(GridViewRowInfo row, GridPropertyChangedEventArgs e)
   bei Telerik.WinControls.UI.GridTableElement.ProcessRowEvent(GridViewRowInfo row, GridViewEvent eventData)
   bei Telerik.WinControls.UI.GridTableElement.Telerik.WinControls.UI.IGridViewEventListener.ProcessEvent(GridViewEvent eventData)
   bei Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessCollection(GridViewEvent gridEvent, PriorityWeakReferenceList list, GridEventProcessMode processMode)
   bei Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessEvent(GridViewEvent gridEvent)
   bei Telerik.WinControls.UI.GridViewSynchronizationService.NotifyListeners(GridViewEvent gridEvent)
   bei Telerik.WinControls.UI.GridViewSynchronizationService.FlushEvents()
   bei Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewEvent gridEvent)
   bei Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewTemplate template, GridViewEvent eventData, Boolean postUI)
   bei Telerik.WinControls.UI.GridViewRowInfo.DispatchEvent(KnownEvents id, GridEventType type, GridEventDispatchMode dispatchMode, Object originator, Object[] arguments)
   bei Telerik.WinControls.UI.GridViewRowInfo.OnPropertyChanged(PropertyChangedEventArgs args)
   bei Telerik.WinControls.UI.GridViewDataRowInfo.OnPropertyChanged(PropertyChangedEventArgs e)
   bei Telerik.WinControls.UI.GridViewHierarchyRowInfo.OnPropertyChanged(PropertyChangedEventArgs e)
   bei Telerik.WinControls.UI.GridViewRowInfo.SetBooleanProperty(String propertyName, Int32 propertyKey, Boolean value)
   bei Telerik.WinControls.UI.GridViewRowInfo.set_IsExpanded(Boolean value)
   bei Telerik.WinControls.UI.GridGroupExpanderCellElement.expander_RadPropertyChanged(Object sender, RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.RadPropertyChangedEventHandler.Invoke(Object sender, RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.RadObject.OnPropertyChanged(RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.RadElement.OnPropertyChanged(RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.VisualElement.OnPropertyChanged(RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.RadComponentElement.OnPropertyChanged(RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.RadItem.OnPropertyChanged(RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.UI.UIItemBase.OnPropertyChanged(RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.UI.LightVisualElement.OnPropertyChanged(RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.UI.ExpanderItem.OnPropertyChanged(RadPropertyChangedEventArgs e)
   bei Telerik.WinControls.RadObject.RaisePropertyNotifications(RadPropertyValue propVal, Object oldValue, Object newValue, ValueSource oldSource)
   bei Telerik.WinControls.RadObject.SetValueCore(RadPropertyValue propVal, Object propModifier, Object newValue, ValueSource source)
   bei Telerik.WinControls.RadElement.SetValueCore(RadPropertyValue propVal, Object propModifier, Object newValue, ValueSource source)
   bei Telerik.WinControls.UI.ExpanderItem.set_Expanded(Boolean value)
   bei Telerik.WinControls.UI.GridExpanderItem.set_Expanded(Boolean value)
   bei Telerik.WinControls.UI.ExpanderItem.ToggleExpanded()
   bei Telerik.WinControls.UI.ExpanderItem.OnMouseUp(MouseEventArgs e)
   bei Telerik.WinControls.RadElement.OnCLREventsRise(RoutedEventArgs args)
   bei Telerik.WinControls.RadElement.OnBubbleEvent(RadElement sender, RoutedEventArgs args)
   bei Telerik.WinControls.RadElement.RaiseBubbleEvent(RadElement sender, RoutedEventArgs args)
   bei Telerik.WinControls.RadItem.RaiseBubbleEvent(RadElement sender, RoutedEventArgs args)
   bei Telerik.WinControls.RadElement.RaiseRoutedEvent(RadElement sender, RoutedEventArgs args)
   bei Telerik.WinControls.RadElement.DoMouseUp(MouseEventArgs e)
   bei Telerik.WinControls.ComponentInputBehavior.OnMouseUp(MouseEventArgs e)
   bei Telerik.WinControls.RadControl.OnMouseUp(MouseEventArgs e)
   bei Telerik.WinControls.UI.RadGridView.OnMouseUp(MouseEventArgs e)
   bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   bei System.Windows.Forms.Control.WndProc(Message& m)
   bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   bei Telerik.WinControls.RadControl.WndProc(Message& m)
   bei Telerik.WinControls.UI.RadGridView.WndProc(Message& m)
   bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

2 Answers, 1 is accepted

Sort by
1
Dinko | Tech Support Engineer
Telerik team
answered on 19 Nov 2025, 09:47 AM

Hello Julian,

Thank you for contacting and sharing the stack trace.

To test it on my side, I have used the code from the mentioned KB article. Indeed, at some point of expanding and collapsing the parent row, the ViewTemplate is Null, which leads to the described exception. I can confirm that this needs to be handled on our side. Therefore, I have logged this exception on your behalf in our Feedback Portal. You can follow the feedback item to receive status notification changes. I have increased your Telerik Points for bringing this to our attention.

The exception is thrown in the internal part of our source code, and I am afraid that I can't suggest a workaround for this behavior. I have increased the item's priority and forwarded it to our development team so they can consider adding it to the fix list.

Regards,
Dinko | Tech Support Engineer
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

Julian
Top achievements
Rank 1
Iron
Iron
Iron
commented on 19 Nov 2025, 12:03 PM

Thank you for your answer

How unfortunate

Is there at least some possibility to catch the exception by overwriting a function or something like that?

At the moment my whole application crashes, and that is of course not acceptable in production

Dinko | Tech Support Engineer
Telerik team
commented on 20 Nov 2025, 01:15 PM

The exception is raised in a place that can't be overridden, as it is not accessible. Please accept my apologies for the inconvenience caused by this exception. I understand that this is important for you. I have been notified that our development team is working on providing a fix. As soon as the fix passes all tests, we will consider releasing a preview version of our controls, which you can use until the official release. I will contact you again as soon as I have more information.

Julian
Top achievements
Rank 1
Iron
Iron
Iron
commented on 21 Nov 2025, 06:41 AM

Thanky again, no need to apologize

Is there a way to access the event of expanding/collapsing the entry of the first level?

So that I could maybe keep the users from getting into the specific error situation

Dinko | Tech Support Engineer
Telerik team
commented on 21 Nov 2025, 01:10 PM

RadGridView offers ChildViewExpanding event that triggers when the child view is about to be expanded or collapsed. This event can be canceled. You can use it and create custom code in the event hanlder, that could handle your scenario:

private void RadGridView1_ChildViewExpanding(object sender, ChildViewExpandingEventArgs e)
{
    if (e.ParentRow.Index == 1)
    {
        e.Cancel = true;
    }          
}

Julian
Top achievements
Rank 1
Iron
Iron
Iron
commented on 21 Nov 2025, 01:50 PM

Yes, that works for the time being!

Thank you again :)

0
Julian
Top achievements
Rank 1
Iron
Iron
Iron
answered on 27 Nov 2025, 10:58 AM | edited on 27 Nov 2025, 01:25 PM

Unfortunately, I also experience another bug in this constellation:

When a user tries to select items of the second level by clicking on them they do not get selected

Sometimes it works after a time, sometimes if there are two items the upper one gets selected after clicking on the lower item

Can you simulate that?

If I remove the CreateCell event this error does not occur

Julian
Top achievements
Rank 1
Iron
Iron
Iron
commented on 27 Nov 2025, 12:31 PM

It works after I clicked and selected an item of the first level, then I can click and select all items.

If I try to select an item of the lowest level first it does not work

Dinko | Tech Support Engineer
Telerik team
commented on 27 Nov 2025, 01:20 PM

You mentioned that removing the CreateCell event fixes the reported behavior. I assume that a custom cell is applied in a column. It could be that the elements in the custom cell are handling the mouse interactions. To confirm that, I will need to check the code for the custom cell. Can you share it with me or create a test project that demonstrates this so that I can take a closer look?
Julian
Top achievements
Rank 1
Iron
Iron
Iron
commented on 27 Nov 2025, 01:23 PM

It is nothing special - exactly what is in the linked article without anything added
Dinko | Tech Support Engineer
Telerik team
commented on 28 Nov 2025, 01:29 PM

To test your scenario, I used the code from the "Creating custom cells" help article. May I ask you to check the attached project and share the steps that I need to follow to observe the described behavior. 

I am looking forward to your reply.

Julian
Top achievements
Rank 1
Iron
Iron
Iron
commented on 28 Nov 2025, 02:04 PM | edited

Sorry, i was referring to this article:

How to Change PageViewMode for the Nested Levels in RadGridView - Telerik UI for WinForms

 

I cannot use your exaple because MergeCellsMode is not available

Dinko | Tech Support Engineer
Telerik team
commented on 28 Nov 2025, 02:22 PM

Thank you for elaborating on that. I have removed the custom code and left the code from the mentioned KB article. Let me know if you can run it and able to reproduce the reported scenario.
Julian
Top achievements
Rank 1
Iron
Iron
Iron
commented on 28 Nov 2025, 03:12 PM

One difference is that I use code so that all levels are expanded from start. If I do not do this, I do not get the error.

I added this to your code. I cannot really say what to do because the data is random, but if you try to click different entries there are inconsistencies concerning which entry gets selected after clicking 

Dinko | Tech Support Engineer
Telerik team
commented on 02 Dec 2025, 01:49 PM

I have tested your scenario and expanded all the rows. What I notice is that when selecting an item in one of the child templates, the MasterTemplate's scrollbar moves to the top. This is based on the custom approach described in the KB article. The control could not correctly calculate its height. What comes to my mind is to show scrollbars for the hierarchy templates. This can be done by setting the UseScrollbarsInHierarchy property to true. Can you set it and share if the selection behavior is still observed:

this.radGridView1.UseScrollbarsInHierarchy = true;

Julian
Top achievements
Rank 1
Iron
Iron
Iron
commented on 03 Dec 2025, 12:44 PM | edited

Thanks, that helps with the scrollling.

In your sample, the bug can be simulated like this:

I start with all items expanded by code.

Then,  when you collapse and re-expand an entry of the 2-1 or 2-2 level (the lowest expandable level), the corresponding entries of the lowest level cannot be selected

Dinko | Tech Support Engineer
Telerik team
commented on 03 Dec 2025, 02:43 PM

Please, excuse me for the misunderstanding, but I still can't reproduce it on my side. I have prepared a GIF file that demonstrates the steps I performed on my end. Can you check it out and let me know what I am doing wrong?
Tags
GridView
Asked by
Julian
Top achievements
Rank 1
Iron
Iron
Iron
Answers by
Dinko | Tech Support Engineer
Telerik team
Julian
Top achievements
Rank 1
Iron
Iron
Iron
Share this question
or