2009-02-04 57 views
7

Tengo una tabla con digamos 1640 elementos. Establecí¿Cómo obtener el recuento visible de filas de DataGridView después de BindingSource.Filter?

bindingSource.Filter = "some filter query string"; 

y la mayoría de las filas desaparecen, dejando, por ejemplo, 400 filas. Me gustaría poder decirle al usuario "Mostrando 400 de 1640 elementos" al hacer clic en algunos cuadros de texto que cambian la cadena de filtro y, por lo tanto, qué filas son visibles en el objeto dataGridView (muy parecido a iTunes pero para datos médicos, no géneros/artistas/álbumes que filtran canciones).

Intenté bindingSource.Count y siempre es 1640 sin importar en qué cadena de filtro esté configurada (aunque se muestran muchas menos filas como se desee). Intenté recorrer todas las filas en dataGridView.Rows y contar solo las filas que son Visibles, pero que aún suman 1640.

¿Dónde puedo obtener esta información?

Tenga en cuenta que no estoy utilizando SQL, pero bindingSource.DataSource es un DataSource de un DataView envuelto alrededor de una DataTable (de un conjunto de datos leídos de XML).

+0

I ¡Tenía un error donde el código no se llamaba excepto una vez al principio! Oops! Hay al menos dos formas de encontrar el conteo. Ver mi respuesta –

Respuesta

1

Qué tal agregar los elementos filtrados en una DataTable separada y contando para los elementos filtrados.

3

Jared,

Recientemente tuve que hacer esto mismo. Lo que funcionó para mí fue usar la propiedad DataGridView.Rows.Count después de aplicar el filtro.

¿Está configurando su fuente de datos a la propiedad DataSource de BindingSource o DataGridView? Debería ser BindingSource.

HTH -Jay

+0

Esto funcionó muy bien! – TWood

1

me atornilla algo más arriba. Jay tiene razón:

dataGridViewCases.Rows.Count 

obras, como lo hace:

bindingSource.Count 
14

Prueba esto: datagridviewname.Rows.GetRowCount(DataGridViewElementStates.Visible);

+1

gracias esto ayudó – user3813249

+1

Esta solución es mucho mejor que la respuesta aceptada, porque no duplica la tabla de datos. No es necesario duplicar la tabla y, por lo tanto, utilizar hasta el doble de memoria que si solo tuviera una. – Chad

0

necesita sólo tiene que utilizar la propiedad Count de su BindingSource ...

ExampleBindoneSource.Count() 
Cuestiones relacionadas