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:
gracias por tu post! te agrego a mis Feeds :)
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
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!
Publicar un comentario