Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/05/2009, 13:07
Trulala de cordoba
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 24 años, 5 meses
Puntos: 19
Respuesta: Datagridview con dos origenes de datos distintos

Hola.
Varias veces he tenido ese problema usando colecciones de objeto. Lo podes resolver de varias maneras. Yo supe en una oportunidad hacer lo que se llama una clase auxiliar donde en mi caso tenia una clase cliente y otra localidades y quería mostrar en la misma grilla el cliente y un combo de localidades. Para hacerlo facil cree una clase clientesAux que tenía todo lo de clientes pero ademas le agrege una propiedad "LocalidadesListado" que era un List del tipo Localidades, asi cuando crear la clase ClientesAux luego le agregas a su propiedad LocalidadesListado todo las localidades existentes.

La otra que ahora esta mejor aun es que en visual studio 2008 podes usar Linq y con esto podes hacer directamente un select donde unis campos de colecciones de objetos como si fueran dos tablas, un lujo!!!

La otra que podes hacer es sino intentar agregar por código un campo de tipo combo y asignarle valores. Te paso un ejemplo básico, despues podes mejorarlo si te sirve:

Código:
Public Class Form1

    Class persona
        Private xEstado As Boolean
        Public Property Estado() As Boolean
            Get
                Return xEstado
            End Get
            Set(ByVal value As Boolean)
                xEstado = value
            End Set
        End Property
    End Class
    Class Localidad

        Private xNombre As String
        Public Property Nombre() As String
            Get
                Return xNombre
            End Get
            Set(ByVal value As String)
                xNombre = value
            End Set
        End Property
    End Class

    Dim xBind As New BindingSource
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim xPer1 As New persona
        Dim xPer2 As New persona
        xPer1.Estado = True
        xPer2.Estado = False

        Dim xPersonas As New List(Of persona)
        xPersonas.Add(xPer1)
        xPersonas.Add(xPer2)
        xBind.DataSource = xPersonas
        DataGridView1.DataSource = xBind

        With DataGridView1
            Dim ColumnCar As New DataGridViewComboBoxColumn
            Dim xLoc1 As New Localidad
            Dim xLoc2 As New Localidad
            xLoc1.Nombre = "Localidad 1"
            xLoc2.Nombre = "Localidad 2"

            Dim xLocalidades As New List(Of Localidad)

            xLocalidades.Add(xLoc1)
            xLocalidades.Add(xLoc2)
            With ColumnCar
                .DataPropertyName = "Localidad"
                .HeaderText = "Localidad"
                .Width = 80
                .DataSource = xLocalidades
                .DisplayMember = "Nombre"
                .ValueMember = "Nombre"
            End With
            .Columns.Add(ColumnCar)
        End With
    End Sub
End Class
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!