2009-02-04 39 views
7

Tôi có một bàn với 1640 mục. Tôi đặtLàm thế nào để có được số hàng có thể nhìn thấy của DataGridView sau BindingSource.Filter?

bindingSource.Filter = "some filter query string"; 

và hầu hết các hàng biến mất, để lại, 400 hàng. Tôi muốn có thể nói cho người dùng "Hiển thị 400 trong số 1640 mục" khi họ nhấp vào một số hộp văn bản thay đổi chuỗi bộ lọc và do đó các hàng có thể nhìn thấy trong đối tượng dataGridView (giống iTunes nhưng đối với dữ liệu y tế, không phải thể loại/nghệ sĩ/album lọc bài hát).

Tôi đã thử bindingSource.Count và luôn luôn là 1640 bất kể chuỗi bộ lọc được đặt thành (mặc dù nhiều hàng ít hơn được hiển thị như mong muốn). Tôi đã thử lặp lại tất cả các hàng trong dataGridView.Rows và chỉ đếm các hàng có thể nhìn thấy, nhưng vẫn còn tổng cộng là 1640.

Tôi có thể lấy thông tin này ở đâu?

Lưu ý rằng tôi không sử dụng SQL nhưng bindingSource.DataSource là một DataSource từ một DataView quấn quanh một DataTable (từ một dataSet đọc từ XML).

+0

tôi đã có một lỗi mà mã đó đã không nhận được gọi là ngoại trừ một lần vào đầu! Rất tiếc! Có ít nhất hai cách để tìm số đếm. Xem câu trả lời của tôi. –

Trả lời

1

Cách thêm các mục đã lọc vào một DataTable riêng và thực hiện đếm trên các mục đã lọc.

3

Jared,

Gần đây tôi phải làm điều này. Điều gì làm việc cho tôi đã sử dụng thuộc tính DataGridView.Rows.Count sau khi tôi áp dụng bộ lọc.

Bạn có đang đặt nguồn dữ liệu của mình thành thuộc tính DataSource của BindingSource hoặc DataGridView không? Nó phải là BindingSource.

HTH -Jay

+0

Điều này làm việc tuyệt vời! – TWood

1

Tôi đã làm hỏng điều gì đó khác. Jay là đúng:

dataGridViewCases.Rows.Count 

công trình, cũng như:

bindingSource.Count 
14

Hãy thử điều này: datagridviewname.Rows.GetRowCount(DataGridViewElementStates.Visible);

+1

cảm ơn điều này đã giúp – user3813249

+1

Giải pháp này tốt hơn nhiều so với câu trả lời được chấp nhận, bởi vì nó không trùng lặp với dữ liệu có thể đặt. Không cần phải lặp lại bảng, và do đó sử dụng bộ nhớ lên đến gấp đôi như thể bạn chỉ có một bộ nhớ. – Chad

0

bạn chỉ cần sử dụng tài sản Tính của BindingSource của bạn ...

ExampleBindoneSource.Count() 
Các vấn đề liên quan