This is a migrated thread and some comments may be shown as answers.

NullReferenceException in GridViewRow.OnIsExpandedChanged

1 Answer 152 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Stephen
Top achievements
Rank 1
Stephen asked on 17 Dec 2011, 03:00 AM
Hi,

I got one problem of RadGridView with Hierarchy gridview structure.

Configuration:
WPF app for .NET Framework 4
Windows 7 (x64) Professional
Telerik Version: RadControls for WPF Q2 2011 SP1(2011.2.0920)

I show the data to user using the following hierarchy:

RadGridView (Level 1)
+---- RadGridView (Level 2)
+-------------- RadGridView (Level 3)

It works fine in normal data databinding. Three level of gridvews can be shown.
i.e.

<telerik:GridViewDataColumn    DataMemberBinding="{Binding Allocation_Amount}"
Header="Amount" TextAlignment="Right" Width="Auto" HeaderTextAlignment="Right">
 </telerik:GridViewDataColumn>

When i add a converter in binding in Level 3 grid, during runtime it shows only the Level 1 grid (the topmost one) with "+" that's not expandable. If i add a converter in binding in Level 1 and Level 2 grid, it also works fine. Three levels expandable grid could be shown.
i.e.

<telerik:GridViewDataColumn     DataMemberBinding="{Binding Allocation_Amount, Converter={StaticResource stringFormat}, 
 ConverterCulture={x:Static glob:CultureInfo.CurrentCulture}, ConverterParameter={}{0:C}}"
 Header="Amount" TextAlignment="Right" Width="Auto" HeaderTextAlignment="Right">
 </telerik:GridViewDataColumn>


