Como Filtrar Datos en un DataGridView C#

En ciertos momentos del desarrollo de una aplicacion o software, surgen necesidades que no vienen plasmadas en los libros, y es ahi donde se nos tranca el juego,  en esta entrega de Hazlo Express te mostrare como filtrar datos en un DataGridView C#, algo bastante util cuando se trata de servir resultados desde una base de datos ya sea sql o no -sql.

filtrar 1

Para esto es necesario un DataTable, en el cual cargaremos los datos.

//Instanciamos el DataTable 
DataTable directorio = new DataTable();

//Creamos 2 columnas
 directorio.Columns.Add("Contacto");
 directorio.Columns.Add("Número");

//agregamos algunos registros
 directorio.Rows.Add(new object[] {"José","1(234)567-8910" }); 
 directorio.Rows.Add(new object[] { "Miriam", "1(234)567-8910" }); 
 directorio.Rows.Add(new object[] { "Josélito", "1(234)567-8910" });

y luego le asignamos a la propiedad DataSource del DataGridView este DataTable.

  DGVDatos.DataSource = directorio;

El siguiente paso es utilizar un TextBox (caja de texto) y en su evento TextChange, escribiremos el código que nos permitirá filtrar la data en el DataGridView.

directorio.DefaultView.RowFilter = $"contacto LIKE '{TxtFiltrar.Text}%'";

Lo que estamos haciendo aquí es utilizando una expresión SQL en la propiedad “DefaultView” esta propiedad permite modificar lo que se muestra del DataTable, en este caso “RowFilter”, esta es la propiedad de “DefaultView” que permite filtrar y es sobre la cual se utiliza el SQL antes mencionado; la sentencia LIKE

También te puede interesar Pasar Datos Entre Formularios C# WinForm

Aunque no estamos filtrando directamente en el DataGridView, lo hacemos sobre el DataTable, los cambios se pueden apreciar en el DataGridView.

El código de ejemplo quedaría de la siguiente forma

 public partial class Formulario : Form //Nombre de la clase,
    {
        DataTable directorio = new DataTable(); //DataTable

        public Formulario()//Constructor
        {
            InitializeComponent();

            directorio.Columns.Add("Contacto");
            directorio.Columns.Add("Número");

            directorio.Rows.Add(new object[] {"José","1(234)567-8910" });
            directorio.Rows.Add(new object[] { "Miriam", "1(234)567-8910" });
            directorio.Rows.Add(new object[] { "Josélito", "1(234)567-8910" });

            DGVDatos.DataSource = directorio;

        }

        private void TxtFiltrar_TextChanged(object sender, EventArgs e)//evento de la caja de texto
        {//solo dale doble click a la caja de texto
            directorio.DefaultView.RowFilter = $"contacto LIKE '{TxtFiltrar.Text}%'";
        }
    }

filtrar 2

como pudimos ver, no es complicado llevar a cabo la tarea de filtrar datos en un DataGridView en el lenguaje de programacion C#, ya que al utilizar una propiedad del datatable ya esto se hace posible.

Espero que este Post te sea de gran utilidad, puedes dejar tus comentarios y no te olvides de compartir y darle me gusta

5/5 - (4 votos)

7 pensamientos en “Como Filtrar Datos en un DataGridView C#

    1. Aris Valdez

      el símbolo de dinero $, solo es posible usarlo desde una versión especifica de NET Framework, la 4.6, para quitar ese error borra el símbolo de $ y concatena usando el símbolo de +

  1. vladimirbp

    Cuando cierro el formulario y lo vuelvo a abrir me marca «Referencia a objeto no establecida como instancia de un objeto» en la parte donde dice:

    directorio.Rows.Add(new object[] {«José»,»1(234)567-8910″ });

    1. Aris

      Saludos vladimir, si es posible subir una captura del codigo que implementaste sería genial, asi podria ayudarte mejor

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.