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