2010-07-15 48 views
6

Tôi đang xây dựng một danh sách hộp kiểm:Vòng qua một danh sách hộp kiểm

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

Và cố gắng để có được giá trị của các mục đã chọn:

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

tôi nhận được errror

"Trận đấu phương pháp quá tải tốt nhất cho 'System.Collections.Generic.List.Add (System.Guid)' có một số argu không hợp lệ các tuyên bố "

+0

Nếu một mục từ danh sách được chọn, bạn muốn thêm vào cùng một mặt hàng này vào danh sách điều. Đây có phải là những gì bạn đang cố gắng làm không? – jdecuyper

+0

đúng – Neil

Trả lời

9

Danh sách 'điều' là ngoại trừ giá trị Guid. Bạn nên chuyển đổi item.value thành giá trị 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 là loại System.String, và bạn đang cố gắng để thêm nó vào một List<Guid>. Bạn có thể thử:

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

Điều đó sẽ hoạt động miễn là giá trị chuỗi có thể phân tích cú pháp thành Guid. Nếu không rõ, bạn sẽ cẩn thận hơn và sử dụng Guid.TryParse(item.Value).

0

Nếu phương thức Thêm của bạn liệt kê chấp nhận GUID (xem thông báo lỗi), nhưng không chấp nhận "item.value", thì tôi đoán mục .value không phải là GUID.

Hãy thử điều này:

... 
things.Add(CTYPE(item.value, GUID)) 
... 
Các vấn đề liên quan