jueves, 15 de marzo de 2007

- Conversión de Ilist en DataTable

Nota: Este código ha sido probado con .NET Framework 2.0

Muchas veces retornamos de nuestra fuente de datos un set de datos de tipo Ilist, el cual enlazamos a nuestros GridViews sin ningún problema.

Como veremos en próximas entradas, hay una forma muy interesante de realizar sorting y paging al mismo tiempo, para ello necesitamos pasar como parámetro un DataTable en uno de los métodos que implementaremos , por lo cual vamos a escribir una utilidad que convierta un Ilist en un DataTable.

Como en casos anteriores, tomaremos la aplicación de ejemplo de este blog (virtualEducation) y agregaremos en el módulo de Utilidades la clase Converter.cs, la cual iremos completando en las próximas entradas. En esta oportunidad , solo definiremos el método public static DataTable IList2DataTable(IList iList) para tener solo el conversor que necesitamos.

Aquí tenemos el código:


using System;
using System.Collections;
using System.Data;
using System.Reflection;

namespace Utilidades {
public class Converter {
public static DataTable IList2DataTable(IList iList) {
DataTable oDataTableReturned = new DataTable();

if (iList.Count > 0) {
object _baseObj = iList[0];
Type objectType = _baseObj.GetType();
PropertyInfo[] properties = objectType.GetProperties();

foreach (PropertyInfo property in properties) {
DataColumn oColumna;
oColumna = new DataColumn();
oColumna.ColumnName = property.Name;
oColumna.DataType = property.PropertyType;
oDataTableReturned.Columns.Add(oColumna);
}

foreach (object objItem in iList) {
DataRow oFila;
oFila = oDataTableReturned.NewRow();
foreach (PropertyInfo property in properties) {
oFila[property.Name] = property.GetValue(objItem, null);
}
oDataTableReturned.Rows.Add(oFila);
}
}
return oDataTableReturned;
}
}
}

3 comentarios:

Anónimo dijo...

gracias por tu post! te agrego a mis Feeds :)

hector dijo...

Muy intersante y util tu clase pero tengo una duda que pasaria si uno de mis elementos en la lista es tambien un ilist o un objeto creado por uno mismo

Anónimo dijo...

Ola, muy util tu clase, pero me genera una error en: "DataTableReturned", podrias poner un ejemplo de como consumir dicha clase??, espero que si, te lo agradeceria muchisimo!!

Salu2, Ericka Rojas!