Tôi có danh sách thả xuống bên trong chế độ xem lưới, được tải từ nguồn dữ liệu khi tải GridView. Có thể ai đó xin vui lòng chỉ cho tôi cách tôi đi về looping danh sách thả xuống và loại bỏ một số mặt hàng từ danh sách dựa trên một điều kiện nếu.Xóa mục danh sách khỏi DropDownList
Trả lời
Không cần phải vòng lặp các mục, chỉ cần tìm các mục và loại bỏ nó:
ListItem itemToRemove = myDropDown.Items.FindByValue("value");
if (itemToRemove != null)
{
myDropDown.Items.Remove(itemToRemove);
}
Hoặc nếu bạn biết chỉ số của mặt hàng đó để loại bỏ, sử dụng phương pháp RemoveAt:
myDropDown.Items.RemoveAt(0);
Nhưng nếu bạn muốn lặp lại, đây là vòng lặp:
foreach (ListItem item in myDropDown.Items)
{
// your stuff
}
Bạn không thể sử dụng foreach để xóa các mục, như một khi bạn ha đã loại bỏ một mục, bộ sưu tập được sửa đổi, và vòng lặp ném một ngoại lệ.
Nếu bạn phải lặp qua bộ sưu tập để xóa nhiều mục, giải pháp tốt nhất là lặp lại qua bộ sưu tập. C# của tôi là khá gỉ, do đó, sau đây là trong VB. Nên dễ dàng chuyển đổi.
For x As Integer = myDropDown.Items.Count - 1 to 0 Step -1
Dim item As ListItem = myDropDown.Items(x)
If item.TestToSeeIfItShouldBeRemoved = True
myDropDown.Items.RemoveAt(x)
End If
End For
Bạn không thể sử dụng vòng lặp cho mỗi vì bạn không thể sửa đổi bộ sưu tập khi sử dụng đối tượng điều tra viên. Cách tốt nhất để làm điều đó là đếm ngược như đã nêu bởi @ Jason. Hoặc sử dụng một vòng lặp for như thế này:
for (int i = 0; i < this.MyDropDownList.Items.Count; i++)
{
//test to see if this item needs to be removed or not
if (IsToBeRemoved(this.MyDropDownList.Items[i]))
{
this.MyDropDownList.Items.Remove(this.MyDropDownList.Items[i]);
//re-set to next item in the list (count changed after item removed)
i -= 1;
}
}
Chỉ cần lưu ý rằng sau khi bạn loại bỏ các ListItem
, số DropDownList
mục sẽ thay đổi. Vì vậy, bạn sẽ cần phải giảm biến truy cập của bạn i
, nếu không bạn có nguy cơ không đánh giá tất cả các mục.
Điều này làm việc cho tôi. Cảm ơn bạn – Fandango68
Tại sao bạn không thể sử dụng for each item in mycollection.ToList()
Bằng cách này, bạn có thể thực hiện thay đổi trong quá trình lặp qua danh sách, vì bộ sưu tập được chuyển thành bản sao danh sách chứ không phải danh sách thực.
- 1. Xóa mục khỏi danh sách
- 2. C# xóa các mục khỏi danh sách
- 3. Xóa mục khỏi danh sách bằng linq
- 4. xóa mục khỏi danh sách weak_ptrs
- 5. Python - xóa các mục khỏi danh sách
- 6. C# Xóa danh sách khỏi danh sách
- 7. Xóa mục khỏi Danh sách và nhận mục đồng thời
- 8. xóa các mục khỏi Danh sách chung <t>
- 9. Xóa các mục đã chọn khỏi hộp danh sách
- 10. Hibernate: Xóa mục khỏi Danh sách không tồn tại
- 11. Xóa lần cuối n Mục khỏi Danh sách bằng C#
- 12. Cách xóa một mục khỏi danh sách chung
- 13. C# - Xóa một mục khỏi danh sách KeyValuePair
- 14. Python: Cách xóa danh sách trống khỏi danh sách?
- 15. Xóa danh sách khỏi danh sách bằng Python
- 16. Xóa danh sách các đối tượng khỏi danh sách khác
- 17. xóa danh sách phụ khỏi danh sách trong tcl
- 18. Xóa các mục khỏi danh sách 1 không có trong danh sách 2
- 19. Xóa YourSelf khỏi danh sách ShareActionProvider
- 20. Xóa phần tử khỏi danh sách chung
- 21. Xóa mục khỏi ListBox?
- 22. Trong Python, làm cách nào để xóa mục danh sách thứ N từ danh sách danh sách (xóa cột)?
- 23. cách xóa chuỗi rỗng khỏi danh sách, sau đó xóa giá trị trùng lặp khỏi danh sách
- 24. Xóa các phần tử khỏi danh sách ràng buộc
- 25. Tự động xóa các phần tử khỏi Danh sách
- 26. python xóa các bản sao khỏi 2 danh sách
- 27. Sự cố khi xóa các phần tử khỏi danh sách khi lặp qua danh sách
- 28. Xóa các bản sao khỏi danh sách các danh sách trong Python
- 29. Xóa các mục khỏi ListBox trong WPF?
- 30. Python - kiểm tra trên một sợi/xóa khỏi danh sách
tôi muốn xóa nhiều hơn hai mục –
tôi đã thử tùy chọn này. trong đó loại bỏ mục thứ hai nó cho thấy lỗi System.InvalidOperationException: Bộ sưu tập đã được sửa đổi; hoạt động điều tra có thể không thực hiện được. –