miércoles, 10 de marzo de 2010

Recuperar la descripción de un combobox cuando se asigna el valor por medio de programación y que no regrese System.Data.DataRowView

Estimados lectores, ha sido una experiencia agradable el hacer este blog y tener algunos lectores que comparten el gusto por la programación; actualmente estoy empezando otro proyecto, muy personal,  con tecnología web  que espero compartir con toda la comunidad de programadores y necesito recursos porque es algo muy personal y mi situación financiera no es muy buena.

 Si alguien desearía apoyarme  tengo una tarjeta Oxxo Saldazo con el número:  4766-8408-7508-1593, cualquier apoyo lo pueden hacer en cualquier tienda Oxxo o en Banamex, les agradezco y que sus proyectos lleguen a buen fin.

 www.artprogramnet.wordpress.com
Un caso comun en los combos es asignar un valor a un combo por medio de programación como en el siguiente ejemplo: donde cbocliente se formo desde la tabla clientes
'crea la tabla clientes
Dim dtabcliente As DataTable
Dim miadaptador As SqlDataAdapter
miadaptador = New SqlDataAdapter("select cvecliente,nombrecliente from clientes", Conexion)
dtabcliente = New DataTable
miadaptador.Fill(dtabcliente)

'asigna los valores al combo
Cbocliente.DataSource = dtabcliente
' Asignar el campo de nombre a la propiedad DisplayMember del combo
Cbocliente.DisplayMember =dtabcliente.Columns("nombrecliente").Caption.ToString
'Asigna el campo de clave al valuemember
cbocliente.valuemember= dtabcliente.Columns("cvecliente").Caption.ToString

'luego le asignamos un valor al selected value
cbocliente.SelectedValue = "4"

'Hasta aquí todo normal, despues si quiero extraer del combo el nombre del cliente generalmente lo hacemos de la siguiente manera:
Nombrecliente= cbocliente.text 'tambien se ocupa cbocliente.SelectedItem
'el nombrecliente es una variable que podemos ocupar para llenar un reporte, para 'pasarla a un label o a otro textbox etc,etc.

'!O J O!, lo que sucede es que en ocasiones lo que nos devuelve cbocliente.text es una cadena :System.Data.DataRowView
'lo cual es lógico ya que cada elemento del combo es una clase de renglón del tipo 'datarowview
'la razón de que devuelva esto es que le pusimos el valor por medio de programación y no interactuamos con el combo, asi que para asegurarnos de que siempre me regrese el valor que se desea—en este caso el nombre de cliente ocupamos la siguiente sintaxis:
nombrecliente = DirectCast(cbocliente.SelectedItem, DataRowView).Item("nombrecliente").ToString
'de esta manera siempre nos va a regresar el nombbre del cliente

13 comentarios:

  1. Hola tu info es de mucha ayuda...yo tengo el mismo problema pero en c#, no se si me podrias ayudar con el codigo para recuperar el valor y que no me salga el System.Data.DataRowView

    Gracias x ty ayuda.....!!!

    ResponderEliminar
  2. Hola, yo no conozco mucho de c#, pero puede ser algo parecido a lo siguiente. Recuerda que lo fundamental es que hagas referencia al datarowview de tu combo. Consulta la sintaxis de c#, pero debe ser muy parecida a la que te doy.
    nombrecliente == ((DataRowView)cbocliente.SelectedItem).Item("nombrecliente").ToString
    Suerte!

    ResponderEliminar
  3. Un lector de este blog, me hizo la misma pregunta,via mail, entre a correr su código en C#
    y la sintaxis que me funciona en C#, seria la siguiente:
    string nombrecliente=((DataRowView)cbocliente.SelectedItem)["nombrecliente"].ToString();

    O en caso de que la presentes directamente con messageshow, seria la siguiente:
    MessageBox.Show(((DataRowView)cbocliente.SelectedItem)["nombrecliente"].ToString());

    espero que les sea de utilidad

    ResponderEliminar
  4. Como seria para asignarle que seleccione el item

    por ejemplo

    me.combobox.selectItem= ? como seria

    ResponderEliminar
  5. Hola,no quedo muy clara tu pregunta, pero si deseas seleccionar un item debes ocupar SelectedIndex como sigue:
    me.combobox.SelectedIndex = 4 ,por ejemplo

    ResponderEliminar
  6. Muchas gracias or tu comentario! y un saludo a todos! espero que este año 2014 se cunmplan todas sus metras y proyectos personales y profesionales!

    ResponderEliminar
  7. muchas gracias eres un genio

    ResponderEliminar
    Respuestas
    1. muchas gracis por comentar, que bueno que te haya sido de utilidad.
      saludos

      Eliminar
  8. graciasssssssssssssss me salvaste

    ResponderEliminar
  9. Gracias a ti por comentar,siempre es gratificante saber que lo que compartimos le sirvio a alguien. Saludos

    ResponderEliminar
  10. Gracias, tenia un problema y en block compredi mi error y solucione el problem.

    ResponderEliminar