Hi,
I have a grid view that specifies a RowDetailTemplate, something simple, like an empty grid. Whenever I populate the ObservableCollection which is bound to the ItemsSource property of the grid, everything works fine, and the grid contains the data. I can remove one element at a time, no problems. Whenever I try to .Clear() the collection or .Remove() the last element, BOOM!, Object Ref Not Set...If I take off the RowDetailsTemplate, I can remove all items without exceptions. Has anyone found a work around for this bug in the GridView? I really need to remove all items and still have the Row Details. Thanks for any suggestions!
I have a grid view that specifies a RowDetailTemplate, something simple, like an empty grid. Whenever I populate the ObservableCollection which is bound to the ItemsSource property of the grid, everything works fine, and the grid contains the data. I can remove one element at a time, no problems. Whenever I try to .Clear() the collection or .Remove() the last element, BOOM!, Object Ref Not Set...If I take off the RowDetailsTemplate, I can remove all items without exceptions. Has anyone found a work around for this bug in the GridView? I really need to remove all items and still have the Row Details. Thanks for any suggestions!
5 Answers, 1 is accepted
0
Hello William,
Maya
the Telerik team
I have tried to reproduce the behavior that you described, but still without any success. Would you take a look at the sample attached to verify whether you can get the same exceptions ? I have tested it by selecting all items in a child grid and deleting them and by clearing the collection on a button click event.
Is there anything more that I need to do in order to reproduce the behavior ?
Maya
the Telerik team
Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>
0

