Сохранение выборок ListBox в сеансе при обратной передаче

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

Session["SelectedListItem"] = this.LstRecipients.SelectedValue;

if (Session["SelectedListItem"] != null)
{
    this.LstRecipients.SelectedValue = (string)Session["SelectedListItem"];
}

Как я могу сохранить несколько вариантов выбора, сделанных в списке в сеансе, а затем повторно выбрать эти варианты при обратной передаче?

вместо сохранения строки в сеансе просто добавьте каждое выбранное значение в массив строк, а затем сохраните этот массив в сеансе. При обратной передаче извлеките массив из сеанса и примените значения. ИЛИ (я не знаю точного варианта использования) активируйте ViewState для Listbox. Он должен сохранять состояния через обратные передачи

Schadensbegrenzer 07.06.2018 14:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
196
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сохранить что угодно в сеансе, так что вы можете сохранить его как string[] или List<string>:

string[] selectedValues = this.LstRecipients.Items.Cast<ListItem>()
    .Where(i => i.Selected)
    .Select(i => i.Value)
    .ToArray();
Session["SelectedItemValues"] = selectedValues;

/* on next postback you can retrieve the values in this way: */
var selectedValues = Session["SelectedItemValues"] as string[];
if (selectedValues != null)
{
    foreach(ListItem item in this.LstRecipients.Items)
       item.Selected = selectedValues.Contains(item.Value);
}

У меня проблемы с аргументом экземпляра: невозможно преобразовать из System.Web.UI.WebControls.ListItemCollection в System.Data.EnumerableRowCollection И System.Web.UI.WebControls.ListItemCollection не содержит определения для Cast и лучшая перегрузка метода расширения 'System.Data.EnumerableRowCollectionExtensions.Cast <TResult> ‌ (System.Data.Enumera‌ bleRowCollection)' имеет некоторые недопустимые аргументы

Andy Kirkpatrick 07.06.2018 15:38

AND System.Array 'не содержит определения для' Contains ', и не может быть найден метод расширения' Contains ', принимающий первый аргумент типа' System.Array '(отсутствует ли у вас директива using или ссылка на сборку

Andy Kirkpatrick 07.06.2018 15:40

@AndyKirkpatrick; это LINQ, поэтому вам нужен using System.Linq.

Tim Schmelter 07.06.2018 16:11

Другие вопросы по теме