2010-04-20 13 views
0

Pouvez-vous s'il vous plaît m'aider à stocker les éléments de la liste de cases à cocher dans la session.état de la liste des cases à cocher

J'ai une liste de cases à cocher comme suit

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> 

Je dois stocker la valeur de la case à cocher en session quand ils sont cheked.

Répondre

2

Vous pouvez ajouter tous les éléments (si coché ou non) à la session comme ceci:

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

Ou vous pouvez simplement ajouter les cochés avec un peu plus de code:

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

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

Session.Add("MySelectedItems", selectItems); 
2

L'ID et le runat ne sont pas des balises appropriées pour ListItems. Votre liste de contrôle devrait ressembler plus à ceci

<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> 

Notez que dans une liste de contrôle, beaucoup d'articles peuvent être sélectionnés. Si vous souhaitez que ce soit une seule sélection, vous devez utiliser un contrôle RadioButtonList à la place. Pour obtenir les éléments sélectionnés, vous pouvez les parcourir ou même utiliser LINQ. Voici des exemples qui stockent les valeurs sélectionnées dans une liste de chaînes.

Iteration:

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; 
2

Page 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"); 

    } 

Page 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); 
      } 
     } 
    } 
Questions connexes