2012-02-07 10 views
17

In C#, sto provando a controllare un elemento in un CheckBoxList in cui il testo è uguale a quello che richiedo.Controllare a livello di codice un elemento nell'elenco di checkbox dove il testo è uguale a quello che voglio

Vorrei modificare il codice per controllare gli elementi presenti nel database.

Se volete un esempio, ho bisogno di selezionare la voce CheckListBox che equivale a abc

+0

Avete tentato da soli ancora? L'interfaccia per CheckBoxList è qualcosa che non capisci? – Fuzz

+0

Si prega di non prefissare i titoli con "C#" e così via. Ecco a cosa servono i tag. –

+2

Si prega di consultare le domande frequenti relative alle firme nei post. Ho anche rimosso la tua linea di ringraziamento, perché è più probabile che nessuno ti aiuti dal momento che non hai dimostrato di aver provato ad aiutarti. –

risposta

40

Supponendo che gli articoli nel vostro CheckedListBox sono stringhe:

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

O

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

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

cos'è 'value' nel codice? Spiega per favore! – Vikrant

+0

È il valore che si desidera abbinare, E.G. una stringa letterale di "MyValue" – wdavo

+1

'if (index> 0)' dovrebbe essere 'if (index> = 0)', poiché IndexOf può restituire zero se trova il primo elemento nell'elenco. Restituisce -1 se il valore non viene trovato. – FireSBurnsmuP

8

Esempio basato su 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"); 
} 
+0

La funzione FindByText non esiste per me. –

+0

Questa è un'applicazione asp.net? Fammi sapere quale versione di .NET e quale ambiente e saremo lieti di fornirti istruzioni specifiche. –

+0

Ciao Jim, userò C# .Net in Visual Studio 2010, usando il client Framework 4.0. –

2

Tutto il credito a @Jim Scott - è appena stato aggiunto un tocco. (ASP.NET 4.5 & C#)

Rifrattore un po 'di più ... se si passa il CheckBoxList come un oggetto al metodo, è possibile riutilizzarlo per qualsiasi CheckBoxList. Inoltre puoi usare sia il testo che il valore.

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

// Selezione multipla:

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

utilizzando ==>

clbsec(checkedListBox1,"michael"); 

or 

clbsec(checkedListBox1,textBox1.Text); 

or 

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

Aggiungi una spiegazione con la risposta per come questa risposta aiuta l'OP nel risolvere il problema attuale –

Problemi correlati