I have got 2 GridView controls: one shows details of a selected row from the other grid. Grid with details has sorting on 3 columns (by default) – image 1. When I change row in master grid, I have got an exception (problem with sorting in the details grid) – image 2:
Object reference not
set
to an instance of an
object
.
w Telerik.Windows.Controls.GridView.AggregatesToGroupFooterAggregatesConverter.<>c__DisplayClass4.<Convert>b__1(AggregateResult f)
w System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
w MS.Internal.EnumerableCollectionView.LoadSnapshotCore(IEnumerable source)
w MS.Internal.EnumerableCollectionView.LoadSnapshot(IEnumerable source)
w MS.Internal.EnumerableCollectionView.RefreshOverride()
w System.Windows.Data.CollectionView.Refresh()
w Telerik.Windows.Controls.GridView.GridViewFooterCell.AggregateResults_CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
w System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
w System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
w Telerik.Windows.Data.RadObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
w Telerik.Windows.Data.RadObservableCollection`1.ResumeNotifications()
w Telerik.Windows.Controls.GridView.GridViewDataControl.CreateAggregateResults()
w Telerik.Windows.Controls.GridView.GridViewDataControl.OnItemsCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
w System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
w Telerik.Windows.Data.DataItemCollection.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
w Telerik.Windows.Data.DataItemCollection.OnCollectionViewCollectionChanged(NotifyCollectionChangedEventArgs e)
w Telerik.Windows.Data.DataItemCollection.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs e)
w Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
w Telerik.Windows.Data.QueryableCollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
w Telerik.Windows.Data.QueryableCollectionView.RefreshOverride()
w Telerik.Windows.Data.QueryableCollectionView.RefreshOrDefer()
w Telerik.Windows.Data.QueryableCollectionView.InvalidatePagingAndRefresh()
w Telerik.Windows.Data.QueryableCollectionView.OnSortDescriptorsCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
w System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
w System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
w Telerik.Windows.Data.ObservableItemCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
w Telerik.Windows.Data.RadObservableCollection`1.ResumeNotifications()
w Telerik.Windows.Data.CollectionHelper.Reset(IEnumerable source, IList target, Func`2 itemConverter)
w Telerik.Windows.Data.ObservableCollectionManager.HandleCollectionChanged(IList sender, NotifyCollectionChangedEventArgs args)
w Telerik.Windows.Data.ObservableCollectionManager.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs args)
w Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
w System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
w System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
w Telerik.Windows.Data.ObservableItemCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
w System.Collections.ObjectModel.ObservableCollection`1.ClearItems()
w Telerik.Windows.Data.RadObservableCollection`1.ClearItems()
w Telerik.Windows.Data.ObservableItemCollection`1.ClearItems()
w System.Collections.ObjectModel.Collection`1.Clear()
w Dashboard.WidgetsClass.GridClass.GridClass.SetColumns(IList data, ObservableCollection`1 kolumny)
w Dashboard.WidgetsClass.GridClass.GridClass.GetDataCompleted(Object sender, GetDataSetDataCompletedEventArgs e)
After data is loaded I reset SortDescriptors, GroupDescriptors and FilterDescriptors. I think that this is the cause of the problem (it stopped working after I upgraded my project to Telerik 2011.2.920.1040):
Telerik.Windows.Data.GroupDescriptorCollection group =
new
Telerik.Windows.Data.GroupDescriptorCollection();
Telerik.Windows.Data.SortDescriptorCollection sort =
new
Telerik.Windows.Data.SortDescriptorCollection();
Telerik.Windows.Data.FilterDescriptorCollection filter =
new
Telerik.Windows.Data.FilterDescriptorCollection();
void
dataGrid_Sorted(
object
sender, GridViewSortedEventArgs e)
{
sort.Clear();
foreach
(var sd
in
dataGrid.SortDescriptors)
sort.Add(sd);
}
void
dataGrid_Filtered(
object
sender, GridViewFilteredEventArgs e)
{
filter.Clear();
foreach
(var fd
in
dataGrid.FilterDescriptors)
filter.Add(fd);
}
void
dataGrid_Grouped(
object
sender, GridViewGroupedEventArgs e)
{
group.Clear();
foreach
(var g
in
dataGrid.GroupDescriptors)
group.Add(g);
}
// After loading data:
try
{
if
(sort !=
null
)
{
dataGrid.SortDescriptors.Clear();
foreach
(var sd
in
sort)
dataGrid.SortDescriptors.Add(sd);
}
if
(group !=
null
)
{
dataGrid.GroupDescriptors.Clear();
foreach
(var gd
in
group)
dataGrid.GroupDescriptors.Add(gd);
}
if
(filter !=
null
)
{
dataGrid.FilterDescriptors.Clear();
foreach
(var fd
in
filter)
dataGrid.FilterDescriptors.Add(fd);
}
}
catch
{
}
Any suggestions?