How to selectively abort QueryItems requests (Data Virtualization)?

How to selectively abort QueryItems requests (Data Virtualization)?

Hi,
we successfully implemented the data virtualization on a datagrid (Xceed.Wpf.DataGrid.DataGridControl). However, we encountered the following issue, that I’ll try to explain with the following example:
– I start scrolling the grid
– the QueryItems requests the data (Data1)
– I keep scrolling
– the QueryItems requests new data (Data2, while Data1 still didn’t get back from db)
– I keep scrolling
– the QueryItems requests new data, etc.

Due to a heavy query load it takes 7-8 seconds to calculate and return the data to QueryItems. When several QueryItems requests overlap,the response time of a single request increases until the query reaches the timeout limit.

At that point the application encounters the exception and the pages that expected to receive DataN remains blank (inside of DataGrid).
The issue is even more pronounced when we try to scroll large portions of the grid with a scrollbar (and not with a mouse wheel).

Is there a way to control the frequency of QueryItems requests (or results) during the scrolling, discarding explicitly some of them? IMHO it’s useless to requests pages 2,3,4….8 if I decided to scroll directly to the page 10.

We tried to tweak the parameters found in the documentation (PageSize, PreemptivePageQueryRatio, MaxRealizedItemCount) but nothing helped. Increasing the page size only delayed the issue a little bit.

Moreover, we noticed that QueryItems sometimes (in the above scenario) requires a page multiple times, going backwards (page request flow: 1,2,1,3,4).

So, is there a way to skip/abort some page requests?