Ivan Pequeño
2009-12-26 12:37:01 UTC
Si alguien pudiera darme una pista o un Link...
Mi problema es recuperar desde una celda de tipo ComboBox,
de un DataGridView, el valor y un código.
Si he logrado entender, cargo los datos siguientes de este modo:
'Cargar Tipos de Telecomunicaciones desde el P.Almacenado TlcTipoBrowser
_TlcTipoBrowserTA.Fill(_Gcp2k8DS.TlcTipoBrowser)
'Crea DataTable a partir de DataAdapter
Dim D As DataTable = _Gcp2k8DS.TlcTipoBrowser
'Define Propiedades de Enlace en Columna de tipo ComboBox de DataGridView
With DgvCbMedio
.DataSource = D
'Puede ser Teléfono de Domicilio, Sitio Web, E-Mail, etc
.DisplayMember = "Glosa"
'Es un ID autonumérico en la Tabla
.ValueMember = "ID_Tbl"
End With
1a Pregunta:
La Property .ValueMember ¿Estaría actuando como un ItemData de un Vb 6.0?
Si el propósito de .ValueMember NO ES ese agradecería me lo confirmaran y
continuaría trabajando (Como lo he hecho hasta ahora) con un HashTable
para encotrar los ID correspondientes a la Glosa.
Lo que estoy haciendo es intentar programar en Visual Basic .Net Version 8
y NO en Visual Basic 6.0 contenido en Vb 8.Net
If el Propósito de .ValueMember NO ES actuar como un ItemData de Vb 6.0 Then
No pierda su tiempo leyendo la continuación de este post
Return "NO, No entendistes NADA"
End if
2a Preguanta:
Estoy recuperando el .DisplayMember en el evento DataGridView_RowLeave,
pero constato que en éste el valor que obtengo de
Cstr(DataGridView(Col,Row).Value)
es la Option precedente y no la actual, es decir en este evento el cambio
aún no se
ha producido.
Me explico:
El Combo contenía la opción E-Mail y yo seleccioné Telefonía Móvil
el valor que contiene Cstr(DataGridView(Col,Row).Value) es E-Mail.
¿En que evento ya el cambio se produjo, para poder detectarlo?
3a Pregunta:
Una vez detectado el cambio, ¿Cómo hacer para recuperar el ID, es decir, el
código
de ese médio de Telecomunicación?
Lo mejor que he logrado recuperar desde .ValueMember es "ID_Tbl" y en ningún
caso el
Valor del ID. Sea Móvil = 5, Teléfono Oficina = 3, Etc...
Me he pasado varias horas en Internet, tratando de encontrar una solución,
algún ejemplo.
Hay miles de gentes exponiendo el problema, y no he logrado encontrar Ni una
sola solución.
Intente generar un evento para leer el estado de la Celda cuando esta pierde
el foco
'En Declaraciones
Private WithEvents CellComboBox As DataGridViewComboBoxEditingControl
'Y en el código:
Private Sub CellComboBox_LostFocus(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles CellComboBox.LostFocus
Dim T As String = CStr(TlcDgv(4, 0).Value)
End Sub
Pero algo tengo mal, puesto que el evento no se produce
¿Tendré que seguir con mi HashTable, que no es más que una transposicón de
Vb 6.0?
¿O tendré que resignarme a mi edad, que esto no es para mi?
¡SOCORRO!
y DE ANTE MANO GRACIAS A TODOS
Mi problema es recuperar desde una celda de tipo ComboBox,
de un DataGridView, el valor y un código.
Si he logrado entender, cargo los datos siguientes de este modo:
'Cargar Tipos de Telecomunicaciones desde el P.Almacenado TlcTipoBrowser
_TlcTipoBrowserTA.Fill(_Gcp2k8DS.TlcTipoBrowser)
'Crea DataTable a partir de DataAdapter
Dim D As DataTable = _Gcp2k8DS.TlcTipoBrowser
'Define Propiedades de Enlace en Columna de tipo ComboBox de DataGridView
With DgvCbMedio
.DataSource = D
'Puede ser Teléfono de Domicilio, Sitio Web, E-Mail, etc
.DisplayMember = "Glosa"
'Es un ID autonumérico en la Tabla
.ValueMember = "ID_Tbl"
End With
1a Pregunta:
La Property .ValueMember ¿Estaría actuando como un ItemData de un Vb 6.0?
Si el propósito de .ValueMember NO ES ese agradecería me lo confirmaran y
continuaría trabajando (Como lo he hecho hasta ahora) con un HashTable
para encotrar los ID correspondientes a la Glosa.
Lo que estoy haciendo es intentar programar en Visual Basic .Net Version 8
y NO en Visual Basic 6.0 contenido en Vb 8.Net
If el Propósito de .ValueMember NO ES actuar como un ItemData de Vb 6.0 Then
No pierda su tiempo leyendo la continuación de este post
Return "NO, No entendistes NADA"
End if
2a Preguanta:
Estoy recuperando el .DisplayMember en el evento DataGridView_RowLeave,
pero constato que en éste el valor que obtengo de
Cstr(DataGridView(Col,Row).Value)
es la Option precedente y no la actual, es decir en este evento el cambio
aún no se
ha producido.
Me explico:
El Combo contenía la opción E-Mail y yo seleccioné Telefonía Móvil
el valor que contiene Cstr(DataGridView(Col,Row).Value) es E-Mail.
¿En que evento ya el cambio se produjo, para poder detectarlo?
3a Pregunta:
Una vez detectado el cambio, ¿Cómo hacer para recuperar el ID, es decir, el
código
de ese médio de Telecomunicación?
Lo mejor que he logrado recuperar desde .ValueMember es "ID_Tbl" y en ningún
caso el
Valor del ID. Sea Móvil = 5, Teléfono Oficina = 3, Etc...
Me he pasado varias horas en Internet, tratando de encontrar una solución,
algún ejemplo.
Hay miles de gentes exponiendo el problema, y no he logrado encontrar Ni una
sola solución.
Intente generar un evento para leer el estado de la Celda cuando esta pierde
el foco
'En Declaraciones
Private WithEvents CellComboBox As DataGridViewComboBoxEditingControl
'Y en el código:
Private Sub CellComboBox_LostFocus(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles CellComboBox.LostFocus
Dim T As String = CStr(TlcDgv(4, 0).Value)
End Sub
Pero algo tengo mal, puesto que el evento no se produce
¿Tendré que seguir con mi HashTable, que no es más que una transposicón de
Vb 6.0?
¿O tendré que resignarme a mi edad, que esto no es para mi?
¡SOCORRO!
y DE ANTE MANO GRACIAS A TODOS