首页 > 解决方案 > 在回发的会话中保持 ListBox 选择

问题描述

正如您在下面看到的,我知道如何为一个选择执行此操作,但这仅适用于最近的单个选择,我想为多个选择执行此操作。

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

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

如何在会话的列表框中存储多个选择,然后在回发时重新选择这些选择?

标签: c#asp.netsessionlistboxlistboxitems

解决方案


您可以在会话中存储任何内容,因此您可以将其存储为string[]or 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);
}

推荐阅读