2010-07-15 5 views
6

Je construis une liste de cases à cocher:boucle à travers une liste de cases à cocher

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

Et essayer d'obtenir ce des éléments sélectionnés de la valeur:

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

Je reçois le errror

"La meilleure méthode surchargée pour 'System.Collections.Generic.List.Add (System.Guid)' a un argument invalide ments "

+0

Si un élément de la liste est sélectionnée, vous voulez ajouter ce même élément à la liste de chose. Est-ce ce que vous essayez de faire? – jdecuyper

+0

c'est correct – Neil

Répondre

9

La liste 'thing' est à l'exception d'une valeur Guid. Vous devez convertir item.value à une valeur 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 est de type System.String, et vous essayez de l'ajouter à un List<Guid>. Vous pouvez essayer:

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

qui fonctionnera aussi longtemps que la valeur de chaîne est analysable à un Guid. Si ce n'est pas clair, vous voudrez être plus prudent et utiliser Guid.TryParse(item.Value).

0

Si votre liste de méthode Add n'accepte GUID (voir le message d'erreur), mais n'accepte pas « item.value », alors je suppose que l'article .value n'est pas un GUID.

Essayez ceci:

... 
things.Add(CTYPE(item.value, GUID)) 
... 
Questions connexes