Tôi đang sử dụng VS 2008/C# và ràng buộc một Danh sách địa phương của các lớp trợ giúp như là DataSource cho một điều khiển DataGridView. Việc gọi phương thức Remove() trong danh sách các lớp trợ giúp của tôi sẽ kích hoạt sự kiện CellFormatting của DataGridView, điều này có ý nghĩa (một chút).Xóa hàng cuối Databound DataGridView C#
Khi loại bỏ bất kỳ điều gì xảy ra là DataBoundItem của hàng cuối cùng trong lưới (miễn là lưới có nhiều hàng) bộ sưu tập hàng của DataGridView không được cập nhật trước khi sự kiện này kích hoạt. Vì vậy, trong xử lý sự kiện CellFormatting, tôi nhận được một IndexOutOfRangeException khi bộ sưu tập hàng là một quá lớn.
Tôi đã thử xóa hàng bằng phương thức DataGridView.Rows.Remove() và ràng buộc bằng cách sử dụng BindingSource thay vì gắn kết Danh sách trực tiếp dưới dạng nguồn dữ liệu.
Tôi đã tìm thấy một vài tham chiếu đến sự cố này qua Google, nhưng câu trả lời không được sắp tới hoặc được cho là sử dụng phương thức Delete() trên DataGridView hoặc bộ sưu tập DataGridView.Rows - hiện không tồn tại.
Sắp xếp có vẻ không phải là vấn đề, vì thực hiện/không thực hiện kết quả sắp xếp trong cùng một kết quả.
Ngoại lệ duy nhất cho "hàng cuối cùng" là một vấn đề cần xóa là nếu DataGridView chỉ chứa một hàng - trong trường hợp đó mọi thứ đều hoạt động tốt.
đặt thành rỗng và quay lại bộ sưu tập đã hoạt động. – Pat
Gắn cờ câu trả lời này là câu trả lời ngoại trừ về câu hỏi cũ điên rồ. :-) Tôi tin rằng tôi đã thử đề xuất không thành công vào thời điểm đó. Nhưng nó dường như đã làm việc cho người khác. –