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.
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}%'"; } }
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
Muy buen Post 🙂
Gracias, Espero que te sea de mucha ayuda
me sale el siguiente error: Unexpected character ‘$’ , que podra ser ? basicamente hice COPY
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 +
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″ });
Saludos vladimir, si es posible subir una captura del codigo que implementaste sería genial, asi podria ayudarte mejor
Muchas gracias pa’