web-dev-qa-db-fra.com

Obtenir les valeurs de l'élément CheckBoxList

J'ai un CheckBoxList que je remplis avec des données. Lorsque je tente de récupérer les éléments cochés de la liste, je ne peux que récupérer l'ordinal d'élément, je ne peux pas obtenir la valeur.

J'ai lu que vous pouvez utiliser Items [i] .Value. Cependant, lorsque j'essaie de le faire, un message d'erreur indiquant qu'il n'y a pas de méthode d'extension 'value' n'existe.

Voici le code que j'utilise pour essayer de récupérer les informations (notez que GetItemText (i) ne me donne en fait que la position de l'élément, pas le texte de l'élément)

   private void btnGO_Click(object sender, EventArgs e)
{
    for (int i = 0; i < chBoxListTables.Items.Count; i++)
    {
        if (chBoxListTables.GetItemChecked(i))
        {
            string str = chBoxListTables.GetItemText(i);
            MessageBox.Show(str);

            //next line invalid extension method
            chBoxListTables.Items[i].value;
        }
    }
}

Ceci utilise .Net 4.0

Toute pensée serait appréciée ... merci

9
Nic

Cela a fini par être assez simple. chBoxListTables.Item [i] est une valeur de chaîne et une conversion explicite a autorisé son chargement dans une variable . Le code suivant fonctionne:

private void btnGO_Click(object sender, EventArgs e)
{
    for (int i = 0; i < chBoxListTables.Items.Count; i++)
    {
          if (chBoxListTables.GetItemChecked(i))
        {
            string str = (string)chBoxListTables.Items[i];
            MessageBox.Show(str);
        }
    }
}
15
Nic

Essayez d'utiliser ceci.

        for (int i = 0; i < chBoxListTables.Items.Count; i++)
        {
            if (chBoxListTables.Items[i].Selected)
            {
                string str = chBoxListTables.Items[i].Text;
                MessageBox.Show(str);

                var itemValue = chBoxListTables.Items[i].Value;
            }
        }

Le "V" doit être en CAPS en valeur.

Voici un autre exemple de code utilisé dans l'application WinForm et qui fonctionne correctement.

        var chBoxList= new CheckedListBox();
        chBoxList.Items.Add(new ListItem("One", "1"));
        chBoxList.Items.Add(new ListItem("Two", "2"));
        chBoxList.SetItemChecked(1, true);

        var checkedItems = chBoxList.CheckedItems;
        var chkText = ((ListItem)checkedItems[0]).Text;
        var chkValue = ((ListItem)checkedItems[0]).Value;
        MessageBox.Show(chkText);
        MessageBox.Show(chkValue);
4
Nitesh

pour obtenir les éléments vérifiés, vous pouvez utiliser CheckedItems ou GetItemsChecked. J'ai essayé ci-dessous le code dans .NET 4.5

Parcourez la collection CheckedItems. Cela vous donnera le numéro d'article dans la liste des articles cochés, pas la liste globale. Ainsi, si le premier élément de la liste n'est pas coché et que le second élément est coché, le code ci-dessous affichera un texte du type Checked Item 1 = MyListItem2.

//Determine if there are any items checked. 
if(chBoxListTables.CheckedItems.Count != 0)  
{
    //looped through all checked items and show results.
    string s = "";
    for (int x = 0; x < chBoxListTables.CheckedItems.Count; x++)
    {
        s = s + (x + 1).ToString() + " = " + chBoxListTables.CheckedItems[x].ToString()+ ", ";
    }
    MessageBox.Show(s);//show result
}

-OU-

Parcourez la collection Items et appelez la méthode GetItemChecked pour chaque élément. Cela vous donnera le numéro de l'article dans la liste globale. Ainsi, si le premier élément de la liste n'est pas coché et que le second élément est coché, il affichera quelque chose comme Item 2 = MyListItem2.

int i;  
string s;   
s = "Checked items:\n" ;  
for (i = 0; i < checkedListBox1.Items.Count; i++)  
{  
   if (checkedListBox1.GetItemChecked(i))  
   {  
      s = s + "Item " + (i+1).ToString() + " = " + checkedListBox1.Items[i].ToString() + "\n";  
   }  
}  
MessageBox.Show (s);

J'espère que cela t'aides...

2
Rohan Khude

Vous pouvez essayer ceci: -

string values = "";
foreach(ListItem item in myCBL.Items){
if(item.Selected)
{
values += item.Value.ToString() + ",";  
}
}
values = values.TrimEnd(',');  //To eliminate comma in last.
1
spacemonkey

// Exemple de code simple:

foreach (var item in YourCheckedListBox.CheckedItems)
{List<string>.Add(item);}
1
Santos

Au lieu de cela:

CheckboxList1.Items[i].value;

Essaye ça:

CheckboxList1.Items[i].ToString();

Cela a fonctionné pour moi :)

0
tango

Vous pouvez initialiser une liste de chaînes et ajouter les éléments sélectionnés. 

S'il vous plaît vérifier le code, fonctionne bien pour moi.

List<string> modules = new List<string>();

foreach(ListItem s in chk_modules.Items)
{
    if (s.Selected)
    {
         modules.Add(s.Value);
    }
}
0
Faisal Ansari

Essayez d'utiliser ceci:

 private void button1_Click(object sender, EventArgs e)
    {

        for (int i = 0; i < chBoxListTables.Items.Count; i++)
            if (chBoxListTables.GetItemCheckState(i) == CheckState.Checked)
            {
               txtBx.text += chBoxListTables.Items[i].ToString() + " \n"; 

            }
    }
0
Ahmed El-Hansy