...espero que se entienda y te sirva:
Primero debes programar en el evento CellValueChanged, para cargar desde ahí la info del combo, cada vez que el id_Articulo cambia
Código Vb.Net:
Ver originalPrivate Sub dgv_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvContenedor.CellValueChanged
With dgv
If .CurrentCell Is Nothing Then
Exit Sub
End If
If .CurrentCell.OwningColumn.Name = "id_articulo" Andalso .CurrentCell.Value IsNot DbNull.Value Then
'llamamos a la función que cargará las unidades y le enviamos la fila actual
CargarUnidadesEnCombo(.CurrentRow)
End If
End With
End Sub
y esta sería la función que carga la info en el Combo.
Código Vb.Net:
Ver originalPrivate Sub CargarUnidadesEnCombo(ByVal fila As DataGridViewRow)
Dim idArticulo as Integer
Dim dt As New DataTable
idArticulo=fila.Cells("id_articulo").value
'Llamamos a una funcion que devuelve una Tabla con las unidades, dependiendo del codigo de producto
dt = ObtenerDetalle(idArticulo)
Dim Celda As DataGridViewComboBoxCell = DirectCast(fila.Cells("Unidad").value, DataGridViewComboBoxCell)
With Celda
.DataSource = dt
.DisplayMember = "Unidad"
.ValueMember = "Código"
If dtContacto Is Nothing OrElse dtContacto.Rows.Count <= 0 Then
.ReadOnly = True
Else
.ReadOnly = False
End If
End With
End Sub
Saludos ;)