Foros del Web » Programación para mayores de 30 ;) » .NET »

ayuda con 2 ComboBox enlazados contenidos en un DataGridView (VB .Net)

Estas en el tema de ayuda con 2 ComboBox enlazados contenidos en un DataGridView (VB .Net) en el foro de .NET en Foros del Web. Buenos días señores, recientemente me he vuelto a reconciliar con la programación y me encuentro con el siguiente problema. Y como casi todo en este ...
  #1 (permalink)  
Antiguo 30/09/2010, 08:04
Avatar de devilinside  
Fecha de Ingreso: marzo-2008
Ubicación: En Perú
Mensajes: 73
Antigüedad: 16 años, 8 meses
Puntos: 6
ayuda con 2 ComboBox enlazados contenidos en un DataGridView (VB .Net)

Buenos días señores, recientemente me he vuelto a reconciliar con la programación y me encuentro con el siguiente problema.
Y como casi todo en este mundo requiere de una rápida solución rápida. Expongo:

Tengo un DataGridView conteniendo datos de clientes (id,nombre, codPais, CodProvincia) y dos Combos, uno es de Paises (Código y Nombre) y otro de Provincias(Código y Nombre). Estos Combos deben estar enlazados de tal forma que cuando cambien de país, el combo de provincias debería actualizarce.

El primer combo (Países) se muestra correctamente pero no el de Provincias.

Ya he buscado en internet y no encuentro nada que me ayude; estoy estancado y necesito avanzar, por lo tanto les agradesco enormemente la ayuda.

Dejo el código para una mejor descripción

Código:
    Private Sub frm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'Agregando y llenando Combo de País
        ' Configuramos la columna.
        Dim dtPais As New DataTable
        Dim col As New DataGridViewComboBoxColumn 'declaro columna tel tipo comboBox que voy a agregar al DataGridVIew
        col.Name = "PaísC"
        col.HeaderText = "País"
        dgv.Columns.Add(col)
        Dim column As DataGridViewComboBoxColumn = _
            DirectCast(dgv.Columns("PaísC"), DataGridViewComboBoxColumn) 'Establesco la referencia para poder trabajar con el combo

        dtPais = ObtenerPais() 'se obtene un datatable conteniendo los países
        With column
            .DataSource = dtPais
            .DisplayMember = "Nombre"
            .ValueMember = "Código"
            .DataPropertyName = "CodPais" 'Nombre de columna del grid que estará enlazada con el combo para señalar el elemento seleccionado. Esta columna se oculta del grid, automaticamente, por q se integra al combo.
        End With

        'Agregando columna del tipo combox para Provincia
        Dim colProvincia As New DataGridViewComboBoxColumn
        colProvincia.Name = "ProvinciaC"
        colProvincia.HeaderText = "Provincia"
        dgv.Columns.Add(colProvincia)
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        dgv.DataSource = ObtenerClientes() 'Devuelve un data table conteniendo datos de un cliente

    End Sub

    Private Sub dgvNotifyPuertos_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dgvNotifyPuertos.EditingControlShowing

        ' Ignoramos otros tipos de controles existentes en las celdas
        If Not TypeOf e.Control Is DataGridViewComboBoxEditingControl Then Return
        ' Referenciamos el control TextBox subyacente en la celda actual.
        Dim cellComboBox As DataGridViewComboBoxEditingControl = TryCast(e.Control, DataGridViewComboBoxEditingControl)

        ' Primero eliminamos el controlador para el evento
        ' SelectedValueChanged, y después lo volvemos a instalar. si no Hacemos esto no podrìa usar el evento "SelectedValueChange" para una celda
        RemoveHandler cellComboBox.SelectedValueChanged, AddressOf SelectedValueChanged
        AddHandler cellComboBox.SelectedValueChanged, AddressOf SelectedValueChanged

    End Sub

    Private Sub SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs)

        ' Referenciamos el control ComboBox
        
        With dgvNotifyPuertos

            If .CurrentCell.OwningColumn.Name.ToString = "PaísC" Then
                Dim objPuerto As New clsPuerto
                Dim celda As DataGridViewComboBoxCell = DirectCast(.CurrentRow.Cells("ProvinciaC"), DataGridViewComboBoxCell)
                celda.DataSource = ObtenerProvincia(.CurrentRow.Cells("PaísC").Value, 1)
                celda.ValueMember = "Código"
                celda.DisplayMember = "Nombre"
                celda.Value = .CurrentRow.Cells("ProvinciaC")
            End If
        End With
    End Sub
muchas gracias a todos aquellos que tengan la buena onda de responder.
Saludos

PD: Trabajo con VS .Net 2010 y el ejemplo es una adaptación de mi problema, con la finalidad de no enredar con la lógica del negocio.
  #2 (permalink)  
Antiguo 30/09/2010, 10:54
Avatar de devilinside  
Fecha de Ingreso: marzo-2008
Ubicación: En Perú
Mensajes: 73
Antigüedad: 16 años, 8 meses
Puntos: 6
Respuesta: ayuda con 2 ComboBox enlazados contenidos en un DataGridView (VB .Net)

Que alguien me de una luz, por favor...

Etiquetas: 2010, combobox, datagridview, datapropertyname, datasource, displaymember, valuemember, vs.net, vbnet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:21.