Inicio > C#.NET > Realizar búsqueda en un DataGridView (Filtrar Información)

Realizar búsqueda en un DataGridView (Filtrar Información)

Hola, hoy quiero compartir como realizar una búsqueda sencilla dentro del contenido de un DataGridView ya que en ocasiones nos es de bastante utilidad en las pantallas de consulta de nuestras aplicaciones. En el ejemplo se tratará de la tabla PERSONA que ya debe existir en nuestra Base de Datos. Lo primero que haremos es crear nuestra pequeña interfaz que contendrá 1 textbox donde escribiremos parte del nombre de la persona que queremos buscar, un botón el cual se encargará de ejecutar el código necesario para realizar la búsqueda y un DataGridView que mostrará la información que filtraremos. Quedará algo similar a lo siguiente:





Bien, dejamos a un lado la vista de diseño y nos vamos a la interesante que es la de código. Lo primero que haremos es agregar el siguiente using ya que lo necesitamos para el acceso a datos.




using System.Data.SqlClient;

Aunque esta sección no trata de como llenar un DataGridView es necesario el siguiente método para cargarle la información y asi poder realizar la búsqueda (filtrado):


public void CargarDataGridView(System.Windows.Forms.DataGridView ElDataGridView, _
String Sql, SqlConnection objConn)
{
SqlCommand ElComando = new SqlCommand();
SqlDataReader ElReader;
System.Data.DataTable ElDataTable = new System.Data.DataTable();
try
{
ElComando = new SqlCommand(Sql, objConn);
ElReader = ElComando.ExecuteReader();
ElDataTable.Load(ElReader);
ElDataGridView.DataSource = ElDataTable;
}
catch (Exception e)
{
throw (e);
}
}

En el evento Load del formulario pegamos el siguiente código que se encargará de cargarle la información al DataGridView en cuanto se cargue el form.


string ComandoSQL = “SELECT * FROM PERSONA ORDER BY ID_PERSONA”;
using (SqlConnection connection =
new SqlConnection(“Cadena de Conexión”))
{
try
{
connection.Open();
CargarDataGridView(this.dgvPersonas, ComandoSQL, connection);
connection.Close();
}
catch (Exception ex)
{
throw (ex);
}
}



Hasta aqui ya tenemos nuestra interfaz y la información cargada en nuestro DataGridView, ahora necesitamos darle funcionalidad a nuestro botón que realizará el filtrado para ello damos doble click sobre el y pegamos el siguiente código.


using (SqlConnection connection =
new SqlConnection(“Cadena de Conexión”))
try
{
string ConsultaSQL = “SELECT * FROM PERSONA ORDER BY ID_PERSONA”;
connection.Open();
BindingSource source1 = new BindingSource();
SqlDataAdapter CustomerTableAdapter =
new SqlDataAdapter(ConsultaSQL, connection);
DataTable MiDataTable = new DataTable();
CustomerTableAdapter.Fill(MiDataTable);
source1.DataSource = MiDataTable;
this.dgvPersonas.DataSource = source1;
source1.Filter = “nombre LIKE ‘%” + this.tbNombre.Text + “%’”;
connection.Close();
}
catch (Exception ex)
{
throw (ex);
}
}

Como podemos observar es algo sencillo de realizar, ahora solo resta ejecutar nuestra aplicación para verificar que funcione de la manera que esperamos.





Saludos!




Compartir este artículo


About these ads
Categorías:C#.NET
  1. Tony
    diciembre 1, 2011 en 7:58 am | #1

    Gracias por tu post, andaba buscando algo como esto. muchas gracias

    • diciembre 14, 2011 en 4:52 am | #2

      De nada Tony me da gusto que te haya servido.

      Saludos!

  2. RFlavio
    febrero 16, 2012 en 7:33 pm | #3

    no lo tendrás pero para vb .net?

  3. Mario
    agosto 6, 2012 en 5:11 pm | #5

    Hola,
    muy bueno el post….soy nuevo en esto y tengo un problema con .net.,osea ya hice que cargara registros a mi datagridview pero quiero hacer un boton de busqueda = al que hiciste arriba pero me doy cuenta que lo haces con sql…mi pregunta es
    es lo mismo para mi caso??

    • agosto 6, 2012 en 8:48 pm | #6

      Que tal Mario, veamos tu caso: En tu caso utilizas alguna conexión a base de datos?, es decir, la información que cargas en el Grid es de algunas tablas de una base de datos? Antes que nada seria importante que definieras el origen de datos que utilizas para tu Grid o si es que lo estas llenando manualmente.

      Saludos.

  4. Aline
    agosto 10, 2012 en 2:05 am | #7

    Hola!!! bueno solo quiero saber donde cargas la primera parte del código?????

  5. Aline
    agosto 10, 2012 en 2:07 am | #8

    así como también donde metes el using???

    • agosto 22, 2012 en 8:45 pm | #9

      Hola Aline, esa primera parte de código que aparece es un método que puedes colocar donde gustes, por otro lado para este ejemplo el using lo coloqué en el evento load del formulario.

      Saludos.

  6. Carloss
    septiembre 25, 2012 en 4:26 pm | #10

    Amigo como hago cuando mis datos superan los 2 millones de datos y en aumento que puedo hacer para q no visualze toda la informacion solo visualize lo filtrado graxias

  7. JKL
    noviembre 9, 2012 en 10:39 pm | #11

    hola que tal, encaso de que me genere los datos el datagridview de una base de datos, no es necesario que use la 2 primeras partes de tu codigo verdad?, es decir solo con la parte del boton essuficiente para mi y bueno en ese caso me esta marcandoun error esque le tube que hacer algunos cambios debido a nombres, bueno en si mi duda es esa si tiene que ver que este cargando los datos de una base de datos, saludos

  8. roberto
    enero 30, 2013 en 8:09 pm | #12

    hola, estoy creando una agenda. no se manejar todavía sql pero hice mi base de datos en acces, creé una interfaz con un buscador y un botón, quiero que cuando apriete el botón me busque el nombre que escribí en el buscador con todos los demás datos vienen aparejado al nombre(tel, mail, etc) la agnda la se crear, pero por default te pune un buscador por numero, es decir a cada contacto le asigna un número y es muy dificil encontrarlo por número, por ejemplo si “pedro” es el 50 tengo que recordar que es el 50 para poder buscarlo. me explico?

    podrias darme una mano?

    gracias

    Roberto

    =)

  9. marzo 30, 2013 en 9:25 pm | #13

    ‘P12.Form3′ does not contain a definition for ‘dgvPersonas’ and no extension method ‘dgvPersonas’ accepting a first argument of type ‘P12.Form3′ could be found (are you missing a using directive or an assembly reference?) C:\Users\HECTORJR\Desktop\P12\Form3.cs 66 40 P12

    Ese Es mi unico error

    • marzo 30, 2013 en 9:25 pm | #14

      Soy novatoooooo

      • octubre 7, 2013 en 5:35 pm | #15

        Asegurate que tu datagrid tenga el nombre de dgvPersonas o bien cambia ese nombre por el que le pusiste a tu datagrid.

  1. No trackbacks yet.
Disculpa, debes iniciar sesión para escribir un comentario.
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: