是否可以帮助我在会话中存储复选框列表项目。
我有一个复选框列表如下
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>
我必须在结账时将复选框的值存储在会话中。
答案 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);
}
}
}