在回发时将 ListBox 选择保持在会话中
Keeping ListBox selections in session on a postback
正如您在下面看到的,我知道如何针对一个选择执行此操作,但这仅适用于最近的单个选择,我想对多个选择执行此操作。
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);
}
正如您在下面看到的,我知道如何针对一个选择执行此操作,但这仅适用于最近的单个选择,我想对多个选择执行此操作。
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);
}