Currently, if RadGridView is bound to a INotifyCollectionChanged collection and the collection class raises the CollectionChanged event with NotifyCollectionChangedAction set to Add, Remove or Insert, RadGridView is not updating its items properly when the OldItems or NewItems collections contain more than 1 items.
Add support for this scenario.
I have a GridView, with ClipboardCopyMode set to "Cells, Header" and defined event CopyingCellClipboardContent :
private void RadGridView1_CopyingCellClipboardContent(object sender, GridViewCellClipboardEventArgs e)
{
// _excludedcolumns = columns excluded from copy operation set in logic before
if (_excludedcolumns.Contains(e.Cell.Column))
{
e.Cancel = true;
}
}
Header cells are empty, not skipped like ordinary cells.
Regards
Janez
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,
Regarding this forum question, it will be good if you add the attached property VisibleColumnsCount or IsAnyColumnVisible so I can hide the rows when there are 0 columns. Please read the following link for full information:
https://www.telerik.com/forums/radgridview---hide-rows-when-columns-are-not-visible
I have a license ok behalf my company
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.
Currently, the GridViewMergedCell cannot be selected. Allow selecting the merged cells via the UI or code.
At the moment RadGridView has only a CurrentMergedCell property.
In the following scenario:
<telerik:RadGridView x:Name="clubsGrid" ItemsSource="{Binding Foos}" AutoGenerateColumns="False">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn DataMemberBinding="{Binding Foo1}" MinWidth="100" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Foo2}" MinWidth="100" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Foo3}" Width="*" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Foo4}" MinWidth="100" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Foo5}" MinWidth="100" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Foo6}" MinWidth="100" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
<DataGrid ItemsSource="{Binding Foos}" AutoGenerateColumns="False" Grid.Row="1">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Foo1}" MinWidth="100" />
<DataGridTextColumn Binding="{Binding Foo2}" MinWidth="100" />
<DataGridTextColumn Binding="{Binding Foo3}" Width="*" />
<DataGridTextColumn Binding="{Binding Foo4}" MinWidth="100" />
<DataGridTextColumn Binding="{Binding Foo5}" MinWidth="100" />
<DataGridTextColumn Binding="{Binding Foo6}" MinWidth="100" />
</DataGrid.Columns>
</DataGrid>in the native DataGrid after the Width of Foo4 column is increased towards Foo3, then the Width of Foo5/Foo6 columns can also be increased. We can implement similar behavior in the RadGridView as well.