2010-07-15 17 views
6

Estoy construyendo una lista de casillas de verificación:recorrer una lista casilla

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

y tratando de obtener el valor de los elementos seleccionados:

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

consigo el errror

"La mejor coincidencia de método sobrecargado para 'System.Collections.Generic.List.Add (System.Guid)' tiene alguna discusión inválida mentos "

+0

Si se selecciona un elemento de la lista, que desea agregar este mismo elemento a la lista cosa. ¿Es esto lo que estas tratando de hacer? – jdecuyper

+0

que es correcto – Neil

Respuesta

9

La lista 'cosas' está exceptuando un valor Guid. Debe convertir item.value a un valor 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 es de tipo System.String, y que está tratando de agregarlo a una List<Guid>. Usted podría intentar:

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

que funcionará siempre y cuando el valor de cadena es apta para su procesamiento a un Guid. Si eso no está claro, querrá ser más cuidadoso y usar Guid.TryParse(item.Value).

0

Si método Add de la lista de no aceptar el GUID (ver el mensaje de error), pero no está aceptando "item.value", entonces supongo elemento .value no es un GUID.

Prueba esto:

... 
things.Add(CTYPE(item.value, GUID)) 
... 
Cuestiones relacionadas