I've checked your issue, FlyGrid.InvalidateCell and FlyGridViewPort.InvalidateCell work fine:
[C#]
//Reworked VirtualGrid sample
//modify this event handler
private object VM_GetNodeCellValue(object sender, NodeBase node, int index)
{
//check individual cell displaying
if (node.Index == 3 && index == 2)
return DateTime.Now.ToLongTimeString();
//check another cell displaying (shouldn't invaliated)
if (node.Index == 3 && index == 3)
return "C" + DateTime.Now.ToLongTimeString();
Column col = virtualGrid.Columns.FieldMapColumnFromIndex(index);
return string.Format("Cell[{0}],[{1}]", node.Index, col.Caption);
}
//Add new button and add this Cick event handler
//this handler runs invalidation of node with index =3 in the column with index = 2 each 10 milliseconds
private void button1_Click(object sender, System.EventArgs e)
{
Timer timer = new Timer();
timer.Interval = 10;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
//timer Tick event handler
private void timer_Tick(object sender, EventArgs e)
{
virtualGrid.InvalidateCell(virtualGrid.Rows.Items[3], virtualGrid.Columns.Items[2]);
}
If you need invalidate cells in the nested grids you should use FlyGridViewPort.InvalidateCell
Anyway you can send us (to ) your sample to receive recommendations how to improve perofrmance on your sample.