При работе с веб-страницами, которые показывают данные пользователю, и пользователь предпринимает некоторые действия с этими данными, вам необходимо либо сохранить данные где-нибудь на своем компьютере, на своем компьютере (сервере) или полагаться на тот факт, что они все еще хранятся в компьютере, с которого вы это получили. В качестве процесса, который вы предприняли:
- Вы генерируете сетку из запросов AD
- Вы отправляете сетку на компьютер клиента - поэтому она сохраняется там в виде визуального представления (и, возможно, также ViewState)
- Он все еще хранится в AD, где вы его получили
- Вы также можете как-то локально хранить его на сервере - Session, DB, текстовый файл, что угодно
Определите, какой из них использовать, когда пользователь нажимает кнопку Экспорт:
- Извлечь его из состояния просмотра или других данных, которые были отправлены пользователю - для этого вам придется кодировать вещи поэтому он возвращается от пользователя
- Получите его снова из AD - это легко сделать; Вы сделали это один раз и отправили пользователю в HTML. Получение его снова и повторная отправка пользователю на этот раз в качестве CSV на самом деле ничем не отличается от того, когда вы делали это в первый раз
- Восстановите его с того места, где вы хранили его на сервере
Выберите первое, если ваш пользователь собирается изменить данные или экспортировать только некоторые из них - данные, которые он отправляет вам обратно, должны указывать, какие биты он хочет экспортировать.
Выберите второй вариант, если вы хотите простой жизни, и это просто прямой экспорт, без редактирования или подмножества данных. Напишите один метод, который извлекает данные из AD, а затем использует их в любом месте, один для формирования HTML / заполнения сетки, а другой - для отправки файла пользователю. Не зацикливайтесь на «ну, я уже получил эти данные один раз, это бесполезно, чтобы получить их снова» - никто не пишет страницу входа и не думает, что «я когда-нибудь найду пользователя из БД только один раз, затем заставить сервер запоминать данные для входа навсегда и использовать их в следующий раз при запросе входа в систему »- они сохраняют данные в БД и проверяют их каждый раз при входе в систему. БД хранят данные и выполняют одни и те же запросы снова и снова. Это ничем не отличается
Вы, вероятно, не выбрали бы третий вариант по причинам, уже упомянутым