web-dev-qa-db-fra.com

Comment puis-je obtenir les valeurs sélectionnées de CheckBoxList, ce que j'ai ne semble pas fonctionner C # .NET/VisualWebPart

Je crée un CheckBoxList dans un fichier de classe et j'utilise un HTMLTextWriter pour restituer le contrôle. 

J'utilise le code suivant pour stocker les valeurs sélectionnées dans une chaîne:

string YrStr = "";
for (int i = 0; i < YrChkBox.Items.Count; i++)
{
    if (YrChkBox.Items[i].Selected)
    {
        YrStr += YrChkBox.Items[i].Value + ";"; 
    }
}

J'ai parcouru le code et il ne semble pas toucher l'intérieur de l'instruction if et l'attribut de valeur sélectionné est chaque fois faux (faux) 

Je le remplis en utilisant les éléments suivants: 

 YrChkBox.Items.Add(new ListItem("Item 1", "Item1"));
12
anpatel

Dans votre page ASPX, vous avez la liste suivante:

    <asp:CheckBoxList ID="YrChkBox" runat="server" 
        onselectedindexchanged="YrChkBox_SelectedIndexChanged"></asp:CheckBoxList>
    <asp:Button ID="button" runat="server" Text="Submit" />

Dans votre code derrière la page aspx.cs, vous avez ceci:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // Populate the CheckBoxList items only when it's not a postback.
            YrChkBox.Items.Add(new ListItem("Item 1", "Item1"));
            YrChkBox.Items.Add(new ListItem("Item 2", "Item2"));
        }
    }

    protected void YrChkBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        // Create the list to store.
        List<String> YrStrList = new List<string>();
        // Loop through each item.
        foreach (ListItem item in YrChkBox.Items)
        {
            if (item.Selected)
            {
                // If the item is selected, add the value to the list.
                YrStrList.Add(item.Value);
            }
            else
            {
                // Item is not selected, do something else.
            }
        }
        // Join the string together using the ; delimiter.
        String YrStr = String.Join(";", YrStrList.ToArray());

        // Write to the page the value.
        Response.Write(String.Concat("Selected Items: ", YrStr));
    }

Assurez-vous d'utiliser la condition if (!IsPostBack) { } car si vous la chargez chaque actualisation de page, les données sont détruites.

27
Walk

Essayez quelque chose comme ça:

foreach (ListItem listItem in YrChkBox.Items)
{
    if (listItem.Selected)
    { 
       //do some work 
    }
    else 
    { 
      //do something else 
    }
}
5
MethodMan

checkbox liste les valeurs sélectionnées avec séparateur

 string items = string.Empty;
        foreach (ListItem i in CheckBoxList1.Items)
        {
            if (i.Selected == true)
            {
                items += i.Text + ",";
            }
        }
        Response.Write("selected items"+ items);
3
kavitha Reddy

Une méthode élégante pour implémenter ceci serait de créer une méthode d'extension, comme ceci:

public static class Extensions
{
    public static List<string> GetSelectedItems(this CheckBoxList cbl)
    {
        var result = new List<string>();

        foreach (ListItem item in cbl.Items)
            if (item.Selected)
                result.Add(item.Value);

        return result;
    }
}

Je peux ensuite utiliser quelque chose comme ceci pour composer une chaîne qui sera toutes les valeurs séparées par ';':

string.Join(";", cbl.GetSelectedItems());
2
Fred Mauroy

// Page.aspx //

// To count checklist item

  int a = ChkMonth.Items.Count;
        int count = 0;

        for (var i = 0; i < a; i++)
        {
            if (ChkMonth.Items[i].Selected == true)
            {
                count++;
            }
        }

// Page.aspx.cs //

  // To access checkbox list item's value //
   string YrStrList = "";
        foreach (ListItem listItem in ChkMonth.Items)
        {
            if (listItem.Selected)
            {
                YrStrList = YrStrList + "'" + listItem.Value + "'" + ",";
            }

        }

        sMonthStr = YrStrList.ToString();
0
priya uthaya