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)
my xaml code for gridview.
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
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