Hello telerik!
After applying RadControls_for_Silverlight5_2012_2_0625_DEV_hotfix; I still get the following error when my GridView gets loaded:
Ambiguous match found.
at System.RuntimeType.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
at System.Type.GetProperty(String name)
at Telerik.Windows.Controls.GridViewBoundColumnBase.GetValidationErrors(Object dataItem, String propertyName)
at Telerik.Windows.Controls.GridView.GridViewCell.<GetDataErrors>d__7.MoveNext()
at Telerik.Windows.Data.EnumerableExtensions.Count(IEnumerable source)
at Telerik.Windows.Controls.GridView.GridViewCell.UpdateIsValidState()
at Telerik.Windows.Controls.GridView.GridViewCell.UpdateValue()
at Telerik.Windows.Controls.GridView.GridViewCell.SetCellElement()
at Telerik.Windows.Controls.GridView.GridViewRow.PrepareCell(GridViewCellBase cellBase, GridViewColumn column)
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.PrepareCell(GridViewCellBase cell, GridViewColumn column)
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.GetVirtualizedCell(GridViewColumn column, Boolean createIfNull)
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.RealizeAndMeasureCells(Int32 startIndex, Int32 predictedLastIndex, Func`2 calculateNextIndex)
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.UpdateVirtualizedCells()
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.MeasureOverride(Size availableSize)
at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
Please help!
Thanks and all the best,
Tim.
10 Answers, 1 is accepted
This issue should be fixed. May I ask you to share more details about your exact scenario? A code-snippet or a sample project demonstrating the problem will be a plus.
Vera
the Telerik team
Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>
Thanks a lot!!!
Tim.
Unfortunately I am unable to create a sample project in reasonable time - anyway: really strange is, that it is working fine, when I replace the following line
<
telerik:GridViewDataColumn
Header
=
"Label"
DataMemberBinding
=
"{Binding SessionCount}"
DataFormatString
=
"{}{0:N0}"
/>
with this line here:
<
telerik:GridViewDataColumn
Header
=
"Label"
DataMemberBinding
=
"{Binding SessionCountXXX}"
DataFormatString
=
"{}{0:N0}"
/>
Of course, SessionCount and SessionCountXXX are identical beside the name. That's strange! I don't get it but it is working with any of these two lines in the old version...
Any ideas perhaps???
Thanks a lot,
Tim.
Can you post both properties implementations?
Kind regards,Vlad
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
In my case, I've extended the RadGridView control so that I can pass in a configuration object parameter and have it build columns with specific datatypes so that sorting and filtering will work properly.
public
class
FeatureResultGrid : RadGridView
{
private
List<
string
> _blackListedColumns =
new
List<
string
>()
{
"OBJECTID"
,
"SHAPE"
,
"GEOG"
};
private
RelayCommand _copyToClipboardCommand;
public
RelayCommand CopyToClipboardCommand
{
get
{
return
_copyToClipboardCommand =
new
RelayCommand(
() =>
{
StringBuilder clipboard =
new
StringBuilder();
if
(
this
.Items.Count > 0)
{
clipboard.AppendLine(
"<TABLE>"
);
clipboard.AppendLine(
"<TR>"
);
foreach
(var col
in
GridConfig.ColumnDefinitions)
{
clipboard.AppendFormat(
"<TH>{0}</TH>"
, col.DisplayName);
}
clipboard.AppendLine(
"</TR>"
);
foreach
(Graphic graphic
in
this
.Items)
{
clipboard.AppendLine(
"<TR>"
);
foreach
(var col
in
GridConfig.ColumnDefinitions)
{
clipboard.AppendFormat(
"<TD>{0}</TD>"
, graphic.Attributes[col.DisplayName].ToString());
}
clipboard.AppendLine(
"</TR>"
);
}
clipboard.AppendLine(
"</TABLE>"
);
}
System.Windows.Clipboard.SetText(clipboard.ToString());
}
);
}
}
public
FeatureResultGrid()
{
AutoGenerateColumns =
false
;
SelectionMode = System.Windows.Controls.SelectionMode.Multiple;
SelectionChanged += (s, e) =>
{
if
(GridConfig !=
null
&& GridConfig.SelectedItems !=
null
)
{
if
(e.AddedItems !=
null
)
{
foreach
(var item
in
e.AddedItems)
{
GridConfig.SelectedItems.Add((Graphic)item);
}
}
if
(e.RemovedItems !=
null
)
{
foreach
(var item
in
e.RemovedItems)
{
GridConfig.SelectedItems.Remove((Graphic)item);
}
}
}
};
}
#region -------------------- FeatureGridConfiguration --------------------
/// <summary>
/// The <see cref="GridConfig" /> dependency property's name.
/// </summary>
public
const
string
GridConfigPropertyName =
"GridConfig"
;
/// <summary>
/// Gets or sets the value of the <see cref="GridConfig" />
/// property. This is a dependency property.
/// </summary>
public
FeatureGridParameter GridConfig
{
get
{
return
(FeatureGridParameter)GetValue(GridConfigProperty);
}
set
{
SetValue(GridConfigProperty, value);
}
}
/// <summary>
/// Identifies the <see cref="GridConfig" /> dependency property.
/// </summary>
public
static
readonly
DependencyProperty GridConfigProperty = DependencyProperty.Register(
GridConfigPropertyName,
typeof
(FeatureGridParameter),
typeof
(FeatureResultGrid),
new
PropertyMetadata(
null
,
(d, e) =>
{
((FeatureResultGrid)d).BuildColumns(((FeatureGridParameter)e.NewValue).ColumnDefinitions);
}
)
);
#endregion -------------------- FeatureGridConfiguration --------------------
private
void
BuildColumns(IList<ColumnDefinition> columns)
{
foreach
(var columnDef
in
columns)
{
if
(!_blackListedColumns.Contains(columnDef.DisplayName.ToUpper()))
{
GridViewDataColumn col =
new
GridViewDataColumn();
col.DataMemberBinding =
new
Binding(columnDef.BindingString);
col.MaxWidth = 300;
col.TextWrapping = TextWrapping.Wrap;
col.Header = columnDef.DisplayName;
col.DataType = columnDef.DataType;
col.UniqueName = columnDef.DisplayName;
col.DataFormatString = columnDef.GetFormat();
col.ShowDistinctFilters =
false
;
col.IsSortable =
true
;
Columns.Add(col);
if
(columnDef.IsInitialSortColumn)
{
this
.SortDescriptors.Add(
new
ColumnSortDescriptor()
{
Column = col,
SortDirection = System.ComponentModel.ListSortDirection.Descending
}
);
}
}
}
}
}
This is the parameters class:
/// <summary>
/// Class encapsulates all of the parameter information for a feature grid.
/// Using this method solves the problem where we need to take action only
/// when all parameters have been passed in to the control.
/// </summary>
public
class
FeatureGridParameter :INotifyPropertyChanged
{
private
string
_uniqueIdColumnName;
private
IList<ColumnDefinition> _columnDefinitions;
/// <summary>
/// The name of the column that holds the unique values. For ArcGis
/// Server feature services, this is usually OBJECTID.
/// </summary>
public
string
UniqueIdColumn
{
get
{
return
_uniqueIdColumnName;
}
set
{
if
(value != _uniqueIdColumnName)
{
_uniqueIdColumnName = value;
RaisePropertyChanged(
"UniqueIdColumn"
);
}
}
}
/// <summary>
/// List of all available columns
/// </summary>
public
IList<ColumnDefinition> ColumnDefinitions
{
get
{
return
_columnDefinitions;
}
set
{
if
(value != _columnDefinitions)
{
_columnDefinitions = value;
RaisePropertyChanged(
"ColumnDefinitions"
);
}
}
}
public
ObservableCollection<Graphic> SelectedItems {
get
;
set
; }
public
event
PropertyChangedEventHandler PropertyChanged;
protected
void
RaisePropertyChanged(
string
propertyName)
{
if
(PropertyChanged !=
null
)
{
PropertyChanged(
this
,
new
PropertyChangedEventArgs(propertyName));
}
}
}
This is how I implemented it in xaml:
<
foc:FeatureResultGrid
GridConfig
=
"{Binding Path=GridConfiguration}"
ItemsSource
=
"{Binding }"
CanUserSelect
=
"False"
ShowGroupPanel
=
"False"
IsReadOnly
=
"True"
IsFilteringAllowed
=
"False"
CanUserFreezeColumns
=
"False"
RowIndicatorVisibility
=
"Collapsed"
>
<
toolkit:ContextMenuService.ContextMenu
>
<
toolkit:ContextMenu
>
<
toolkit:MenuItem
Header
=
"Copy"
IsEnabled
=
"True"
>
<
i:Interaction.Triggers
>
<
i:EventTrigger
EventName
=
"Click"
>
<
mvvm:EventToCommand
Command
=
"{Binding Path=CopyToClipboardCommand}"
/>
</
i:EventTrigger
>
</
i:Interaction.Triggers
>
</
toolkit:MenuItem
>
</
toolkit:ContextMenu
>
</
toolkit:ContextMenuService.ContextMenu
>
<
foc:FeatureResultGrid.Columns
>
<
telerik:GridViewColumn
>
<
telerik:GridViewColumn.CellTemplate
>
<
DataTemplate
>
<
telerik:RadButton
BorderThickness
=
"0"
Padding
=
"0"
Height
=
"17"
Width
=
"17"
ToolTipService.ToolTip
=
"Center map on point."
>
<
telerik:RadButton.Content
>
<
Path
Fill
=
"Transparent"
Stroke
=
"Black"
StrokeThickness
=
".75"
>
<
Path.Data
>
<
GeometryGroup
>
<
EllipseGeometry
RadiusX
=
"4"
RadiusY
=
"4"
Center
=
"6,6"
/>
<
LineGeometry
StartPoint
=
"0,6"
EndPoint
=
"11,6"
></
LineGeometry
>
<
LineGeometry
StartPoint
=
"6,0"
EndPoint
=
"6,11"
></
LineGeometry
>
</
GeometryGroup
>
</
Path.Data
>
</
Path
>
</
telerik:RadButton.Content
>
<
i:Interaction.Triggers
>
<
i:EventTrigger
EventName
=
"Click"
>
<
mvvm:EventToCommand
Command
=
"{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=DataContext.FlashFeatureCommand}"
CommandParameter
=
"{Binding}"
/>
</
i:EventTrigger
>
</
i:Interaction.Triggers
>
</
telerik:RadButton
>
</
DataTemplate
>
</
telerik:GridViewColumn.CellTemplate
>
</
telerik:GridViewColumn
>
</
foc:FeatureResultGrid.Columns
>
</
foc:FeatureResultGrid
>
Ambiguous match found.
Stack Trace:
at System.RuntimeType.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
at System.Type.GetProperty(String name)
at Telerik.Windows.Controls.GridViewBoundColumnBase.GetValidationErrors(Object dataItem, String propertyName)
at Telerik.Windows.Controls.GridView.GridViewCell.<GetDataErrors>d__7.MoveNext()
at Telerik.Windows.Data.EnumerableExtensions.Count(IEnumerable source)
at Telerik.Windows.Controls.GridView.GridViewCell.UpdateIsValidState()
at Telerik.Windows.Controls.GridView.GridViewCell.UpdateValue()
at Telerik.Windows.Controls.GridView.GridViewCell.SetCellElement()
at Telerik.Windows.Controls.GridView.GridViewRow.PrepareCell(GridViewCellBase cellBase, GridViewColumn column)
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.PrepareCell(GridViewCellBase cell, GridViewColumn column)
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.GetVirtualizedCell(GridViewColumn column, Boolean createIfNull)
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.RealizeAndMeasureCells(Int32 startIndex, Int32 predictedLastIndex, Func`2 calculateNextIndex)
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.UpdateVirtualizedCells()
at Telerik.Windows.Controls.GridView.GridViewCellsPanel.MeasureOverride(Size availableSize)
at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
Let me know if you'd like me to create a sample project.
Thanks!
Jay
Please open support ticket and send us small project demonstrating the error.
Regards,Vlad
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
I've reverted to using version 2012.1.326.1050 where the problem does not exist.
Jay
Thank you for the project sent. I tested it with our Latest Internal Build and I did not get the exception. May I ask you to download it and to give it a try?
Vera
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
I have this problem when binding to strongly typed datasets by using the square braket notation in the Binding like the example below.
<telerik:GridViewDataColumn IsReadOnly="True" Header="Nr" DataMemberBinding="{Binding Path=[CU_NumeroPratica]}">
</telerik:GridViewDataColumn>
Thank you,
Giulio
Can you post more info about your grid version? Are you using our latest official Q2 2012 SP2?
Regards,Vlad
the Telerik team
Time to cast your vote for Telerik! Tell DevPro Connections and Windows IT Pro why Telerik is your choice. Telerik is nominated in a total of 25 categories.