Backward Compatibility

Latest Release Notes

You can check the latest Release Notes here.

Q2 2015

  • GridViewToggleButtonAutomationPeer does not implement TogglePattern.

Q1 SP 2015

Introduced Telerik.Windows.Controls.GridView.Export.dll - it contains logic for exporting RadGridView to xlsx and pdf formats eliminating the dependency of Telerik.Windows.Controls.GridView.dll to all SpreadProcessing logic. The two methods ExportToXlsx and ExportToPdf are located here and if used, a reference to the new binary should be included.

ExportAsync's shouldDisposeString parameter is renamed to shouldDisposeStream.

Q1 2015

Changed

  • Removed obsoleted class GridViewExportEventArgs and TextAlignment, VerticalAlignment, Background, Foreground, FontFamily, FontSize, FontWeight, Width, Height, Styles, Attributes properties from GridViewElementExportingEventArgs class.

What to do now:

As of Q3 2013 GridViewElementExportingEventArgs exposes a new argument VisualParameters. The value of the property depends on the export format. For example:

Before

private void radGrid_ElementExporting(object sender, GridViewElementExportingEventArgs e) 
{ 
    e.Background = Colors.Red; 
    e.FontFamily = new FontFamily("Verdana"); 
    e.FontSize = 30; 
    e.FontWeight = FontWeights.Bold; 
    e.Foreground = Colors.Green; 
    e.Height = 50; 
    e.TextAlignment = TextAlignment.Center; 
    e.VerticalAlignment = VerticalAlignment.Bottom; 
} 

After

For ExportFormat.HTML, the code you should use now is similar to:

private void clubsGrid_ElementExporting_1(object sender, GridViewElementExportingEventArgs e) 
{ 
    if (e.VisualParameters is GridViewHtmlVisualExportParameters) 
    { 
        var param = e.VisualParameters as GridViewHtmlVisualExportParameters; 
        param.Background = Colors.Red; 
        param.FontFamily = new FontFamily("Verdana"); 
        param.FontSize = 30; 
        param.FontWeight = FontWeights.Bold; 
        param.Foreground = Colors.Green; 
        param.Height = 50; 
        param.TextAlignment = TextAlignment.Center; 
        param.VerticalAlignment = VerticalAlignment.Bottom; 
        param.Width = 500; 
    } 
} 

You can find more details on how to implement styling in the ExportFormat.Html article.

Now, it is also possible to define styling for ExportFormat.ExcelML

The type of the property for this format is GridViewExcelMLVisualExportParameters and you can set it as follows:

private void clubsGrid_ElementExporting(object sender, GridViewElementExportingEventArgs e) 
{ 
    if (e.Element == ExportElement.Cell) 
    { 
        var column = e.Context as GridViewDataColumn; 
        if (column.Header.ToString() == "Name") 
        { 
            (e.VisualParameters as GridViewExcelMLVisualExportParameters).StyleId = "someStyle"; 
        } 
    } 
} 

You can define the Style when InitializingExcelMLStyles event is raised. For example:

private void clubsGrid_InitializingExcelMLStyles(object sender, ExcelMLStylesEventArgs e) 
{ 
    ExcelMLStyle style = new ExcelMLStyle("someStyle"); 
    style.Alignment.Horizontal = ExcelMLHorizontalAlignment.Automatic; 
    style.Font.Size = 15; 
    style.Font.Italic = true; 
    e.Styles.Add(style); 
} 

You can find more details on how to implement styling in the ExportFormat.ExcelML article.

You can also check the Export section in our documentation on the different exporting options currently available.

Changed

  • Removed obsoleted property DefaultOperator of FilterOperatorsLoadingEventArgs.

What to do now:

You can work with the properties DefaultOperator1 and DefaultOperator2 instead.

Changed

  • Removed obsoleted property ParentGroupRow of GridViewGroupFooterRow.

Changed

  • Removed obsoleted property ShowInsertRow of RadGridView.

What to do now:

Property NewRowPosition should be used instead. You can also refer to the Adding Rows article.

Q2 2014

Changed

  • GridViewMaskedTextBoxColumn was deleted. You can use GridViewMaskedInputColumn instead.

