none
Actualizar datos en un control ComboBox

    Pregunta

  • Buenos días.

    Tengo una pregunta con respecto a la actualización de los datos en un combobox.

    Lleno el combobox de la siguiente manera:

    Me.cmbPerspectiva.DisplayMember = "descripcion"
    Me.cmbPerspectiva.ValueMember = "id"
    Me.cmbPerspectiva.DataSource = clsIndPerspectiva.GetAll()

    En otro lado actualizo la información de la descripción en la BD. Intengo actualizar la información en el combobox de la siguiente manera:

    cmbPerspectiva.SelectedItem.Descripcion = "descripcion cambiada"

    Supuestamente lo actualiza, pero a la hora de ver en la UI, el texto del combobox no ha cambiado.

    Pregunto, necesariamente tengo que volver a cargar los datos en el DataSource del combobox?

    Muchas gracias por su ayuda

    jueves, 20 de septiembre de 2012 22:01

Respuestas

  • "SantiCalleG" preguntó:

    > Lleno el combobox de la siguiente manera:
    >
    > Me.cmbPerspectiva.DisplayMember = "descripcion"
    > Me.cmbPerspectiva.ValueMember = "id"
    > Me.cmbPerspectiva.DataSource = clsIndPerspectiva.GetAll()
    >
    > En otro lado actualizo la información de la descripción
    > en la BD. Intengo actualizar la información en el
    > combobox de la siguiente manera:
    >
    > cmbPerspectiva.SelectedItem.Descripcion = "descripcion cambiada"
    >
    > Pregunto, necesariamente tengo que volver a cargar los datos
    > en el DataSource del combobox?

    Hola:

    Como supuestamente el método clsIndPerspectiva.GetAll() devolverá un objeto DataTable, sí es necesario que vuelvas a llamar a dicho método para que las modificaciones efectuadas en la base de datos se vean reflejadas en el control ComboBox.

    Ten en cuenta que los datos existentes en un objeto DataTable, se encuentre éste incluido o no en un objeto DataSet, están completamente desconectados del origen de datos propiamente dicho (tu base de datos), y en el control ComboBox aparecerán los datos que actualmente existen cuando efectuas una consulta a la base de datos, es decir, cuando llamas al método GetAll de la clase clsIndPerspectiva.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.


    viernes, 21 de septiembre de 2012 7:24
  • necesariamente tengo que volver a cargar los datos en el DataSource del combobox?

    eso tienes que hacerlo siempre para que el combo tomes los item, pero ojo solo uan vez en el Load del form, no es que para asignar debes cargar priemro y luego seleccionar, la carga de los items asignando el DataSource solo es una vez

    depsues recomendaria que uses el SelectedValue, usa el campo id para seleccionar el item, no necesitas usar la descripcion

    o sea usar

    cmbPerspectiva.SelectedValue = <valor id>

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Eder CostaOwner martes, 02 de octubre de 2012 13:48
    viernes, 21 de septiembre de 2012 11:56

Todas las respuestas

  • "SantiCalleG" preguntó:

    > Lleno el combobox de la siguiente manera:
    >
    > Me.cmbPerspectiva.DisplayMember = "descripcion"
    > Me.cmbPerspectiva.ValueMember = "id"
    > Me.cmbPerspectiva.DataSource = clsIndPerspectiva.GetAll()
    >
    > En otro lado actualizo la información de la descripción
    > en la BD. Intengo actualizar la información en el
    > combobox de la siguiente manera:
    >
    > cmbPerspectiva.SelectedItem.Descripcion = "descripcion cambiada"
    >
    > Pregunto, necesariamente tengo que volver a cargar los datos
    > en el DataSource del combobox?

    Hola:

    Como supuestamente el método clsIndPerspectiva.GetAll() devolverá un objeto DataTable, sí es necesario que vuelvas a llamar a dicho método para que las modificaciones efectuadas en la base de datos se vean reflejadas en el control ComboBox.

    Ten en cuenta que los datos existentes en un objeto DataTable, se encuentre éste incluido o no en un objeto DataSet, están completamente desconectados del origen de datos propiamente dicho (tu base de datos), y en el control ComboBox aparecerán los datos que actualmente existen cuando efectuas una consulta a la base de datos, es decir, cuando llamas al método GetAll de la clase clsIndPerspectiva.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.


    viernes, 21 de septiembre de 2012 7:24
  • necesariamente tengo que volver a cargar los datos en el DataSource del combobox?

    eso tienes que hacerlo siempre para que el combo tomes los item, pero ojo solo uan vez en el Load del form, no es que para asignar debes cargar priemro y luego seleccionar, la carga de los items asignando el DataSource solo es una vez

    depsues recomendaria que uses el SelectedValue, usa el campo id para seleccionar el item, no necesitas usar la descripcion

    o sea usar

    cmbPerspectiva.SelectedValue = <valor id>

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Eder CostaOwner martes, 02 de octubre de 2012 13:48
    viernes, 21 de septiembre de 2012 11:56