会话状态的复选框列表

时间:2010-04-20 14:48:15

标签: c# asp.net

是否可以帮助我在会话中存储复选框列表项目。

我有一个复选框列表如下

asp:CheckBoxList ID="cblScope" runat="server" 
        onselectedindexchanged="cblScope_SelectedIndexChanged">

    asp:ListItem ID="liInScope" runat="server" Value="true">In Scope (Monitored)</asp:ListItem>
    <asp:ListItem ID="liOutOfScope" runat="server" Value="true">Out of Scope (Unmonitored)</asp:ListItem>

/asp:CheckBoxList>

我必须在结账时将复选框的值存储在会话中。

3 个答案:

答案 0 :(得分:2)

ID和runat不适合ListItems。您的复选框列表看起来应该更像

<asp:CheckBoxList ID="cblScope" runat="server"  
        onselectedindexchanged="cblScope_SelectedIndexChanged"> 

    <asp:ListItem Value="In Scope">In Scope (Monitored)</asp:ListItem> 
    <asp:ListItem Value="Out of Scope">Out of Scope (Unmonitored)</asp:ListItem> 

</asp:CheckBoxList> 

请注意,在复选框列表中,可以选择许多项目。如果您打算将其作为单个选择,则应使用RadioButtonList控件。至于获取已选择的项目,您可以迭代它们甚至使用LINQ。以下是将所选值存储在字符串列表中的示例。

迭代:

List<string> selections = new List<string>();
foreach (ListItem listItem in cblScope.Items)
{
    if (listItem.Selected)
    {
        selections.Add(listItem.Value);                
    }
}

Session["selections"] = selections;

LINQ:

var selections = (from ListItem listItem in cblScope.Items
                  where listItem.Selected
                  select listItem.Value).ToList();

Session["selections"] = selections;

答案 1 :(得分:2)

您可以将所有项目(无论是否已选中)添加到会话中,如下所示:

Session.Add("AllItems", cblScope.Items);

或者您可以添加一些代码来添加已检查的代码:

List<ListItem> selectItems = new List<ListItem>();

foreach (ListItem item in cblScope.Items)
{
    if (item.Selected)
        selectItems.Add(item);
}

Session.Add("MySelectedItems", selectItems);

答案 2 :(得分:2)

第A页:

//Add namespace for List

using System.Collection.Generic;

protected void BtnNext_Click(object sender, EventArgs e)
    {                

        List<ListItem> selection = new List<ListItem>();
        foreach (ListItem li in CheckBoxList1.Items)
        {
            if (li.Selected)
            {
                selection.Add(li);
                //string ch = li.Value;
            } 
        }
        Session["emp"] = selection;
        Response.Redirect("Page2.aspx");
        //Server.Transfer("Page2.aspx");

    }

第2页: -

using System.Collection.Generic;

 protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["emp"] != null)
        {
            List<ListItem> name=(List<ListItem>)Session["emp"];           

            foreach (ListItem li in name)
            {
               Response.Write(li);
            }
        }
     }