Обычно вам нужна одна функция, которая подсчитывает общее количество записей для запроса, и другая, которая выбирает только те из них, которые попадают на текущую страницу.
При использовании RadGrid (при условии, что AllowCustomPaging = true) необходимо сначала подсчитать общее количество записей и сохранить значение в свойстве VirtualItemCount RadGrid.
Теперь в NeedDataSource, который вызывается при изменении страницы, вам нужно вычислить диапазон извлекаемых записей следующим образом:
int firstRow = radGrid.CurrentPageIndex * radGrid.PageSize;
int maxRow = radGrid.PageSize;
, а затем передать их в ваш запрос, получить результаты, выполнить набор DataSource и Rebind ()