To reproduce:
void radButton1_Click(object sender, EventArgs e)
{
this.radVirtualGrid1.CurrentCell = null;
}
Workaround:
class MyRadVirtualGrid : RadVirtualGrid
{
protected override void CreateChildItems(RadElement parent)
{
base.CreateChildItems(parent);
parent.Children.RemoveAt(0);
var field = typeof(RadVirtualGrid).GetField("virtualGridElement", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
var element = new MyVirtualGridElement();
field.SetValue(this,element);
parent.Children.Add(element);
}
}
class MyVirtualGridElement : RadVirtualGridElement
{
protected override Type ThemeEffectiveType
{
get { return typeof(RadVirtualGridElement); }
}
protected override bool SetCurrentCell(VirtualGridCellInfo value)
{
if (value == null)
{
if (this.IsInEditMode && !this.EndEdit())
{
return false;
}
int row = int.MinValue;
VirtualGridViewInfo viewInfo = null;
if (this.CurrentCell != null)
{
row = this.CurrentCell.RowIndex;
viewInfo = this.CurrentCell.ViewInfo;
}
if (this.CurrentCell != null && (value == null || this.CurrentCell.ViewInfo != value.ViewInfo || this.CurrentCell.RowIndex != value.RowIndex))
{
VirtualGridRowValidatingEventArgs e = new VirtualGridRowValidatingEventArgs(row, viewInfo);
this.OnRowValidating(e);
if (e.Cancel)
{
return false;
}
}
var currentCell = typeof(RadVirtualGridElement).GetField("currentCell", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
currentCell.SetValue(this, value);
if (this.CurrentCell != null)
{
this.EnsureCellVisible(this.CurrentCell.RowIndex, this.CurrentCell.ColumnIndex, this.CurrentCell.ViewInfo);
}
VirtualGridTableElement tableElement = null;
if (this.CurrentCell != null)
{
tableElement = this.GetTableElement(this.CurrentCell.ViewInfo);
}
else
{
tableElement = this.TableElement;
}
if (tableElement != null)
{
VirtualGridRowElement rowElement = tableElement.ViewElement.GetRowElement(row);
if (rowElement != null)
{
rowElement.Synchronize(false);
}
}
if (value != null)
{
tableElement = this.GetTableElement(value.ViewInfo);
if (tableElement != null)
{
VirtualGridRowElement rowElement = tableElement.ViewElement.GetRowElement(value.RowIndex);
if (rowElement != null)
{
rowElement.Synchronize(false);
}
}
}
if (viewInfo != null)
{
VirtualGridRowEventArgs args = new VirtualGridRowEventArgs(row, viewInfo);
this.OnRowValidated(args);
}
this.OnCurrentCellChanged(EventArgs.Empty);
return true;
}
return base.SetCurrentCell(value);
}
}