This question is locked. New answers and comments are not allowed.
Hi,
My RadGridView is throwing an System.InvalidCastException when there are GroupDescriptors applying a grouping to the items in the grid.
The exception is:
When the groups are removed from the bar at the top of the grid, there is no problem and I can select the rows of the grid as per normal.
The problem perhaps appears to be related to a piece of code that I use to save the GridDescriptors between refreshes. The method takes in
This code is called before (AboutToRefresh) and after (FinishedRefresh) the ItemSource is changed with the appropriate argument.
Any ideas?
My RadGridView is throwing an System.InvalidCastException when there are GroupDescriptors applying a grouping to the items in the grid.
The exception is:
[A]DynamicDataType cannot be cast to [B]DynamicDataType. Type A originates from 'DynamicData, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' in a byte array. Type B originates from 'DynamicData, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' in a byte array. at Telerik.Windows.Data.FuncExtensions.<>c__DisplayClass1`2.<ToUntypedFunc>b__0(Object item) at Telerik.Windows.Data.QueryableCollectionViewGroup.FindLastLevelGroupByItem(Object item) at Telerik.Windows.Controls.GridView.GridViewDataControl.GetRowForItem(Object item, Boolean forceGroupExpand) at Telerik.Windows.Controls.GridView.GridViewDataControl.get_CurrentCell() at Telerik.Windows.Controls.GridView.GridViewDataControl.CanCellBecomeCurrent(GridViewCell cell) at Telerik.Windows.Controls.GridView.GridViewCell.OnMouseLeftButtonDown(MouseButtonEventArgs e) at System.Windows.Controls.Control.OnMouseLeftButtonDown(Control ctrl, EventArgs e) at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)When the groups are removed from the bar at the top of the grid, there is no problem and I can select the rows of the grid as per normal.
The problem perhaps appears to be related to a piece of code that I use to save the GridDescriptors between refreshes. The method takes in
RefreshItemSourceLifetimeStage which is an enum.This code is called before (AboutToRefresh) and after (FinishedRefresh) the ItemSource is changed with the appropriate argument.
public void RefreshGrid(RefreshItemSourceLifetimeStage stage){ switch (stage) { case RefreshItemSourceLifetimeStage.AboutToRefresh: if (_grid.ItemsSource == null && !_grid.GroupDescriptors.Any()) { // default group descriptor that you get on initial page load _savedGroupDescriptors.Add(new GroupDescriptor { Member = "_CallFactorSet.CreatedAt.Year", DisplayContent = "Year Created", SortDirection = ListSortDirection.Descending}); } else { _savedGroupDescriptors.Clear(); foreach (var igd in _grid.GroupDescriptors) { // we have to clone the objects into the _savedGroupDescriptors collection because otherwise they disappear when the itemsource is refreshed if (igd is GroupDescriptor) { var gd = (GroupDescriptor) igd; _savedGroupDescriptors.Add(new GroupDescriptor { Member = gd.Member, DisplayContent = gd.DisplayContent, SortDirection = gd.SortDirection }); } else if (igd is ColumnGroupDescriptor) { var cgd = (ColumnGroupDescriptor) igd; _savedGroupDescriptors.Add(new ColumnGroupDescriptor { Column = cgd.Column, DisplayContent = cgd.DisplayContent, SortDirection = cgd.SortDirection }); } } } break; case RefreshItemSourceLifetimeStage.FinishedRefresh: _grid.GroupDescriptors.Clear(); foreach(var groupDescriptor in _savedGroupDescriptors) { _grid.GroupDescriptors.Add(groupDescriptor); } break; default: throw new ArgumentOutOfRangeException("stage"); }}Any ideas?