Application crashes when open form has grouped grid and DomainDataSource?

6 posts, 0 answers
  1. hvduc
    hvduc avatar
    33 posts
    Member since:
    Jun 2010

    Posted 13 Dec 2011 Link to this post

    Hi
    I'm using RadGridView control in Rad Controls for telerik Q3 2011 1116 and DomainDataSource control for loading data.
    After upgrading application's dll to version Q3 2011 1116, I get this error when open a form with a grid has a grouped column and a DomainDataSource control as form's datacontext.
    Error: Unhandled Error in Silverlight Application
    Code: 4004   
    Category: ManagedRuntimeError      
    Message: System.NullReferenceException: Object reference not set to an instance of an object.
       tại Telerik.Windows.Data.Expressions.ExpressionFactory.MakeMemberAccess(Expression instance, String memberName, Type memberType)
       tại Telerik.Windows.Data.Expressions.PropertyAccessExpressionBuilder.CreateMemberAccessExpressionOverride()
       tại Telerik.Windows.Data.Expressions.MemberAccessExpressionBuilderBase.CreateMemberAccessExpression()
       tại Telerik.Windows.Controls.GridViewColumn.CreateGroupKeyExpression(ParameterExpression parameterExpression, ExpressionBuilderOptions options)
       tại Telerik.Windows.Controls.GridView.ColumnGroupDescriptor.CreateMemberAccessExpression(ParameterExpression parameterExpression)
       tại Telerik.Windows.Controls.GridView.ColumnGroupDescriptor.CreateGroupKeyExpression(ParameterExpression parameterExpression)
       tại Telerik.Windows.Data.GroupDescriptorBase.CreateGroupKeyExpression(Expression itemExpression)
       tại Telerik.Windows.Data.IGroupDescriptorExtensions.GetGroupKeyType(IGroupDescriptor groupDescriptor, Type itemType)
       tại Telerik.Windows.Data.GroupInfo..ctor(IGroupDescriptor groupDescriptor, Type itemType)
       tại Telerik.Windows.Data.QueryableCollectionViewGroupRoot..ctor(IEnumerable`1 originalGroups, IEnumerable`1 groupDescriptors, IEnumerable`1 sortDescriptors, Type itemType)
       tại Telerik.Windows.Data.QueryableCollectionView.EnsureRootGroup()
       tại Telerik.Windows.Data.QueryableCollectionView.get_Groups()
       tại Telerik.Windows.Controls.GridView.BaseItemsControl.GetEffectiveItems(BaseItemsControl itemsControl)
       tại Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.EnsureIndexTree()
       tại Telerik.Windows.Controls.GridView.GridViewDataControl.InitializeShouldKeepScrollState()
       tại Telerik.Windows.Controls.GridView.GridViewDataControl.OnItemsChanged(NotifyCollectionChangedEventArgs e)
       tại Telerik.Windows.Controls.GridView.BaseItemsControl.OnItemCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
       tại System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
       tại Telerik.Windows.Data.DataItemCollection.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
       tại Telerik.Windows.Data.DataItemCollection.RaiseChangeEvents()
       tại Telerik.Windows.Data.DataItemCollection.SetItemsSource(IEnumerable source)
       tại Telerik.Windows.Controls.GridView.GridViewDataControl.<>c__DisplayClass19.<Bind>b__18()
       tại Telerik.Windows.Controls.CursorManager.PerformTimeConsumingOperation(FrameworkElement frameworkElement, Action action)
       tại Telerik.Windows.Controls.GridView.GridViewDataControl.Bind(Object newValue)
       tại Telerik.Windows.Controls.GridView.GridViewDataControl.OnApplyTemplate()
       tại System.Windows.FrameworkElement.OnApplyTemplate(IntPtr nativeTarget)

    I created a sample project for recreate this error.
    In this sample, I add a RadGridView to form, Itemsource binding to DomainDataSource's Data property.

    <telerikNavigation:RadWindow x:Class="BusinessApplication1.frmWindow"
               xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
               xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
               xmlns:telerikGridView="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView"
               xmlns:telerikNavigation="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation"
               xmlns:telerikData="clr-namespace:Telerik.Windows.Data;assembly=Telerik.Windows.Data"
               xmlns:GridView="clr-namespace:Telerik.Windows.Controls.GridView;assembly=Telerik.Windows.Controls.GridView"
                                 Width="800" Height="600" MinWidth="800" MinHeight="600"
               >
        <Grid x:Name="LayoutRoot" Margin="2">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
     
            <telerikGridView:RadGridView x:Name="grd"
                                             Grid.Row="0"
                                             ShowGroupPanel="False"
                                             SelectionMode="Single"
                                             RowIndicatorVisibility="Collapsed"
                                             CanUserFreezeColumns="False"
                                             ScrollMode="RealTime"
                                             AutoGenerateColumns="False"
                                             IsReadOnly="True"
                                             ShowColumnFooters="True"
                                             AutoExpandGroups="True"
                                             ItemsSource="{Binding Data}"
                                             IsBusy="{Binding IsLoadingData}"
                                             Margin="8,8,8,0">
                <telerikGridView:RadGridView.Columns>
                    <telerikGridView:GridViewDataColumn DataMemberBinding="{Binding Column1}"
                                                                Width="0.6*"
                                                                HeaderTextAlignment="Center">
                        <telerikGridView:GridViewDataColumn.Header>
                            <TextBlock HorizontalAlignment="Center"
                                               Text="Column 1" />
                        </telerikGridView:GridViewDataColumn.Header>
                        <telerikGridView:GridViewDataColumn.AggregateFunctions>
                            <telerikData:CountFunction Caption="" />
                        </telerikGridView:GridViewDataColumn.AggregateFunctions>
                        <telerikGridView:GridViewDataColumn.Footer>
                            <GridView:AggregateResultsList ItemsSource="{Binding}"
                                                                   VerticalAlignment="Center">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <StackPanel HorizontalAlignment="Left"
                                                            Margin="4,0"
                                                            Orientation="Horizontal">
                                            <TextBlock VerticalAlignment="Center"
                                                               Text="Row" />
                                            <TextBlock VerticalAlignment="Center"
                                                               Text="{Binding FormattedValue}"
                                                               Margin="4,0,0,0" />
                                        </StackPanel>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                                <ItemsControl.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <StackPanel Orientation="Vertical" />
                                    </ItemsPanelTemplate>
                                </ItemsControl.ItemsPanel>
                            </GridView:AggregateResultsList>
                        </telerikGridView:GridViewDataColumn.Footer>
                    </telerikGridView:GridViewDataColumn>
                    <telerikGridView:GridViewDataColumn DataMemberBinding="{Binding Column2}"
                                                                Width="0.4*"
                                                                UniqueName="Column2"
                                                                HeaderTextAlignment="Center">
                        <telerikGridView:GridViewDataColumn.Header>
                            <TextBlock HorizontalAlignment="Center"
                                               Text="Column 2" />
                        </telerikGridView:GridViewDataColumn.Header>
                    </telerikGridView:GridViewDataColumn>
                </telerikGridView:RadGridView.Columns>
     
            </telerikGridView:RadGridView>
     
        </Grid>
    </telerikNavigation:RadWindow>
     
    In code-behind, I init a domainDataSource control and group one column of grid by code.
    Imports Telerik.Windows.Controls.GridView
    Imports Telerik.Windows.Data
    Imports Telerik.Windows.Controls
     
    Partial Public Class frmWindow
        Inherits RadWindow
        Private m_dss As DomainDataSource
        Public Sub New()
            InitializeComponent()
     
            If grd.GroupDescriptors.Count > 0 Then
                grd.GroupDescriptors.Clear()
            End If
     
            Dim cf As New CountFunction
            Dim descriptor As New ColumnGroupDescriptor
            descriptor.Column = grd.Columns("Column2")
            Me.grd.GroupDescriptors.Add(descriptor)
        End Sub
     
        Private Sub frmWindow_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
            m_dss = New DomainDataSource
            Me.DataContext = m_dss
        End Sub
    End Class
     
    Public Class DemoClass
        Public Property Column1 As String
        Public Property Column2 As String
     
        Public Sub New(m_Column1 As String, m_Column2 As String)
            Column1 = m_Column1
            Column2 = m_Column2
        End Sub
    End Class
    I debugged when show this form.
    When I set DomainDataSource control to form's DataContext, application crashes.

    I think there's something wrong with your gridview if it work with DomainDataSource and has a Grouped Column.
    How can I fix this error? This error is very critical and I need to fix it soon.
    Please reply to me ASAP
  2. Mike
    Mike avatar
    3 posts
    Member since:
    May 2011

    Posted 07 Aug 2012 Link to this post

    I am getting this same error.  Any fixes?
  3. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 08 Aug 2012 Link to this post

    Hi,

     Are you using our latest official version Q2 2012 Sp1?

    Regards,
    Vlad
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

  4. Mike
    Mike avatar
    3 posts
    Member since:
    May 2011

    Posted 08 Aug 2012 Link to this post

    Nope, I am restricted to using version 2011.2.712.1040 because this is an existing application.
  5. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 09 Aug 2012 Link to this post

    Hi,

     In this case the only option will be to try to set DataType for the grouped column.

    Regards,
    Vlad
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

  6. Mike
    Mike avatar
    3 posts
    Member since:
    May 2011

    Posted 16 Aug 2012 Link to this post

    What event would I attempt to do this in?  SomeGrid_DataLoaded?  Something like this -

     

     

    var column = this.SomeGridView.Columns[0] as GridViewBoundColumnBase;

    if (column != null)

    {

        column.DataTypetypeof(string);

    }

Back to Top