2011-10-11 11 views
8

Tôi đã liên kết thành công DataGridView của mình với một danh sách. Tuy nhiên, lưới không làm mới khi tôi lập trình thay đổi một số thuộc tính của một trong các đối tượng trong danh sách. Nếu tôi nhấp vào ô (hoặc thu nhỏ và sau đó tối đa hóa biểu mẫu), giá trị được hiển thị sẽ được làm mới.Tại sao các ô DataGridView bị ràng buộc đang được cập nhật?

Tôi đọc here rằng tôi nên sử dụng BindingList. Danh sách tôi đang sử dụng là loại giao diện không triển khai IBindingList. Tuy nhiên, loại bê tông đang được sử dụng để khởi tạo danh sách không kế thừa từ BindingList. Bất kỳ ý tưởng?

+0

nền tảng của bạn là gì? WPF? Winforms? Silverlight? (v.v.) –

+0

Xin lỗi, đó là Winforms. – bsh152s

Trả lời

9

Danh sách của bạn phải triển khai IBindingList (hoặc là BindingList) và đối tượng của bạn phải triển khai INotifyPropertyChanged. Cả hai điều kiện được yêu cầu cho DataGridView của bạn để ràng buộc đúng cách.

Vì vậy, nếu nguồn dữ liệu của bạn sẽ được, ví dụ, MyList<MyClass>, MyList phải thực hiện IBindingListMyClass phải implmenent INotifyPropertyChanged.

Dưới đây là ví dụ gọn gàng: http://crazorsharp.blogspot.com/2009/06/inotifypropertychanged-how-to-and-when.html

+0

Mã tôi đang sử dụng đang triển khai INotifyPropertyChanged và danh sách là một danh sách Binding. Tuy nhiên, một lá cờ đang được thiết lập đã tắt thông báo. Câu trả lời này đã giúp tôi hình dung ra điều này. – bsh152s