Я бы добавил дополнительный столбец, содержащий RowNumber. Если вы используете MSSQL, это просто как
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 [DESC]) as RowNumber FROM table
и найдите измененную строку int DataTable.Rows, используя DataTable.Rows.Select, который соответствует всем значениям столбца (если у вас есть уникальный столбец, убедитесь, что вы можете использовать его, если у вас нет удачи! Вы можете получить больше чем одна строка, выберите одну!, если уникальность не так важна, что не имеет никакого смысла), и получите значение RowNumber, которое также является столбцом, добавленным в таблицу, с помощью функции TSQL ROW_NUMBER (). А остальное - математика;
int PageNumber = PageSize < RowNumber ? ((RowNumber - 1) / PageSize) + 1 : 1;
РЕДАКТИРОВАТЬ: 1- Я предполагаю, что вы запрашиваете базу данных для каждого туда-обратно страницы
2- ROW_NUMBER () должен работать с Oracle и MySql, я верю, или с таким же оператором, о котором я знаю ...