The grids base class pixel scrolling is not optimized for such large row scenarios. In the derived GridGroupingControl we have overriden a couple of virtual methods to make it perform well and use binary tree structures to quickly get the row index for a absolute pixel position and the other way around.
With the base grid if you do not have individual row heights and instead all rows are the same height you can get the scrolling to be the same speed as non-pixel scrolling when you override the same methods as follows:
public class DerivedGridControl : GridControl
public override int RowIndexToVScrollPixelPos(int rowIndex)
// Taking separate height for column header into account.
rowIndex = Math.Min(rowIndex, Model.RowCount);
if (rowIndex > 0)
return (rowIndex - 1) * Model.Rows.DefaultSize + Model.RowHeights;
public override int GetVScrollPixelHeight()
if (Model.RowCount == 0)
return (Model.RowCount - 1) * Model.Rows.DefaultSize + Model.RowHeights;
public override void VScrollPixelPosToRowIndex(int pixelPos, out int rowIndex, out int pixelDelta)
if (pixelPos < pixelPos - Model.RowHeights)
rowIndex = 0;
pixelDelta = pixelPos;
rowIndex = (pixelPos - Model.RowHeights) / Model.Rows.DefaultSize + 1;
pixelDelta = (pixelPos - Model.RowHeights) % Model.Rows.DefaultSize;
I attached a modified sample with these changes:
>I am using VS 2005 B2 and Syncfusion 126.96.36.1995.
>I don''t have any problem, I am just curious about a particular scenario. In the small project I attached is a virtual grid with at row count of 500,000. When VScrollPixel is on the scrolling is very slow compared to when it is off. Would you happen to know what is causing the slowdown?