A NullReferenceException can be thrown when quickly editing different cells with a RadMultiColumnComboBox (placed in the CellEditTemplate of the column) and changing the selection.
System.NullReferenceException HResult=0x80004003 Message=Object reference not set to an instance of an object. Source=Telerik.Windows.Controls.GridView StackTrace: at Telerik.Windows.Controls.MultiColumnComboBox.GridViewDropDownContentManager.OnMouseUp(Object sender, MouseButtonEventArgs args) in Telerik.Windows.Controls.MultiColumnComboBox\GridViewDropDownContentManager.cs:line 283
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 already have a work-around and I don't have time to craft an example.
When running two dispatchers in different threads, ie launching the following code twice:
public void LaunchInThread()
{
Thread _thread = new Thread(() =>
{
Application app = new Application();
app.Run(new Window());
});
_thread.SetApartmentState(ApartmentState.STA);
_thread.Start();
}
And setting column hierarchical column headers to some but not all columns by code, ie:
if( ! first_column){ column.ColumnGroupName = "groupName"; if (radGridView.ColumnGroups.FirstOrDefault(x => x.Name == "groupName") != null) return; radGridView.ColumnGroups.Add(new GridViewColumnGroup { Header = "groupName", Name = "groupName" }); }
My guess is that when no header is set, by default an static empty GridViewColumnGroup is reused. And as it's non-freezable it crashes.
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);
}
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
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
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.