Bueno, sigo insistiendo con el "temita" del
DataGridView conteniendo una columna de tipo
ComboBox.
Lo logré mediante el uso del objeto
DataGridViewComboBoxColumn, con la ayuda de de
seba123neo...
Tomé como base (o idea, nada de plagios, todo el crédito es tuyo sebas !!!), una parte del ABM publicado por el mismo (seba123neo), y lo que quería lograr era presentar un DGV que mostrara 4 columnas:
PAISES CAPITALES EDO / PROVINCIAS CIUDADEShttp://imageshack.us/photo/my-images/35/nro1.png/Las Columnas correspondientes a "EDO / PROVINCIAS" y "CIUDADES", son creadas y añadidas con el
DataGridViewComboBoxColumn (las otras normales por supuesto

).
Al hacer click sobre cualquiera de las celdas correspondientes a la columna "PAISES", de inmediato se cargará la celda correspondiente en la columna "EDO / PROVINCIAS"...
http://imageshack.us/photo/my-images/202/nro2.png/A continuación se hace click en esa celda (de la columna "EDO / PROVINCIAS"), y se despliega el combobox mostrando los Estados o Provincias del País seleccionado....
http://imageshack.us/photo/my-images/203/nro3.png/Hasta ahí no ha problema. Pero cuando hago click sobre el Estado o Provincia a seleccionar: 1) no pasa nada, entonces tengo que oprimir "Enter", ahí si actúa el código correspondiente, pero me arroja el siguiente error, y allí si que no he encontrado salida !!!
http://imageshack.us/a/img38/2996/nro4.pngHe aquí el codigo que utilizo (gran parte tomado de "El Guille"):
Con este, cargo el DGVComboBoxColumn:
Private Sub dgvInfoStates_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvInfoStates.CellClick
Dim cdx As Integer = e.ColumnIndex
Dim rdx As Integer = e.RowIndex
'//
If cdx = 0 Then
flag = True
Else
flag = False
End If
'//
If Not flag Then Exit Sub
'//
Dim sCountry As String = dgvInfoStates.CurrentCell.Value.ToString
Dim sqlCnt As String = "SELECT ID_Country, Country FROM Countries " & _
"WHERE Country = '" & sCountry & "'"
Dim schIdc As New cssSearch
Dim idC As Integer = schIdc.SearchIdCSC(sqlCnt, 0)
Dim dgvCbxCell As New DataGridViewComboBoxCell
Dim sqlSte As String = "SELECT * FROM States WHERE ID_Country = " & idC
Dim Dst As New DataSet()
Dim Dad As New FbDataAdapter(sqlSte, FbConn)
'//
Dad.Fill(Dst, "States")
With dgvCbxCell
.DataSource = Dst.Tables(0).DefaultView
.DisplayMember = "State"
.ValueMember = "ID_State"
End With
'//
dgvInfoStates.Item("EDOS. / PROVINCIAS", dgvInfoStates.CurrentCell.RowIndex) = dgvCbxCell
schIdc = Nothing
dgvCbxCell = Nothing
Dst = Nothing
Dad = Nothing
'// Dim sStates As String = dgvInfoStates.Item(cdx, rdx).Value.ToString
'// Dim sState As String = dgvInfoStates.CurrentCell.Value.ToString
End Sub
Con este configuro el DGVComboBoxColumn:
Private Sub GridStyles()
'// Aqui se dan los estilos al Grid...
'// -----------------------------------------------------------------------------------------------------------------
Dim dgvStyle As DataGridViewCellStyle = dgvInfoStates.ColumnHeadersDefaultCellStyle
'//
With dgvStyle
.Font = New Font("Tahoma", 10, FontStyle.Bold)
.BackColor = Color.Blue
.ForeColor = Color.Azure
End With
'// Se oculta la primera primera columna...
dgvInfoStates.RowHeadersVisible = False
'//
Dim sql As String = "SELECT Country AS PAISES, Capital AS Capitales FROM Countries"
Dim Dad As New FbDataAdapter(sql, FbConn)
Dim Dst As New DataSet
'//
Dad.Fill(Dst, "Country")
Dad.Fill(Dst, "Capital")
dgvInfoStates.DataSource = Dst.Tables(0).DefaultView
'//
'// Esta son dos columnas de ComboBoxes...
Dim cbxColStates As New DataGridViewComboBoxColumn
Dim cbxColCities As New DataGridViewComboBoxColumn
'//
cbxColStates.Name = "EDOS. / PROVINCIAS"
cbxColStates.FlatStyle = FlatStyle.Flat
dgvInfoStates.Columns.Add(cbxColStates)
cbxColCities.Name = "CIUDADES"
cbxColCities.FlatStyle = FlatStyle.Flat
dgvInfoStates.Columns.Add(cbxColCities)
'//
'// Configurando las Columnas...
With dgvInfoStates
.Refresh()
.Font = New Font("Arial", 11, FontStyle.Regular)
If .ColumnCount >= 0 Then
.Columns(0).Width = 200
.Columns(1).Width = 180
.Columns(2).Width = 210
.Columns(3).Width = 230
End If
End With
'//
dgvInfoStates.ClearSelection()
End Sub
Aquí es donde se origina el problema (el cual no soy capaz de entender)

Private Sub dgvInfoStates_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvInfoStates.CellValueChanged
Dim cdx As Integer = e.ColumnIndex
Dim rdx As Integer = e.RowIndex
Dim sCountry As String = dgvInfoStates.Item(0, rdx).Value.ToString
Dim schCnt As New cssSearch
Dim sqlCnt As String = "SELECT ID_Country, Country FROM Countries " & _
"WHERE Country = '" & sCountry & "'"
Dim idC As Integer = schCnt.SearchIdCSC(sqlCnt, 0)
Dim dgvCbcCell As New DataGridViewComboBoxCell
Dim Dst As New DataSet()
If cdx = 2 Then
Dim sState As String = dgvInfoStates.Item("CIUDADES", rdx).Value.ToString
'// Dim sqlSte As String = "SELECT * FROM States"
End If
'...
'...
'...
'...
End Sub
Con esta línea
Dim sState As String = dgvInfoStates.Item("CIUDADES", rdx).Value.ToString estoy tratando de obtener el valor de la celda seleccionada en la columna "EDO / PROVINCIAS", pero simpre me tira la misma mierd...!!!

Si alguien con infinita paciencia puede "guíarme a la luz" de la solución, le estaré muy agradecido !!!
Saludos a todos los que lean el Post !!!

Manuel F. Borrego S.
