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