2008-10-21 38 views
5

Tôi có một DataTable có cột boolean được gọi là [Không hợp lệ]. Tôi cần chia dữ liệu này bằng cột Không hợp lệ này - các hàng hợp lệ có thể được chỉnh sửa, các hàng không hợp lệ không thể. Kế hoạch ban đầu của tôi là sử dụng hai BindingSources và thiết lập thuộc tính Filter (ví dụ [Invalid] = 'false'), nó chơi ngay trong tay tôi bởi vì tôi có hai DataGridView và vì vậy tôi cần hai BindingSources.Sử dụng nhiều BindingSources trên một DataTable

Điều này không hoạt động: BindingSources đặt thuộc tính Bộ lọc được kết hợp với DataTable, vì vậy cả hai tài nguyên BindingSources giữ cùng một dữ liệu. Tôi sẽ phải làm hai lần lấy từ cơ sở dữ liệu, hoặc tôi có thể làm những gì tôi muốn với các đối tượng tôi có?

Trả lời

5

Tôi không nghĩ bạn có thể làm theo cách bạn đang hy vọng.

Bạn có thể sử dụng hai dataviews khác nhau của cùng một dữ liệu, và ràng buộc xem xét dữ liệu của bạn với những dữ liệu đó?

5

Khi bạn liên kết với một DataTable, bạn có hiệu quả ràng buộc với chế độ xem mặc định của nó (DataTable.DefaultView). Và khi bạn đặt thuộc tính Bộ lọc của BindingSource, bạn đang đặt thuộc tính Bộ lọc của chế độ xem mặc định, ghi đè Bộ lọc được đặt bởi BindingSource khác.

Vì vậy deadcat's answer is correct: bạn cần phải liên kết với hai quan điểm khác nhau trên DataTable (một trong số đó có thể là DefaultView nếu bạn thích):

bindingSource1.DataSource = myDataTable; 
bindingSource2.DataSource = new DataView(myDataTable); 

hoặc

bindingSource1.DataSource = new DataView(myDataTable); 
bindingSource2.DataSource = new DataView(myDataTable); 
Các vấn đề liên quan