my xaml code for gridview.
<telerik:RadGridView ShowGroupPanel="False"  x:Name="rgvInvoiceList" ItemsSource="{Binding InvoiceList, Mode=OneWay}" IsReadOnly="True">
               
             <telerik:RadGridView.ChildTableDefinitions>                    
                 <telerik:GridViewTableDefinition/>                    
             </telerik:RadGridView.ChildTableDefinitions>
                
             <telerik:RadGridView.Columns>
                 <telerik:GridViewDataColumn Header="Invoice No" DataMemberBinding="{Binding Invoice_No}">
                     <telerik:GridViewDataColumn.CellTemplate>
                         <DataTemplate>
                             <TextBlock>
                                 <Hyperlink Click="InvoiceNo_Click">
                                     <TextBlock Text="{Binding Invoice_No}" ></TextBlock>
                                 </Hyperlink>                                           
                             </TextBlock>
                         </DataTemplate>
                     </telerik:GridViewDataColumn.CellTemplate>
                 </telerik:GridViewDataColumn>
                 <telerik:GridViewDataColumn DataMemberBinding="{Binding Invoice_Date, Converter={StaticResource stringFormat}, 
                                             ConverterCulture={x:Static glob:CultureInfo.CurrentCulture}, ConverterParameter={}{0:d}}"
                                             Header="Date" MinWidth="60" ></telerik:GridViewDataColumn>
                 <telerik:GridViewDataColumn  Header="Bill To" Width="*" DataMemberBinding="{Binding Bill_To_Name}">
                     <telerik:GridViewDataColumn.CellTemplate>
                         <DataTemplate>
                             <TextBlock>
                                 <Hyperlink Click="BillToName_Click">
                                     <TextBlock Text="{Binding Bill_To_Name}" ></TextBlock>
                                 </Hyperlink>
                             </TextBlock>
                         </DataTemplate>
                     </telerik:GridViewDataColumn.CellTemplate>
                 </telerik:GridViewDataColumn>
                 <telerik:GridViewDataColumn Header="Pay To" DataMemberBinding="{Binding Pay_To_Type}"/>
                 <telerik:GridViewDataColumn  Header="Status" DataMemberBinding="{Binding Invoice_Status_Text}" />
                 <telerik:GridViewDataColumn DataMemberBinding="{Binding Invoice_Total, Converter={StaticResource stringFormat}, 
                 ConverterCulture={x:Static glob:CultureInfo.CurrentCulture}, ConverterParameter={}{0:C}}"
                                         Header="Amount" TextAlignment="Right" Width="Auto" HeaderTextAlignment="Right">
                 </telerik:GridViewDataColumn>
             </telerik:RadGridView.Columns>
                               
             <telerik:RadGridView.HierarchyChildTemplate>
                 <DataTemplate>
                     <!-- Invoice Detail Level -->
                     <telerik:RadGridView ShowColumnHeaders="False"  ShowGroupPanel="False"  ItemsSource="{Binding Invoice_Detail,  Mode=OneWay}" AutoGenerateColumns="False"
                                          IsReadOnly="True" >
                         <telerik:RadGridView.ChildTableDefinitions>
                             <telerik:GridViewTableDefinition/>
                         </telerik:RadGridView.ChildTableDefinitions>
                         <telerik:RadGridView.Columns>
                             <telerik:GridViewDataColumn DataMemberBinding="{Binding Cost_Centre_Name_Display}" 
                 Header="Cost Centre" Width="Auto"></telerik:GridViewDataColumn>
                             <telerik:GridViewDataColumn DataMemberBinding="{Binding Account_Code_Name_Internal_Display}" 
                 Header="Account" Width="Auto"></telerik:GridViewDataColumn>
                             <telerik:GridViewDataColumn DataMemberBinding="{Binding Period_From, Converter={StaticResource stringFormat}, 
                 ConverterCulture={x:Static glob:CultureInfo.CurrentCulture}, ConverterParameter={}{0:d}}" 
                 Header="Period From" TextAlignment="Right" HeaderTextAlignment="Right" MinWidth="60">
                             </telerik:GridViewDataColumn>
                             <telerik:GridViewDataColumn DataMemberBinding="{Binding Period_To, Converter={StaticResource stringFormat}, 
                 ConverterCulture={x:Static glob:CultureInfo.CurrentCulture}, ConverterParameter={}{0:d}}" 
                 Header="Period To" TextAlignment="Right" HeaderTextAlignment="Right" MinWidth="60"></telerik:GridViewDataColumn>
                             <telerik:GridViewDataColumn DataMemberBinding="{Binding Description}" Header="Description" Style="{StaticResource GridViewDataColumnStyle_Description}">
                             </telerik:GridViewDataColumn>
                             <telerik:GridViewDataColumn DataMemberBinding="{Binding Invoice_Amount, Converter={StaticResource stringFormat}, 
                 ConverterCulture={x:Static glob:CultureInfo.CurrentCulture}, ConverterParameter={}{0:C}}"
                                         Header="Amount" TextAlignment="Right" Width="Auto" HeaderTextAlignment="Right">
                             </telerik:GridViewDataColumn>
                         </telerik:RadGridView.Columns>
                         <!-- Invoice Allocation Level -->
                         <telerik:RadGridView.HierarchyChildTemplate>
                             <DataTemplate>
                                 <telerik:RadGridView ShowColumnHeaders="False" ShowGroupPanel="False"  ItemsSource="{Binding Invoice_Allocation, Mode=OneWay}" AutoGenerateColumns="False"
                                          IsReadOnly="True">
                                     <telerik:RadGridView.Columns>
                                             <telerik:GridViewDataColumn Header="Receipt No/Credit Note No"   TextAlignment="Right" Width="Auto" HeaderTextAlignment="Right" 
                                                                     DataMemberBinding="{Binding Receipt_Credit_Note_No}" >
                                             <telerik:GridViewDataColumn.CellTemplate>
                                                 <DataTemplate>
                                                     <TextBlock>
                                                         <Hyperlink Click="ReceiptNoCreditNo_Click">
                                                             <TextBlock Text="{Binding Receipt_Credit_Note_No}" ></TextBlock>
                                                         </Hyperlink>
                                                     </TextBlock>
                                                 </DataTemplate>
                                             </telerik:GridViewDataColumn.CellTemplate>
                                         </telerik:GridViewDataColumn>
                                         <!--<telerik:GridViewDataColumn DataMemberBinding="{Binding Cutoff_Date, Converter={StaticResource stringFormat}, 
                 ConverterCulture={x:Static glob:CultureInfo.CurrentCulture}, ConverterParameter={}{0:d}}" 
                 Header="Cutoff Date" TextAlignment="Right" HeaderTextAlignment="Right" MinWidth="60">
                                         </telerik:GridViewDataColumn>-->
                                         <telerik:GridViewDataColumn DataMemberBinding="{Binding Cutoff_Date}" 
                 Header="Cutoff Date" TextAlignment="Right" HeaderTextAlignment="Right" MinWidth="60">
                                         </telerik:GridViewDataColumn>
                                           
          
                                         <!--<telerik:GridViewDataColumn     DataMemberBinding="{Binding Allocation_Amount, Converter={StaticResource stringFormat}, 
                 ConverterCulture={x:Static glob:CultureInfo.CurrentCulture}, ConverterParameter={}{0:C}}"
                                         Header="Amount" TextAlignment="Right" Width="Auto" HeaderTextAlignment="Right">
                                         </telerik:GridViewDataColumn>-->
                                         <telerik:GridViewDataColumn    DataMemberBinding="{Binding Allocation_Amount}"
                                         Header="Amount" TextAlignment="Right" Width="Auto" HeaderTextAlignment="Right">
                                         </telerik:GridViewDataColumn>
                                           
                                           
                                     </telerik:RadGridView.Columns>
                                 </telerik:RadGridView>
                             </DataTemplate>
                         </telerik:RadGridView.HierarchyChildTemplate>
                     </telerik:RadGridView>
                 </DataTemplate>
             </telerik:RadGridView.HierarchyChildTemplate>
               
               
         </telerik:RadGridView>



