Hola Jarogo, disculpa por no responder antes. Bueno esta vez sí me detuve a revisar y probar el código (aunq muy rápidamente). Hice pruebas y te dejo el código que funciona sin errores. Tú lo acomodas de acuerdo a tu necesidad.
Código Vb.Net:
Ver originalPrivate Function DevuelveDatos() As DataTable
Dim dt As New DataTable
dt.Columns.Add("CodigoEmpresa")
dt.Columns.Add("CodigoArticulo")
dt.Columns.Add("Inact")
Dim row As DataRow = dt.NewRow
row("CodigoEmpresa") = "1"
row("CodigoArticulo") = "1"
row("Inact") = "-1"
dt.Rows.Add(row)
row = dt.NewRow
row("CodigoEmpresa") = "2"
row("CodigoArticulo") = "2"
row("Inact") = "0"
dt.Rows.Add(row)
row = dt.NewRow
row("CodigoEmpresa") = "3"
row("CodigoArticulo") = "2"
row("Inact") = "-1"
dt.Rows.Add(row)
row = dt.NewRow
row("CodigoEmpresa") = "4"
row("CodigoArticulo") = "2"
row("Inact") = "0"
dt.Rows.Add(row)
row = dt.NewRow
row("CodigoEmpresa") = "5"
row("CodigoArticulo") = "4"
row("Inact") = "0"
dt.Rows.Add(row)
Return dt
End Function
Private Function GetDatos() As DataTable
Dim dt As New DataTable
dt.Columns.Add("valor")
dt.Columns.Add("key")
Dim row As DataRow = dt.NewRow
row("valor") = "Si"
row("key") = "-1"
dt.Rows.Add(row)
row = dt.NewRow
row("valor") = "No"
row("key") = "0"
dt.Rows.Add(row)
Return dt
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.DataGridView1.DataSource = DevuelveDatos()
Dim d As New DataGridViewComboBoxColumn
d.DataSource = GetDatos()
d.Name = "Inactivo"
d.DisplayMember = "valor"
d.ValueMember = "key"
d.DataPropertyName = "Inact"
DataGridView1.Columns.Add(d)
'Esta columna devería ocultarse automáticamente, pero curiosamente no lo hace, así que lo hice manualmente XD. Luego reviso.
Me.DataGridView1.Columns("Inact").Visible = False
End Sub
Espero haberte ayudado.
Saludos.