Программно проверить элемент в Checkboxlist, где текст равен тому, что я хочу - PullRequest
18 голосов
/ 08 февраля 2012

В C # я пытаюсь проверить элемент в CheckBoxList, где текст соответствует тому, что мне нужно.

Я бы изменил код, чтобы проверить элементы, которые существуют в базе данных.

Если вам нужен пример, мне нужно выбрать пункт контрольного списка, равный abc

Ответы [ 4 ]

42 голосов
/ 08 февраля 2012

Предполагая, что элементы в вашем CheckedListBox являются строками:

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

или

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

  if (index >= 0)
  {
    checkedListBox1.SetItemChecked(index, true);
  }
8 голосов
/ 08 февраля 2012

Пример на основе 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");
}
2 голосов
/ 06 мая 2014

Весь кредит @ Джиму Скотту - просто добавлено в одно касание.(ASP.NET 4.5 & C #)

Рефрагируя это немного больше ... если вы передаете CheckBoxList как объект методу, вы можете повторно использовать его для любого CheckBoxList.Также вы можете использовать текст или значение.

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);`
0 голосов
/ 07 января 2017

// Множественный выбор:

          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);
                  }
              }
          }

с использованием ==>

clbsec(checkedListBox1,"michael");

or 

clbsec(checkedListBox1,textBox1.Text);

or

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