Cómo convertir una lista genérica de objetos a una datatable. vb.NET. ASP.NET
Lo cierto es que este tema me ha interesado, aquí te va un poco más de Reflection. Por si alguna vez precisas realizar una conversión de un List Of Tu Clase a un DataTable.
Primero, agrego mis objetos de tipo Persona a mi List Of. Luego que la lista está llenada, la traspaso a un datatable. Recorro las propiedades de mi clase para que los nombres de éstas sean los nombres de las columnas del datatable. Acto seguido, por cada ítem de la lista, recorro cada propiedad para agregar cada valor como fila del datatable. Bueno, lo demás ya es obvio.
Imports System.Collections.Generic Imports System.Data Imports System.Reflection Imports ClassLibrary3 Partial Class _Default Inherits System.Web.UI.Page Private lstPersonas As New List(Of clsPersona) Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.prcCrearPersona() Dim dt As DataTable = ConvertToDataTable(lstPersonas) End Sub Private objPersona As clsPersona Public Sub prcCrearPersona() For i As Integer = 0 To 4 objPersona = New clsPersona objPersona.pNombre = "Lizzy" & i objPersona.pApellido = "Mendivil" & i Me.lstPersonas.Add(objPersona) Next End Sub Public Shared Function ConvertToDataTable(Of T)(ByVal list As IList(Of T)) As DataTable Dim dt As New DataTable() Dim propiedades As PropertyInfo() = GetType(T).GetProperties For Each p As PropertyInfo In propiedades dt.Columns.Add(p.Name, p.PropertyType) Next For Each item As T In list Dim row As DataRow = dt.NewRow For Each p As PropertyInfo In propiedades row(p.Name) = p.GetValue(item, Nothing) Next dt.Rows.Add(row) Next Return dt End Function End Class
Como resultado, tendrías que tener una vista similar a esta: (claro, según tu clase)
HaPPy Coding =)
excelente ejemplo, gracias!! me sirvió mucho.
ReplyDeletesaludos
Te amo <3
ReplyDeleteMuy Buen aporte Saludos
ReplyDelete