What to do now:

You can check our online documentation on how to use GridViewMaskedInputColumn.

Changed

  • GridViewIndicatorCell was deleted.

What to do now:

GridViewIndicatorCell and its style consequently have not been used for a long time. As an alternative solution, you can substitute it with a single Border element or any ContentControl.

Q3 2013

Changed

  • ShowInsertRow marked as Obsolete.Use NewRowPosition instead.

What to do now:

You can check our online documentation and demos on how to control the position of GridViewNewRow by using the property NewRowPosition.

Changed

  • GridViewIndicatorCell is marked as obsolete.

What to do now:

GridViewIndicatorCell and its style consequently have not been used for a long time.

You can check the full Release Notes for Q3 2013 here.

Q2 2013

Changed

  • DragDrop logic now depends on DragDropManager. The RadDragAndDropManager logic was removed from GridViewDataControl.

What to do now:

You can use DragDropManager.

You can check the full Release Notes for Q2 2013 here.

Q1 2013

There are no breaking changes introduced with that official version.

You can check the full Release Notes for Q1 2013 here.

Q3 2012 SP

  • IndicatorPresenter class has been removed.

  • FrozenColumnSplitter Logic now depends on DragDropManager

Q3 2012

  • As of Q3 2012 we have introduced a new property of the RadGridView GroupRenderMode. It has two options: Nested mode and Flat mode. Please note that when you use the Flat mode, you should work with GroupHeaderRow, not GridViewGroupRow. If you use the default Nested mode, then you could still use the GridViewGroupRow.

  • GridView Drag and Drop logic implementation migration. Migrated from RadDragAndDropManager to DragDropManager.

  • Now the Culture used for formatting the GridView is the one specified as a Language for it or for the containing Window. You should set the Language property to be the CurrentCulture and the GridView will be formatted based on it.

  • GridViewVirtualizingPanel Status, Orientation and VirtualizationMode removed (obsolete since 2009).

  • public method Telerik.Windows.Controls.GridViewRowValidatingEventArgs.ctor is removed. Please, use another one instead.

  • public class Telerik.Windows.Controls.GridView.CheckBoxEditor is removed. Please, use CheckBox instead.

  • public method Telerik.Windows.Controls.GridView.GridViewDataControl.OnFiltered is not supposed to be used from your code and is made internal.

  • public method Telerik.Windows.Controls.GridView.GridViewDataControl.OnFiltering is not supposed to be used from your code and is made internal.

  • public class Telerik.Windows.Controls.GridView.TextBoxEditor is removed. Please, use TextBox instead.

  • public class Telerik.Windows.Controls.GridView.Automation.GridViewCellAutomationPeer is made obsolete and will be removed in a future version. Please, use Telerik.Windows.Automation.Peers.GridViewCellAutomationPeer instead.

  • public class Telerik.Windows.Controls.GridView.Automation.GridViewDataItemAutomationPeer is made obsolete and will be removed in a future version. Please, use Telerik.Windows.Automation.Peers.GridViewDataItemAutomationPeer instead.

  • public class Telerik.Windows.Controls.GridView.Automation.GridViewHeaderRowAutomationPeer is made obsolete and will be removed in a future version. Please, use Telerik.Windows.Automation.Peers.GridViewHeaderRowAutomationPeer instead.

  • public class Telerik.Windows.Controls.GridView.Automation.GridViewVirtualizingPanelAutomationPeer is made obsolete and will be removed in a future version. Please, use Telerik.Windows.Automation.Peers.GridViewVirtualizingPanelAutomationPeer instead.

  • public class Telerik.Windows.Controls.GridView.Automation.RadGridViewAutomationPeer is made obsolete and will be removed in a future version. Please, use Telerik.Windows.Automation.Peers.RadGridViewAutomationPeer instead.

  • public class Telerik.Windows.Controls.GridView.GridView.Automation.DetailsPresenterAutomationPeer is made obsolete and will be removed in a future version. Please, use Telerik.Windows.Automation.Peers.DetailsPresenterAutomationPeer instead.

Q2 2012 SP2

