2010-07-15 17 views
6

Sto costruendo un elenchi di caselle di controllo:ciclo in un elenco casella di controllo

<asp:CheckBoxList ID="CheckBoxes" DataTextField="Value" DataValueField="Key" runat="server"></asp:CheckBoxList> 

e cercando di ottenere il valore del degli elementi selezionati:

List<Guid> things = new List<Guid>(); 
foreach (ListItem item in this.CheckBoxes.Items) 
{ 
    if (item.Selected) 
     things.Add(item.Value); 
    } 
} 

ho l'errror

"La migliore corrispondenza del metodo sovraccarico per 'System.Collections.Generic.List.Add (System.Guid)' ha alcuni argomenti non validi menti "

+0

Se si seleziona una voce dalla lista, si desidera aggiungere questo stesso elemento all'elenco cosa. È questo che stai cercando di fare? – jdecuyper

+0

che è corretto – Neil

risposta

9

L'elenco "Cosa" è escluso un valore Guid. È necessario convertire item.value ad un valore GUID:

List<Guid> things = new List<Guid>(); 
foreach (ListItem item in this.CheckBoxes.Items) 
{ 
    if (item.Selected) 
    things.Add(new Guid(item.Value)); 
} 
5

ListItem.Value è di tipo System.String, e si sta cercando di aggiungerlo a una List<Guid>. Si potrebbe provare:

things.Add(Guid.Parse(item.Value)); 

che funzionerà fino a quando il valore della stringa è analizzabile a un Guid. Se questo non è chiaro, vorrete fare più attenzione e usare Guid.TryParse(item.Value).

0

Se il metodo Add della vostra lista non accetta GUID (vedi il messaggio di errore), ma non accetta "item.value", quindi direi voce .value non è un GUID.

Prova questa:

... 
things.Add(CTYPE(item.value, GUID)) 
... 
Problemi correlati