Los DataViews

A menudo en nuestros desarrollos necesitamos realizar filtrados de manera desconectada, es decir, en la colección y no directamente en el origen de datos.

Los DataTables, son objetos que permiten mantener un conjunto de datos de manera desconectada, aunque últimamente se ha dejado de usar, pues están siendo reemplazadas por los List, bien, si eres de los que aun usan los DataTables, este articulo te interesa, si por el contrario has decidido no volver a usar DataTable porque con los List lo tienes todo, quizá te intense aprender Linq to Sql.

Los DataViews son objetos que hacen parte de Ado.Net y representa una vista personalizada que puede enlazar datos de un DataTable para ordenación, filtrado, búsqueda, edición y exploración.

Teniendo esto claro no queda más que implementarlo, en este caso lo haré en un proyecto de WinForms en el que tendré un dos botones, una caja de texto y una DataGridView:

Ahora necesitamos un origen de datos. En este caso emplearemos un XML que tendra la siguiente estructura:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <Empleados>
 <Empleado Id_Empleado="321654">
 <Nombre>Miguel Suarez</Nombre>
 <Edad>30</Edad>
 </Empleado>
 <Empleado Id_Empleado="987654">
 <Nombre>Juan Gonzales</Nombre>
 <Edad>25</Edad>
 </Empleado>
 </Empleados>

Ahora, en el código de nuestra aplicación, crearemos un método del tipo DataTable que no recibirá ningún argumento y se encargara de cargar los datos de este XML, así:

private DataTable obtenerDatos()
 {
 DataSet ds = new DataSet();
 ds.ReadXml(@". . .\MiDoc.xml");
 DataTable dt = new DataTable();
 dt = ds.Tables[0];
 return dt;
 } 

Como podemos observar en este método se crea un objeto del tipo DataSet para cargar los datos del XML, la verdad se pueden cargar de distintas formas pero esta es la más fácil que conozco, luego le asigno a un objeto del tipo DataTable el contenido del DataSet. Este método será llamado por el botón cargar, de la siguiente manera:

private void bt_cargar_Click(object sender, EventArgs e)
{
 dataGridView1.DataSource = obtenerDatos();
}

Si ejecutamos y pulsamos este botón, la grilla mostrará los dos registros de nuestro XML, bien aquí se pone interesante, pues ¿Qué hay si queremos filtrar desde el objeto que nos retorna el método (DataTable)?, aquí entran en juego nuestros DataViews, en el evento del botón buscar agregamos el siguiente código:

private void bt_buscar_Click(object sender, EventArgs e)
{
 DataView dv = new DataView(obtenerDatos());
 dv.RowFilter = “Id_Empleado Like ‘” + txtCriterio.Text + “%’”;
 dataGridView1.DataSource = dv;          
}

En el código anterior creamos un objeto del tipo DataView y en su método constructor le pasamos como argumento un DataTable (este es retornado por nuestra función), luego acudimos a la propiedad RowFilter de nuestro objeto DataView, a ésta le asignamos la consulta SQL, que queremos, en este caso es un Like con comodín al final, lo que nos retornará todo aquello que empiece por el valor buscado (lo digitado en el TextBox) y por ultimo asignamos el DataView a el DataSource de nuestra grilla.

Espero les halla sido de utilidad.

Hasta el próximo post.

Anuncios
Los DataViews

2 comentarios en “Los DataViews

  1. Anónimo dijo:

    buenas tengo un problema, necesito filtrar en una base de datos y mostrar el resultado por un datagridview, filtro a través de un comand, me han aconsejado que lo haga por un filter en el datagridview, pero no se como se hace, podrías explicarme como es? que soy novato en esto, gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s