Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在回发的会话中保留列表框选择_C#_Asp.net_Session_Listbox_Listboxitems - Fatal编程技术网

C# 在回发的会话中保留列表框选择

C# 在回发的会话中保留列表框选择,c#,asp.net,session,listbox,listboxitems,C#,Asp.net,Session,Listbox,Listboxitems,正如您在下面看到的,我知道如何对一个选择执行此操作,但这仅适用于最近的单个选择,我希望对所做的多个选择执行此操作 Session["SelectedListItem"] = this.LstRecipients.SelectedValue; if (Session["SelectedListItem"] != null) { this.LstRecipients.SelectedValue = (string)Session["SelectedListItem"]; } 如何在会话中

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

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

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

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

您可以在会话中存储任何内容,因此可以将其存储为字符串[]或列表:


不要在会话中存储字符串,只需将每个选定值添加到字符串数组中,然后在会话中存储该数组。在回发时,从会话检索数组并应用值。或者我不知道Listbox的确切用例activate ViewState。它应该在PostBack中保持状态我遇到实例参数问题:无法从“System.Web.UI.WebControl.ListItemCollection”转换为“System.Data.EnumerablerRowCollection和System.Web.UI.WebControl.ListItemCollection”不包含“Cast”的定义和最佳扩展方法重载“System.Data.EnumerablerRowCollectionExtensions.CastSystem.Data.EnumerablerRowCollection”有一些无效参数System.Array”不包含“Contains”的定义,并且找不到扩展方法“Contains”接受类型为“System.Array”的第一个参数是否缺少using指令或程序集reference@AndyKirkpatrick; 这是LINQ,所以您需要使用System.LINQ。
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);
}