Now the Culture used is the one specified as a Language for the GridView (or the containing UserControl). You could set the Language property to the CurrentCulture like so:

public MainPage() 
{ 
    InitializeComponent(); 
    Dispatcher.BeginInvoke(new Action(() => this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.Name))); 
} 

Q1 2012

NOTE!!!

Filtering BREAKING CHANGES !!!

NOTE!!!

In order to enable filtering for our GridViewExpressionColumn, we had to rewrite our entire filtering infrastructure from scratch. We have made as few breaking changes as possible, but some of them were inevitable, for which we would like to apologize. Here is the list of breaking changes that you should be aware of. Do not hesitate to write us if you are having problems with upgrading your project. We will do our best to assist you.

  • The IFilteringControl.Prepare method now expects the more general type GridViewColumn instead of a GridViewBoundColumnBase as its argument. If you were relying on GridViewBoundColumnBase-specific methods or properties you will have to add a check and a cast.

  • The GridViewDistinctValuesLoadingEventArgs.Column property is now of the more general type GridViewColumn. If you were relying on GridViewBoundColumnBase-specific methods or properties you will have to add a check and a cast in your DistinctValuesLoading event handler.

  • The GridViewDataControl.GetDistinctValues family of methods now accept a GridViewColumn instead of an IDataFieldDescriptor as their first parameter.

  • The EditorCreatedEventArgs.Column is now of the more general type GridViewColumn. If you were relying on GridViewBoundColumnBase-specific methods or properties you will have to add a check and a cast in your DistinctValuesLoading event handler.

  • The FilterOperatorsLoadingEventArgs.Column property is now of type GridViewColumn instead of IDataFieldDescriptor.

  • The ColumnFilterDescriptor class has been made internal. Use the IColumnFilterDescriptor interface instead. It contains all relevant properties and methods.

  • You can't directly instantiate a ColumnFilterDescriptor anymore since the class has been made internal. When you access the GridViewColumn.ColumnFilterDescriptor property, it will be automatically created on demand by the column and you will be given an IColumnFilterDescriptor to work with. For example: IColumnFilterDescriptor cfd = myColumnInstance.ColumnFilterDescriptor;

  • The IColumnFilterDescriptor.Column property is now of type GridViewColumn instead of IDataFieldDescriptor.

  • The IColumnFilterDescriptor.DistinctFilter property is now of type IDistinctValuesFilterDescriptor instead of DistinctValuesFilterDescriptor.

  • The IColumnFilterDescriptor.FieldFilter property is now of type IFieldFilterDescriptor instead of FieldFilterDescriptor.

  • The DistinctValuesFilterDescriptor class has been made internal. It is not supposed to be used directly from your code. Use the IDistinctValuesFilterDescriptor interface instead.

  • The FieldFilterDescriptor class has been made internal. It is not supposed to be used directly from your code. Use the IFieldFilterDescriptor interface instead.

  • If you were using code from the GridViewCustomSerialization PersistenceFramework example, please update it according to the updated example.

  • The GridViewDataControl.OnFiltering method is marked as obsolete now. It is not supposed to be used directly from your code and will be made internal in a future realease.

  • The GridViewDataControl.OnFiltered method is marked as obsolete now. It is not supposed to be used directly from your code and will be made internal in a future realease.

Some code changes are needed after the upgrade. Find the list with code snippets below.

  • Filtering a Column Before:

GridViewColumn ageColumn = this.radGridView.Columns["Age"]; 
ColumnFilterDescriptor ageColumnFilter = new ColumnFilterDescriptor(ageColumn); 
// ... 
ageColumnFilter.DistinctFilter.DistinctValues.Add(5); 
ageColumnFilter.FieldFilter.Filter1.Operator = FilterOperator.IsLessThan; 
ageColumnFilter.FieldFilter.Filter1.Value = 10; 
// ... 
this.radGridView.FilterDescriptors.Add(ageColumnFilter); 
Dim ageColumn As GridViewColumn = Me.radGridView.Columns("Age") 
Dim ageColumnFilter As New ColumnFilterDescriptor(ageColumn) 
' ... 
ageColumnFilter.DistinctFilter.DistinctValues.Add(5) 
ageColumnFilter.FieldFilter.Filter1.[Operator] = FilterOperator.IsLessThan 
ageColumnFilter.FieldFilter.Filter1.Value = 10 
' ... 
Me.radGridView.FilterDescriptors.Add(ageColumnFilter) 

