web-dev-qa-db-fra.com

Vérifier par programme un élément de la liste de sélection où le texte correspond à ce que je veux

En C #, j'essaie de vérifier un élément dans une CheckBoxList où le texte est égal à ce dont j'ai besoin.

Je modifierais le code pour vérifier les éléments existants dans la base de données.

Si vous souhaitez un exemple, je dois sélectionner l'élément de la liste de contrôle correspondant à abc

18
Peter Roche

En supposant que les éléments de votre CheckedListBox soient des chaînes:

  for (int i = 0; i < checkedListBox1.Items.Count; i++)
  {
    if ((string)checkedListBox1.Items[i] == value)
    {
      checkedListBox1.SetItemChecked(i, true);
    }
  }

Ou

  int index = checkedListBox1.Items.IndexOf(value);

  if (index >= 0)
  {
    checkedListBox1.SetItemChecked(index, true);
  }
42
wdavo

Exemple basé sur ASP.NET CheckBoxList

<asp:CheckBoxList ID="checkBoxList1" runat="server">
    <asp:ListItem>abc</asp:ListItem>
    <asp:ListItem>def</asp:ListItem>
</asp:CheckBoxList>


private void SelectCheckBoxList(string valueToSelect)
{
    ListItem listItem = this.checkBoxList1.Items.FindByText(valueToSelect);

    if(listItem != null) listItem.Selected = true;
}

protected void Page_Load(object sender, EventArgs e)
{
    SelectCheckBoxList("abc");
}
8
Jim Scott

Tout le crédit à @Jim Scott - vient d'ajouter une touche. (ASP.NET 4.5 et C #)

Si vous passez la CheckBoxList en tant qu’objet à la méthode, vous pouvez le réutiliser pour n’importe quelle CheckBoxList. Aussi, vous pouvez utiliser le texte ou la valeur. 

private void SelectCheckBoxList(string valueToSelect, CheckBoxList lst)
{
    ListItem listItem = lst.Items.FindByValue(valueToSelect);
    //ListItem listItem = lst.Items.FindByText(valueToSelect);
    if (listItem != null) listItem.Selected = true;
}

//How to call it -- in this case from a SQLDataReader and "chkRP" is my CheckBoxList`

SelectCheckBoxList(dr["kRPId"].ToString(), chkRP);`
2
Dan B

// Sélection multiple:

          private void clbsec(CheckedListBox clb, string text)
          {
              for (int i = 0; i < clb.Items.Count; i++)
              {
                  if(text == clb.Items[i].ToString())
                  {
                      clb.SetItemChecked(i, true);
                  }
              }
          }

en utilisant ==>

clbsec(checkedListBox1,"michael");

or 

clbsec(checkedListBox1,textBox1.Text);

or

clbsec(checkedListBox1,dataGridView1.CurrentCell.Value.toString());
0
ardem