Filtering the data by distinct value using the filter query optimization doesn't work properly when adding more than 500 distinct values. To reproduce this, set the OptimizeDistinctFilterQuery property of the corresponding column to True. The distinct values should be filtered using the ColumnFilterDescriptor and the AddDistinctValue method of the DistinctFilter.
In that case, the filter can get reversed and remove the selected distinct values from the data view, instead of adding only them, as would be expected. Or the filter can stop working at all and display all values from the ItemsSource.
To work this around, instead of using the ColumnFilterDescriptor and the AddDistinctValue method, add a composite filter descriptor manually in the FilterDescriptors of RadGridView.
radGridView.FilterDescriptors.SuspendNotifications();
var distinctValuesFilter = new CompositeFilterDescriptor();
distinctValuesFilter.LogicalOperator = FilterCompositionLogicalOperator.Or;
for (int i = 0; i < 5000; i++)
{
object disctincValue = i;
var filter = new FilterDescriptor("Id", FilterOperator.IsEqualTo, disctincValue);
distinctValuesFilter.FilterDescriptors.Add(filter);
}
radGridView.FilterDescriptors.Add(distinctValuesFilter);
radGridView.FilterDescriptors.ResumeNotifications();
The background of the GridView's group headers has a light background in the dark color variation of the Windows 11 theme.
This reproduces only the GroupRenderMode property of RadGridView is set to Nested (the default value).
To work this around set the GroupRenderMode property of RadGridView to Flat.
This issue manifests when RadGridView loaded some columns first (which are working) and then add more columns. The additional columns cannot paste values in their cells.
To work this around, mark the new columns as auto generated and call one of the internal methods.
newColumn.IsAutoGenerated = true;
this.gridView.Columns.Add(newColumn);
var collectionViewPropInfo = this.gridView.Items.GetType().GetProperty("CollectionView", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
var qcv = (QueryableCollectionView)collectionViewPropInfo.GetValue(this.gridView.Items);
var methodInfo = qcv.GetType().GetMethod("OnElementTypeChanged", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
methodInfo.Invoke(qcv, new object[0]);
Setting ShowDistinctFilters for a RadGridViewColumn hides the distinct values from the filter popup as expected.
But the grid still queries the ItemsSource for distinct values of said column when showing thje popup - it calls something like
MyQueryable.Select(item => item.SomeColumn).Distinct().OrderBy(item => item).Take(1000))
The current row indicator visual (the right pointing arrow) gets hidden if you enter edit mode of a cell (which shows the cell edit indicator) and then press Esc two times. The first time cancel the cell editing and the second time cancels the row editing.
This reproduces in the VisualStudio2013 theme.
To work this around, extract the ControlTemplate of GridViewRow for the VisualStudio2013 theme and add the following MultiTrigger at the bottom of the template (last in the ControlTemplate.Triggers collection).
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsValid" Value="True"/>
<Condition Property="IsCurrent" Value="True"/>
<Condition Property="IsInEditMode" Value="False"/>
</MultiTrigger.Conditions>
<Setter TargetName="NavigatorIndicator" Property="Visibility" Value="Visible"/>
</MultiTrigger>
The aggregate values shown in the group headers are wrong when scrolling. This happens when the EnableColumnVirtualization property is set to False and ColumnAggregatesAlignment is NextToGroupKey or BelowGroupKey.
To work this around, set the EnableColumnVirtualization property to True or ColumnAggregatesAlignment to NoAlignment.
See this thread for more info: http://www.telerik.com/forums/alternaterowbackground-doesn't-merged-with-rowstyle It's really common scenario, because a standard WPF DataGrid works like this.
Currently, you can set the data format string of the cells in a GridView column by using the DataFormatString property of the column.
Add a mechanism to select the DataFormatString per cell. For example, this can be done using the CellStyleSelector and a new property in the GridViewCell. Or by introducing DataFormatStringSelector property.
"ArgumentException: Must specify valid information for parsing in the string."
The exception is handled internally but results in the filtering not being applied.