After:

GridViewColumn ageColumn = this.radGridView.Columns ["Age"]; 
// Getting it from the property will create it and associate it with its column automatically. 
IColumnFilterDescriptor ageColumnFilter = ageColumn.ColumnFilterDescriptor; 
ageColumnFilter.SuspendNotifications(); 
// ... 
ageColumnFilter.DistinctFilter.AddDistinctValue(5); 
ageColumnFilter.FieldFilter.Filter1.Operator = FilterOperator.IsLessThan; 
ageColumnFilter.FieldFilter.Filter1.Value = 10; 
// ... 
// There is no need to manually add the column filter to this.radGridView.FilterDescriptors 
// When the column filter is activated/deactivated it is automatically added/removed to this collection. 
ageColumnFilter.ResumeNotifications(); 
Dim ageColumn As GridViewColumn = Me.radGridView.Columns("Age") 
' Getting it from the property will create it and associate it with its column automatically. 
Dim ageColumnFilter As IColumnFilterDescriptor = ageColumn.ColumnFilterDescriptor 
ageColumnFilter.SuspendNotifications() 
' ... 
ageColumnFilter.DistinctFilter.AddDistinctValue(5) 
ageColumnFilter.FieldFilter.Filter1.[Operator] = FilterOperator.IsLessThan 
ageColumnFilter.FieldFilter.Filter1.Value = 10 
' ... 
' There is no need to manually add the column filter to this.radGridView.FilterDescriptors 
' When the column filter is activated/deactivated it is automatically added/removed to this collection. 
ageColumnFilter.ResumeNotifications() 
  • Clearing a Column Filter Before:

this.radGridView.FilterDescriptors.Remove(columnFilterDescriptor); 

After:

// Calling ClearFilter will automatically remove filter descriptor from the grid. 
myColumn.ClearFilters(); 
  • Clearing All RadGridView Filters Before:

this.radGridView.FilterDescriptors.Clear(); 

After:

this.radGridView.FilterDescriptors.SuspendNotifications(); 
foreach (var column in this.radGridView.Columns) 
{ 
    column.ClearFilters(); 
} 
this.radGridView.FilterDescriptors.ResumeNotifications(); 
Me.radGridView.FilterDescriptors.SuspendNotifications() 
For Each column As var In Me.radGridView.Columns 
 column.ClearFilters() 
Next 
Me.radGridView.FilterDescriptors.ResumeNotifications() 
End Class 

Q3 2011

  • The default filter editor for numeric types is now TextBox instead of RadMaskedTextBox

  • The StringFilterEditor control has two new properties now -- Text and IsCaseSensitive. If you create this editor manually instead of relying on the FilterEditorFactory, you have to bind these two properties to the "Value" and "IsCaseSensitive" properties of the view model respectively

  • Deleting the entire text from the StringFilterEditor will now clear the filter instead of filtering on string.Empty

Q3 2010 (Version Number: 2010.3.1110)

  • The GroupDescriptor property of GridViewGroupedEventArgs and GridViewGroupingEventArgs is now of type IGroupDescriptor.

  • The Action property of the GridViewGroupedEventArgs and GridViewGroupingEventArgs is now of type GroupingEventAction instead of CollectionChangeAction.

  • The GroupDescriptors property of RadGridView is now a collection of IGroupDescriptor, instead of GroupDescriptor.

  • RadGridView now generates the new ColumnGroupDescriptor when grouping from the UI.

  • The Grouping and Grouped events now fire only when a grouping operation has been performed on the UI.

  • The PropertyName of GridViewSortingEventArgs has been marked as obsolete and will be removed in a future release. You should use the Column property to identify which column/data field is to be sorted.

  • RadGridView now generates the new ColumnSortDescriptor when sorting from the UI.

  • The SortDescriptors property of RadGridView is now a collection of ISortDescriptor, instead of SortDescriptor.

  • The GroupMemberPath, SortMemberPath and GroupHeaderFormatString properties have been moved from GridViewBoundColumnBase to GridViewColumn class__.__

