Как вы можете видеть ниже, я знаю, как сделать это для одного выбора, но это работает только для последнего отдельного выбора, я хочу сделать это для нескольких сделанных выборов.
Session["SelectedListItem"] = this.LstRecipients.SelectedValue;
if (Session["SelectedListItem"] != null)
{
this.LstRecipients.SelectedValue = (string)Session["SelectedListItem"];
}
Как я могу сохранить несколько вариантов выбора, сделанных в списке в сеансе, а затем повторно выбрать эти варианты при обратной передаче?





Вы можете сохранить что угодно в сеансе, так что вы можете сохранить его как 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)' имеет некоторые недопустимые аргументы
AND System.Array 'не содержит определения для' Contains ', и не может быть найден метод расширения' Contains ', принимающий первый аргумент типа' System.Array '(отсутствует ли у вас директива using или ссылка на сборку
@AndyKirkpatrick; это LINQ, поэтому вам нужен using System.Linq.
вместо сохранения строки в сеансе просто добавьте каждое выбранное значение в массив строк, а затем сохраните этот массив в сеансе. При обратной передаче извлеките массив из сеанса и примените значения. ИЛИ (я не знаю точного варианта использования) активируйте ViewState для Listbox. Он должен сохранять состояния через обратные передачи