The result string contains wrong header positions and some headers could be missing when the copy of cells (including the header cells) of a column is cancelled using the CopyingCellClipboardContent event. This happens when the ClipboardCopyMode is set to "Cells,Header".
To work this around, you can override the Copied event and replace the string part from the clipboard that contains the headers, with your custom variant.
private void RadGridView_Copied(object sender, Telerik.Windows.RadRoutedEventArgs e)
{
string copiedData = Clipboard.GetText();
int headerEndIndex = copiedData.IndexOf("\r\n");
string headerString = copiedData.Substring(0, headerEndIndex) + "\r\n";
copiedData = copiedData.Remove(0, headerEndIndex);
var gridView = (RadGridView)sender;
var filteredColumns = gridView.Columns.OfType<Telerik.Windows.Controls.GridViewColumn>()
.OrderBy(x => x.DisplayIndex)
.Where(x => x.IsVisible && !excludedColumns.Contains(x));
// Where excludedColumns list contains the columns that shouldn't be copied. In this example, this collection is used in the CopyingCellClipboardContent event handler to remove the corresponding columns from the clipboard copy process.
string newHeader = string.Empty;
for (int i = 0; i < filteredColumns.Count(); i++)
{
var column = filteredColumns.ElementAt(i);
newHeader += column.Header.ToString();
if (i < filteredColumns.Count() - 1)
{
newHeader += "\t";
}
}
copiedData = newHeader + copiedData;
Clipboard.SetText(copiedData);
}
Hello Good job with the Fluent theme! I'm using the core styles with validation in my GridViews and have noticed that the bottom border is not/barely visible in invalid grid cells (see attached screenshot). I can fix this by taking a copy of GridViewCellCoreValidationTemplate and adding Margin="0 0 0 1" to Background_Invalid. Cheers Jack
The issue is reproduced only when the items in the source collection have properties with duplicated values and they are sorted before the selection is processed. If the property values are unique or the SelectionMode is set to Multiple, the selection works as expected both with sorted and unsorted data. The workaround is to use either Multiple SelectionMode, or Cell/Mixed SelectionUnit.
Pixel bug in Lightweight Templates of RadGridView in VisualStudio2013 and Office2013 themes:
No horizontal grid lines when cell has background color:
Most likely bottom margin of PART_CellBorder not set in VisualStudio2013 Theme. In Office2016 PART_CellBorder.Margin="0 0 0 1"
The fix for this issue will be available with the next LIB (version 2018.3.1217) expected on Monday, December 17.
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]);
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.
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();
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>