Q2 2010 (Version Number: 2010.2.714)

  • The RadDataPager control has been moved from the Telerik.Windows.Controls.GridView assembly to the new Telerik.Windows.Controls.Data assembly. Since its namespace remains the same as before (Telerik.Windows.Controls) existing applications only need to add a reference to the new assembly. No other changes should be necessary.

  • Exporting event marked as obsolete. Use ElementExporting instead.

Q1 2010 SP2 (Version Number: 2010.1.603)

  • Changed the namespace of LookupElement from Telerik.Windows.Controls to Telerik.Windows.Controls.Gridview.

Breaking changes for Telerik RadGridView for SilverlightWPF Q1 2010 SP1 (Version Number: 2010.1.0422)

  • The enumerator of RadGridView.Items now enumerates data items only (use RadGridView.Items.Groups to retrieve group items).

Removed properties and methods for Telerik RadGridView for SilverlightWPF Q1 2010 (Version Number: 2010.1.0309)

  • Redundant FrameworkElementToImageconverter class

  • GridViewDataControl (base class for RadGridView)

  • UseAlternateRowStyle property - use AlternationCount property instead.

  • AlternateExpandableRowStyle property - use AlternateRowStyle property instead.

  • ExpandableRowStyle property - use RowStyle instead.

  • ItemsGenerator property - use ItemContainerGenerator instead.

  • ColumnsWidthMode property - use ColumnWidth instead.

  • ValidationMode property - not used anymore. Use cell and row validation events if you want to control validation on cell or row level

  • VerticalLineThickness, VerticalLineVisibility, and VerticalLineFill properties - use GridLinesVisibility instead.

  • EditorSettings property - use appropriate column type, or create custom column which inherits from the GridViewBoundColumnBase class

  • BringDataItemIntoView method - use ScrollIntoView(...) or use ScrollIntoViewAsync(...)

  • GridViewFooterCell, GridViewGroupFooterCell and GridViewGroupRow contstructors accepting GridViewDataControl - use the default constructors.

  • AddedDescriptors - use Added property instead

  • RemovedDescriptors - use Remove property instead.

  • GridViewExpandableRow class - use GridViewRow.IsExpandable property to control whether given row has hierarchy

  • GridViewCell

  • Editor property removed - use the Content of the cell which is EditorPresenter when cell is in edit mode.

  • CellRequestBringIntoViewEvent - use GridViewCell.BringIntoVew() instead.

  • CheckBoxEditorSettings, ComboBoxEditorSettings, MaskedTextBoxEditorSettings, TextBoxEditorSettings, DatePickerEditorSettings, EditorSettings classes and IEditorSettings interface - use appropriate column type, or create custom column which inherits from the GridViewBoundColumnBase class

  • GridViewCellEditor, GridViewCheckBoxEditor, GridViewComboBoxEditor, GridViewDatePickerEditor, GridViewMaskedtextBoxEditor and GridViewTextBoxEditor classes - standard controls which have valid validation states are used instead.

  • RegisterDefaultEditor and ResotreDefaultEditors methods of EditorsLoader class

  • IExpandState interface

  • NullableDateConverter class - RadDatePicker handles nullable values out of the box.

  • ValidationMode property of GridViewNewRow class

Obsolete or changed properties and methods for Telerik RadGridView for SilverlightWPF Q1 2010 (Version Number: 2010.1.0309)

  • AlignmentContentPresenter - normal ContentPresenter is used in GridViewCell's Template

  • GridViewHeaderSplitter class

  • HorizontalScrollPanel class - GridViewCellsPanel is used instead.

  • GridViewCellBase

  • MouseDoubleClick in Silverlight is now obsolete

  • TextAlignment, TextDecorations and TextWrapping properties- use the ones on the GridViewColumn instead.

  • IsCustomScrollingEnabled property moved to GridViewScrollViewer - used to handle server side scrolling scenarios

In this article