Andrew
Top achievements
Rank 1
answered on 27 Oct 2011, 01:49 PM
Hi Maya,
I work with William and am hoping to solve this problem as well. I took a look at your code sample and haven't been able to produce the exception we're seeing with it just yet. In the mean time though, I thought I'd share the stack trace we're getting from the NullReferenceException to see if that might generate some more ideas.
Thanks for your help!
Andrew
I work with William and am hoping to solve this problem as well. I took a look at your code sample and haven't been able to produce the exception we're seeing with it just yet. In the mean time though, I thought I'd share the stack trace we're getting from the NullReferenceException to see if that might generate some more ideas.
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.Remove(GeneratorPosition position, Int32 count, Boolean isRecycling)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.System.Windows.Controls.Primitives.IRecyclingItemContainerGenerator.Recycle(GeneratorPosition position, Int32 count)
at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.CleanupRange(IList children, IItemContainerGenerator generator, Int32 startIndex, Int32 count)
at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.CleanupContainers(Int32 firstViewport, BaseItemsControl itemsControl)
at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.MeasureOverride(Size constraint)
at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)
at System.Windows.ContextLayoutManager.UpdateLayout()
at Telerik.Windows.Documents.UI.DocumentWebLayoutPresenter.UpdateEditorLayout()
at Telerik.Windows.Documents.UI.DocumentWebLayoutPresenter.DoOnDocumentChanged()
at Telerik.Windows.Documents.UI.DocumentPresenterBase.OnOwnerChanged()
at Telerik.Windows.Documents.UI.DocumentPresenterBase.set_Owner(RadRichTextBox value)
at Telerik.Windows.Controls.RadRichTextBox.InitActiveEditorPresenter()
at Telerik.Windows.Controls.RadRichTextBox.set_Document(RadDocument value)
at Telerik.Windows.Documents.FormatProviders.DataProviderBase.UpdateDocument()
at Telerik.Windows.Documents.FormatProviders.DataProviderBase.StringPropertyChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, OperationType operationType)
at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp)
at System.Windows.Data.BindingExpression.Invalidate(Boolean isASubPropertyChange)
at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
at System.Windows.Data.BindingExpression.Activate(Object item)
at System.Windows.Data.BindingExpression.HandlePropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
at System.Windows.Data.BindingExpression.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
at System.Windows.DependentList.InvalidateDependents(DependencyObject source, DependencyPropertyChangedEventArgs sourceArgs)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, OperationType operationType)
at System.Windows.TreeWalkHelper.OnInheritablePropertyChanged(DependencyObject d, InheritablePropertyChangeInfo info)
at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
at System.Windows.DescendentsWalker`1.StartWalk(DependencyObject startNode, Boolean skipStartNode)
at System.Windows.TreeWalkHelper.InvalidateOnInheritablePropertyChange(FrameworkElement fe, FrameworkContentElement fce, InheritablePropertyChangeInfo info, Boolean skipStartNode)
at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, OperationType operationType)
at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, OperationType operationType, Boolean isInternal)
at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
at System.Windows.FrameworkElement.set_DataContext(Object value)
at Telerik.Windows.Controls.GridView.DataCellsPresenter.OnItemChanged(Object oldItem, Object newItem)
at Telerik.Windows.Controls.GridView.DataCellsPresenter.set_Item(Object value)
at Telerik.Windows.Controls.GridView.GridViewRowItem.OnItemChanged(Object oldItem, Object newItem)
at Telerik.Windows.Controls.GridView.GridViewRow.OnItemChanged(Object oldItem, Object newItem)
at Telerik.Windows.Controls.RadRowItem.OnItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, OperationType operationType)
at System.Windows.DependencyObject.ClearValueCommon(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata)
at System.Windows.DependencyObject.ClearValue(DependencyProperty dp)
at Telerik.Windows.Controls.GridView.GridViewRowItem.ClearRow(GridViewDataControl owningDataGrid)
at Telerik.Windows.Controls.GridView.GridViewRow.ClearRow(GridViewDataControl owningDataGrid)
at Telerik.Windows.Controls.GridView.GridViewDataControl.ClearContainerForItemOverride(DependencyObject element, Object item)
at Telerik.Windows.Controls.GridView.BaseItemsControl.Telerik.Windows.Controls.GridView.IGeneratorHost.ClearContainerForItem(DependencyObject container, Object item)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.UnlinkContainerFromItem(DependencyObject container, Object item, Boolean isRecycled)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.UnlinkContainerFromItem(DependencyObject container, Object item)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.System.Windows.Controls.Primitives.IItemContainerGenerator.RemoveAll()
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.OnRefresh()
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.Refresh()
at Telerik.Windows.Controls.GridView.GridViewGroupRow.InvalidateIndexTree()
at Telerik.Windows.Controls.GridView.GridViewDataControl.ClearGroupRows()
at Telerik.Windows.Controls.GridView.GridViewDataControl.OnItemsChanged(NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Controls.GridView.BaseItemsControl.OnItemCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.OnCollectionViewCollectionChanged(NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.Telerik.Windows.Data.IWeakEventListener<
System.Collections.Specialized.NotifyCollectionChangedEventArgs
>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
at Telerik.Windows.Data.QueryableCollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.QueryableCollectionView.RefreshOverride()
at Telerik.Windows.Data.QueryableCollectionView.RefreshInternal()
at Telerik.Windows.Data.QueryableCollectionView.RefreshOrDefer()
at Telerik.Windows.Data.QueryableCollectionView.ProcessSynchronousCollectionChanged(NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.QueryableCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.QueryableCollectionView.OnSourceCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.QueryableCollectionView.Telerik.Windows.Data.IWeakEventListener<
System.Collections.Specialized.NotifyCollectionChangedEventArgs
>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionReset()
at System.Collections.ObjectModel.ObservableCollection`1.ClearItems()
at System.Collections.ObjectModel.Collection`1.Clear()
at AAEPT.Modules.Regions.StoryDetails.StoryInfoModel.<
SelectProject
>b__7(Object source, RunWorkerCompletedEventArgs args) in C:\Users\m282815\development\ssi\estiMATE\Modules\Regions\AAEPT.Modules.Regions.StoryDetails\PresentationModels\StoryInfoModel.cs:line 140
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
Thanks for your help!
Andrew
0

Andrew
Top achievements
Rank 1
answered on 27 Oct 2011, 03:32 PM
Hi Maya,
I was able to reproduce the problem after making a few changes to the example you sent.
To see it happen, please select one of the clubs to show the row details, then click the button.
Here's the changes I made:
I was going to post my code but realized that the forum doesn't allow me to post .zip's - Is there some other way I can send them to you?
Thanks,
Andrew
I was able to reproduce the problem after making a few changes to the example you sent.
To see it happen, please select one of the clubs to show the row details, then click the button.
Here's the changes I made:
- The button needs to clear all the Clubs out of the view model instead of the players for a club.
- Also - curiously - I had to add a column that contains a RadRichTextBox to display some HTML content in the parent Grid. This problem seems to be caused by having both a RadRichTextBox in the parent Grid along with a RowDetailsTemplate.
- In order to add the RadRichTextBox, I needed to add Telerik.Windows.Documents.dll, Telerik.Windows.Documents.FormatProviders.Html.dll, and System.ComponentModel.Composition.dll. The latest version of the telerik tools I had was 2011.2.920.35 - I see the ones you included were 2011.2.920.40. Don't know if that makes a difference or not, but wanted to bring that to your attention.
I was going to post my code but realized that the forum doesn't allow me to post .zip's - Is there some other way I can send them to you?
Thanks,
Andrew
0

William
Top achievements
Rank 1
answered on 27 Oct 2011, 03:37 PM
Thank you Andrew for following up on this! And thank you Maya for being so quick to respond, which in the end, helps Telerik product better.
0
Hello,
Based on the latest details we were able to reproduce the exception. It will be addressed for our Q3 2011 official release which is expected in mid-November.
Thank you for the valuable feedback. I have updated your Telerik points accordingly.
Regards,
Yordanka
the Telerik team
Based on the latest details we were able to reproduce the exception. It will be addressed for our Q3 2011 official release which is expected in mid-November.
Thank you for the valuable feedback. I have updated your Telerik points accordingly.
Regards,
Yordanka
the Telerik team
Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>