lunes, 13 de septiembre de 2010

Filtrar y Ordenar un DataTable con un DataView

Los que usamos DataTables para llenar controles de .NET como DataGrids, ComboBox, CheckBoxList, etc., generalmente obtenemos los datos de una consulta SQL, y como bien saben, en ella podemos agregar filtros y ordenamiento de la información.

¿Pero que pasa en los casos en que el DataTable se llena manualmente o los datos son manipulados con código?, por ejemplo la traducción de los Nombres de los Productos. No siempre los filtros o el ordenamiento lo podemos hacer en el origen o mediante una consulta SQL.

Usando algunos de los métodos y propiedades de los DataViews de System.Data podemos lograr el objetivo, por ejemplo:

//Llenamos un DataTable con la información requerida
DataTable myDT = mifuncionLlenado();

//Creamos un DataView com el DataTable
DataView myDV = new DataView(myDT);

/*Para ordenar los datos usamos la propiedad Sort del DataView con el campo o los campos con los que queremos hacerlo, muy parecido a SQL*/
myDV.Sort = "nombreProducto ASC";

/*Y para filtrarlo usamos la propiedad RowFilter*/
myDV.RowFilter = "productoTipo = 1";

//Establecidas las propiedades llenamos un Control con el DataView
this.myDataGrid1.DataSource = myDV;

/*Y todavia podemos llenar otro control con el mismo DataView pero con diferente filtro*/
myDV.RowFilter = "productoTipo = 2";
this.myDataGrid.DataSource = myDV;

El DataView puede ser la vista de un DataTable al que se le puede aplicar filtros, ordenamiento, entre otras cosas, pero haciendolo en memoria.

Espero sea de ayuda y apoyo este artículo.

Happy Coding!!

Fuente: http://msdn.microsoft.com/es-es/library/system.data.dataview(VS.80).aspx

No hay comentarios.: