Saltar al contenido

Filtrado de DataGridView sin cambiar la fuente de datos

Agradeceríamos tu apoyo para difundir nuestras secciones acerca de las ciencias de la computación.

Solución:

Acabo de pasar una hora en un problema similar. Para mí, la respuesta resultó ser vergonzosamente simple.

(dataGridViewFields.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '0'", textBoxFilter.Text);

Desarrollé una declaración genérica para aplicar el filtro:

string rowFilter = string.Format("[0] = '1'", columnName, filterValue);
(myDataGridView.DataSource as DataTable).DefaultView.RowFilter = rowFilter;

Los corchetes permiten espacios en el nombre de la columna.

Además, si desea incluir varios valores en su filtro, puede agregar la siguiente línea para cada valor adicional:

rowFilter += string.Format(" OR [0] = '1'", columnName, additionalFilterValue);

Una forma más sencilla es cruzar los datos y ocultar las líneas con el Visible propiedad.

// Prevent exception when hiding rows out of view
CurrencyManager currencyManager = (CurrencyManager)BindingContext[dataGridView3.DataSource];
currencyManager.SuspendBinding();

// Show all lines
for (int u = 0; u < dataGridView3.RowCount; u++)

    dataGridView3.Rows[u].Visible = true;
    x++;


// Hide the ones that you want with the filter you want.
for (int u = 0; u < dataGridView3.RowCount; u++)

    if (dataGridView3.Rows[u].Cells[4].Value == "The filter string")
    
        dataGridView3.Rows[u].Visible = true;
    
    else
    
        dataGridView3.Rows[u].Visible = false;
    


// Resume data grid view binding
currencyManager.ResumeBinding();

Solo una idea... a mi me funciona.

Recuerda que tienes permiso de agregar una reseña si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *