Если ключ автоинкрементальный, то позицию новой строки в таблице можно узнать запросом:
SELECT COUNT(*) FROM table_name WHERE id < $id_value
Он посчитает кол-во предыдущих записей. Это значение можно принять за позицию строки в таблице (начиная с 0).
Зная кол-во записей на страницу грида, и позицию записи в таблице базы, можно рассчитать начальную позицию страницы на которой должна находиться искомая запись.
$top_position = floor($row_posotion / $page_row_count)
Дальше можно генерить запрос:
SELECT * FROM table_name LIMIT $top_position, $page_row_count
UPD:
Если используется сортировка по столбцам, то, в начале, нужно узнать значения этих столбцов для искомой записи, затем, посчитать кол-во предыдущих записей. И дальше выводить страницу.
Например, если сортировать по принципу ORDER BY filed1, field2, field3 DESC
, то:
-- Получаем значение сортируемых столбцов для искомой записи
SELECT filed1, field2, field3
FROM table_name
WHERE id = $id_value
INTO @filed1, @field2, @field3;
-- Получаем кол-во предыдущих записей в отсортированном списке до искомой записи
SELECT COUNT(*) - 1 /* -1 потому что искомая запись тоже попадает в COUNT(*) */
FROM table_name
WHERE
(filed1 <= @filed1) AND
(filed2 <= @filed2) AND
(filed3 >= @filed3)
И, дальше, зная позицию:
SELECT *
FROM table_name
ORDER BY filed1, field2, field3 DESC
LIMIT $top_position, $page_row_count
Как получить $top_position
, зная $row_posotion
(COUNT(*) - 1
), смотри выше.