С сеткой данных, я думаю, вам нужно перепривязывать сетку всякий раз, когда вы хотите перейти на новую страницу.
"Типичный обработчик для события PageIndexChanged устанавливает свойство CurrentPageIndex для индекса страницы, которую вы хотите отобразить, а затем использует метод DataBind для привязки данных к элементу управления DataGrid."
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.onpageindexchanged(VS.71).aspx
Если вы хотите избежать повторного запроса / извлечения данных из источника, вам нужно будет «кэшировать» данные между постбеками. Здесь есть различные варианты, каждый из которых имеет свои преимущества и недостатки.
Если размер данных не слишком велик и не чувствителен, вы можете просто поместить данные в viewstate при первой загрузке страницы и снова прочитать их при изменении индекса страницы. Другой вариант может включать использование Session для «кэширования» данных, хотя это может быть сложно, если не все сделано правильно, и, конечно, будет большая нагрузка на стороне сервера с этим методом (с различными величинами, в зависимости от того, находится ли Session в -Proc, State Server или база данных). Могут быть и другие способы «кэширования» данных, но это то, что вам нужно сделать в этом случае.