Любые данные [сериализуемые], к которым вам нужно получить доступ во время обратных передач, могут храниться в ViewState.
DataReader не может быть сериализован, потому что он основан на модели Connected. Поэтому он не может быть сохранен во ViewState.
Также не рекомендуется хранить огромные таблицы данных во ViewState. Возврат только тех данных, которые необходимо отобразить в текущем контексте.