I am using the QueryCellInfo, SaveCellInfo, QueryRowCount, QueryColumnCount et. al. events to manage, populate, and persist the cells in a grid.
I am using an underlying model ( as in model, view, control ) of my own construction to hold the data which the grid displays. When the model changes ( has fewer row objects for example ) I am finding that no matter what I try ( calling resetVolatileData, and/or explicitly setting the RowCount parameter on the gridControl) the grid still thinks the model has the old number of rows and asks for data which overflows the bounds of my cache.
Am I missing something ?
If you are trying to use a true virtual grid, you should never explicitly set GridControl.RowCount (or GridControl.Model.RowCount). Doing so, makes the GridData object allocate storage for that many rows. In a virtual grid, you don't want the grid to allocate any row storage. Instead, you want the grid to use exactly the same data (and hence data storage) as your external data source.
You do this by only providing the rowcount exclusiively through QueryRowCount.
So, if your external data source removes/adds rows, then try calling GridControlResetVolatileData followed by GridControl.Refresh. You should not have to do anything in regard to setting GridControl.RowCount as your QueryRowCount should auotmatically provide the correct row count based on your external data source.