Como cargar un DataGridView con un Objeto (ArrayList, Array, etc) con Vb .Net

Bueno, estoy haciendo una aplicación en Vb Net y algo que me llevó un poco de trabajo pero lo estudié y salió, es como cargar un dataGridView con un objeto determinado, ya sea un array, un arraylist, una base de datos etc.

Para hacerlo, creamos una clase, que se podría llamar ManejoGrillas y dentro de ella los métodos necesarios, en este caso, el método que recibe la grilla y un objeto para cargarla con datos, tal como se muestra a continuación:

Public Class manejoGrillas

    Public Sub llenarGrilla(ByVal grilla As DataGridView, ByVal objeto As Object)
        Dim bs As BindingSource = New BindingSource()
        bs.DataSource = objeto
        grilla.DataSource = bs
        bs.ResetBindings(False)
    End Sub

End Class

Luego de esto, simplemente instanciamos la clase donde queramos cargar la grilla, en mi caso tengo una clase controladora llamada Sistema que está en todo,dado que es la clase manejadora de mi programa, para ello, dentro de esta clase tengo como parámetro una instancia de ManejoGrillas, luego suponiendo que tengamos una grilla llamada dataGridPersonas, y le queremos cargar los datos de un objeto tipo arrayList que contiene objetos del tipo Personas, hacemos lo siguiente:

sistema.manejoGrillas.llenarGrilla(Me.dataGridPersonas, sistema.listaPersonas)

Con esto, teniendo en cuenta que listaPersonas esta en la clase Sistema, ya estaría llenandose el DataGrisView.

Cualquier pregunta usen los comentarios…

 

Saludos

  1. Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ‘****************************************************************************************
    ‘en este ejemplo muestro como cargar objetos de dominio en un datagridview vb.net 2005
    ‘una forma de listar objetos es definiendo el tostring del objeto y luego añadir el o los objetos
    ‘a un listbox, pero me resulta más prolijo ver los datos en un datagridview, por los espacios, etc..
    ‘en mi carrera analista programador nos han enseñado a trabajar en las 3 capas: interface, dominio y
    ‘persistencia. Si tengo un objeto cliente y lo quiero mostrar en un datagrid
    ‘podría levantar los objetos cliente de la base de datos en un dataset y luego cargar el datagrid con
    ‘este datset, pero estaría llendo directo de capa persistencia a la interface sin armar objetos cliente de
    ‘dominio. Entonces, dado que parece que los más prolijo es devolver un arraylist de objetos clientes
    ‘a la capa de dominio y no un dataset con los datos de los clientes, (por ser programacion orientada a
    ‘objetos), y dado que considero
    ‘que visualmente queda mejor ver los datos en una datagrid y no como una lista de textos largos devuelto
    ‘por los tostring de los objetos, investigando llegue a esta forma que me permite a partir de un
    ‘arrylist de objetos de dominio mostrarlos en un datagrid.
    ‘espero que les sea rapidamente util a los que estan buscando los mismo que yo estaba buscando hace un rato
    ‘saludos
    ‘(metiendo esto un bucle se carga todo el arraylist)
    ‘*****************************************************************************************

    ‘la clase dSeccion tiene atributos
    ‘nro: Integer
    ‘nombre: String

    ‘instancio dos objetos
    Dim q As New dSeccion
    q.nro = 23
    q.nombre = “lafisrttiche”

    Dim wq As New dSeccion
    wq.nro = 25
    wq.nombre = “lasecuncheedidche”

    ‘instancio una tabla
    Dim unaTabla As New DataTable

    ‘defino las columnas con sus nombre(titulo) y tipo de datos
    Dim col1 As DataColumn = unaTabla.Columns.Add(“nro”, Type.GetType(“System.Int32”))
    Dim col2 As DataColumn = unaTabla.Columns.Add(“nombre”, Type.GetType(“System.String”))

    ‘defino dos filas que tienen la estructura de las columnas definidas
    ‘cargo en las filas los datos de los dos objetos de dominio
    Dim unaFila As DataRow = unaTabla.NewRow()
    unaFila.Item(“nro”) = q.nro
    unaFila.Item(“nombre”) = q.nombre
    ‘la otra…
    Dim fila2 As DataRow = unaTabla.NewRow()
    fila2.Item(“nro”) = wq.nro
    fila2.Item(“nombre”) = wq.nombre

    ‘y las agrego a la datatable
    unaTabla.Rows.Add(unaFila)
    unaTabla.Rows.Add(fila2)

    ‘creo un dataset y le agrego la tabla y las meto en la datagrid
    Dim unDs As New DataSet
    unDs.Tables.Add(unaTabla)
    Me.DataGrid.DataSource = unDs
    Me.DataGrid.DataMember = unDs.Tables(0).TableName

    End Sub

    End Class

  2. hola chicos estoy intentando hacer un sistema donde me permita filtar datos de la bd y mostrarlos en un datagrid..como puedo hacerlo..graciass

  3. Hola viejo que tal tengo un problema me gustaría saber cómo ingresar los datos del array a mi grid te mando lo que llevo del código me gustaría si me puedes explicar que tengo mal y de antemano gracias si me puedes contestar a mi correo
    Public Class TDA

    Private Sub TDA_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.GroupBox1.Hide()

    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

    For i As Integer = 0 To i
    DataGridView2.Item(0, 0).Value = ListBox1.SelectedItem

    Next

    End Sub

    Private Sub RemoverToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RemoverToolStripMenuItem.Click
    If Me.ListBox1.SelectedIndex >= 0 Then
    Me.ListBox1.Items.RemoveAt(Me.ListBox1.SelectedIndex.ToString)
    Else
    MessageBox.Show(“La lista esta basilla o no a seleccionado un elemento”)
    End If
    End Sub

    Private Sub AgregarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AgregarToolStripMenuItem.Click
    Me.GroupBox1.Show()
    If UCase(TextBox1.Text) = TextBox1.Text And Not IsNumeric(Me.TextBox1.Text) Then
    Me.ListBox1.Items.Add(Me.TextBox1.Text)
    Me.TextBox1.Clear()

    Else
    MessageBox.Show(“Dato incorrecto”)
    Me.TextBox1.Clear()
    End If
    End Sub

  4. Bueno la forma mas sencilla, en una explicación genérica sería hacer algo como:

    int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8 };
    GridView1.DataSource = arr;
    GridView1.DataBind();

    Esto es, teniendo un array, en este caso arr, asignamos ese array al datasource de la grilla, en este caso es un gridView de nombre GridView1.
    Luego, finalmente debemos llamar al método DataBind el cual carga los datos de la grilla, y listo, tenemos una grilla con los datos de array en ella,

    Saludos!

Comentarios cerrados.