2009-10-10 61 views
9

Tôi có một BindingList <> của các đối tượng, được đặt thành DataSource của một BindingSource. Cài đặt này được đặt thành DataSource của DataGridView.Cách chính xác để hủy liên kết một BindingSource khỏi một DataGridView

Tôi lo ngại không gây ra bất kỳ rò rỉ bộ nhớ tiềm ẩn nào, vì vậy hãy tự hỏi liệu có cách nào ưu tiên để hủy liên kết các kết nối này khi tôi kết thúc dữ liệu hay không.

Tôi đang nghĩ đến việc:

datagridview.DataSource = null; 
bindingsource.DataSource = null; 
bindingsource.Clear(); 

Để lại ràng buộc:

bindingsource.DataSource = bindinglist<myObjects>; 
datagridview.DataSource = bindingsource; 

là thứ tự này đúng, hay nó thực sự quan trọng? Tôi đã bỏ qua bất cứ điều gì cần phải có?

Bất kỳ con trỏ nào được đánh giá cao, cảm ơn.

Trả lời

12

Gán null cho DataGridview DataSource là cách tốt nhất để xóa nguồn dữ liệu của lưới, bạn là chính xác.

11

Nếu bạn sử dụng cột tùy chỉnh, hãy đặt AutoGenerateColumn thành false trước khi xóa nguồn dữ liệu. Điều này sẽ đảm bảo cột tùy chỉnh của bạn được giữ nguyên. Nếu không, chúng sẽ bị xóa và được tạo tự động trên DataBind tiếp theo.

datagridview.AutoGenerateColumns = false; 
datagridview.DataSource = null; 

Chỉnh sửa: Không chắc tại sao điều này lại bị bỏ phiếu. Đây là giải pháp đúng cho các cột không được tạo tự động. Tôi có dự án để chứng minh điều đó. Tôi hy vọng ai đó thấy nó hữu ích.

Các vấn đề liên quan