Как я могу сохранить значение ячейки GridView в переменной сеанса? - PullRequest
1 голос
/ 09 марта 2009

Как мне сохранить значение выбранных строк GridView в переменной сеанса?

Ответы [ 3 ]

1 голос
/ 09 марта 2009

На заметку: могу я настоятельно рекомендовать вам НЕ использовать состояние сеанса.

Если вы не используете его в качестве хранилища, где данные кэшируются для текущего пользователя, который вы можете получить обратно в в любое время , например, из. база данных.

Если нет, "сессия" вернется и укусит вас. В какой-то момент появится пользователь, который оставит браузер открытым на более длительное время, чем ваша сессия (например, он получит телефонный звонок, поспешно выйдет на ланч, на встречу…). И когда они возвращаются, они хотят завершить то, что они делают. И если вы не можете восстановить все свои данные сеанса обратно в этот момент, вам придется либо перенаправить своего пользователя, чтобы начать сначала (очень раздражает ваших пользователей), либо вы потеряете некоторую информацию (очень смущающую), либо худшее случай и наиболее распространенный случай: ваше приложение больше не будет работать и зависать (просто: очень плохо).

Это лучший подход для определения небольших сериализуемых объектов, которые хранят ваше состояние (параметры запроса, выбранные элементы и т. Д.) И используют ASP.NET Viewstate для сохранения этого состояния между запросами страниц. Обратите внимание, что большинство элементов управления ASP.NET уже используют viewstate для хранения своих данных. Затем отключите Viewstate ваших сеток на странице, чтобы значительно сократить объем данных в вашем viewstate, и запрашивайте данные при каждом запросе (здесь можно безопасно использовать кэш сеанса или ASP.NET для повышения производительности вашего приложения). , У вас будет гораздо более надежное и гораздо более масштабируемое приложение.

Это больше работы, но она окупится очень быстро и во много раз.

1 голос
/ 09 марта 2009

Из файла codebehind вы захотите использовать что-то подобное для доступа к базовому элементу данных (MyDataItem) из выбранной строки.

MyDataItem item = (MyDataItem)GridView1.Rows[GridView1.SelectedIndex].DataItem;
Session["myItem"] = item;

Помните, однако, что gridview уже хранит эти данные для вас, поэтому вы можете просто получить доступ к ним из GridView напрямую, когда вам это нужно.

0 голосов
/ 05 апреля 2009

ViewState только область на одной странице. Это полезно для проблемы обратной передачи, но не для проблем между страницами. Сеанс может обрабатывать оба, но он имеет некоторые ограничения безопасности, времени жизни, времени передачи ... В зависимости от конкретной ситуации вы можете выбрать правильный выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...