If i use a debugger it shows that i have exception: NullReferenceException that's throwed from GridViewRow.OnIsExpandedChanged.

The error message.
Sysem.NullReferenceException : 
    {"Object reference not set to an instance of an object"}

Data:    
    System.Collections.ListDictionaryInternal

StackTrace:
   at DataSwiftWPF.Views.Invoice.InvoiceListWindow.System.Windows.Markup.IStyleConnector.Connect(Int32 connectionId, Object target) in f:\Stephen Chow\Project\DataSwiftV3\DataSwiftWPF\Views\Invoice\InvoiceListWindow.xaml:line 110
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader, XamlObjectWriter currentWriter)
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlObjectWriter objectWriter)
   at System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(DependencyObject container, IComponentConnector componentConnector, IStyleConnector styleConnector, List`1 affectedChildren, UncommonField`1 templatedNonFeChildrenField)
   at System.Windows.FrameworkTemplate.LoadContent(DependencyObject container, List`1 affectedChildren)
   at System.Windows.FrameworkTemplate.LoadContent()
   at Telerik.Windows.Controls.GridView.GridViewRow.PopulateHierarchyContent() in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Controls\GridView\GridView\GridView\Rows\GridViewRow.cs:line 304
   at Telerik.Windows.Controls.GridView.GridViewRow.OnIsExpandedChanged(Boolean oldValue, Boolean newValue) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Controls\GridView\GridView\GridView\Rows\GridViewRow.cs:line 230
   at Telerik.Windows.Controls.GridView.GridViewRow.OnIsExpandedChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Controls\GridView\GridView\GridView\Rows\GridViewRow.cs:line 205
   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, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at MS.Internal.Data.PropertyPathWorker.SetValue(Object item, Object value)
   at MS.Internal.Data.ClrBindingWorker.UpdateValue(Object value)
   at System.Windows.Data.BindingExpression.UpdateSource(Object value)

TargetSite:
    {Void System.Windows.Markup.IStyleConnector.Connect(Int32, System.Object)}


I found a thread that is talking a similar scenario. And you reply that the problem could be fixed by getting the latest version of build.
But it seems that it does not work in my scenario.
http://www.telerik.com/community/forums/wpf/gridview/nullreferenceexception-in-gridviewrow-onisexpandedchanged.aspx

Any suggestion for my scenario?

Regards,
Stephen Chow

1 Answer, 1 is accepted

Sort by
0
Maya
Telerik team
answered on 19 Dec 2011, 09:42 AM
Hi Stephen,

Actually, the two issues (the one you have and the one from the forum you mentioned) are not connected. 
We are aware that such an exception is raised in certain conditions - if you have similar nested controls, one of which has an event handler and a StaticResource defined. Unfortunately, this is out of our control as it is issue in .Net 4 Framework and not in RadGridView.
Please take a look at this thread for further reference.
 

Regards,
Maya
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

Tags
GridView
Asked by
Stephen
Top achievements
Rank 1
Answers by
Maya
Telerik team
Share this question
or