none
databinding en varios combo RRS feed

  • Pregunta

  • Buenos dias!
    estoy desarrollando una aplicación con Visual studio 2005 en Visual basic contra una base datos sql server 2005.
    Tengo una tabla con muchos campos los cuales quiero mostrar en un formulario, varios campos se muestran en combobox y la tabla origen es la misma (responsables)
    he creado un bindingsource y un bindingnavigator en diseño, para ligar los textbox no tengo problema pero lo que me ocurre con los combos es que todos se me muestran la misma información, es decir el mismo responsable cuando en la tabla son distintos
    este es el codigo escrito:

      Public Sub New(ByVal par As clPartida, ByVal lot As clLote)  
            
            MyBase.New()  
     
            InitializeComponent()  
     
            Cursor = Cursors.WaitCursor  
     
            par partida = par  
            lot lote = lot  
            CargarComboResponsables()  
            Dim dt As New dtCarro  
            Dim carro As New clCarro  
            Dim tablaCarros As New DataTable  
     
            tablaCarros = dt.obtenerTodosPorLote(partida.Codigo, lote.Lote)  
     
            If tablaCarros Is Nothing Then  
                causa = "ALTA" 'no tiene carros  
            Else  
                causa = "MODI" 'tiene carros  
                BindingSource1.DataSource = tablaCarros 
                BindingNavigator1.BindingSource = BindingSource1 
                cargarCarro()  
            End If  
     
     
     
            CargarDatos()  
     
            Cursor = Cursors.Default  
     
        End Sub  
         
     
        Private Sub CargarComboResponsables()  
            Dim datos As New dtResponsable  
            Dim tablaResponsables As DataTable = datos.obtenerTodos(True)  
     
            cboResponsableApertura.DataSource = tablaResponsables 
            cboResponsableApertura.DisplayMember = "nombreresponsable" 
            cboResponsableApertura.ValueMember = "CODigoResponsable" 
     
            cboResponsableDesalado.DataSource = tablaResponsables 
            cboResponsableDesalado.DisplayMember = "nombreresponsable" 
            cboResponsableDesalado.ValueMember = "CODigoResponsable" 
     
     
            datos = Nothing 
        End Sub  
     
        Private Sub cargarCarro()  
     
            txtNumeroCarro.DataBindings.Add(New Binding("Text", BindingSource1, "carronumero", True))  
            cboResponsableApertura.DataBindings.Add(("SelectedValue", BindingSource1, "responsableApertura", True))  
            cboResponsableDesalado.DataBindings.Add("SelectedValue", BindingSource1, "nombreresponsableDesalado", True)  
        
        End Sub 


    Aran
    martes, 17 de marzo de 2009 13:30

Todas las respuestas

  • hola,

    mm la verdad no veo que algo este incorrecto en este codigo.

    Por ahi el problema puede estar en el metodo obtenerTodosPorLote(), no se bien que hara ese metodo pero calculo sera una consulta sql a una base de datos.

    Si es asi, verificaria que el select sea correcto y no este equivocando los campos, por ahi ambos campos esta recuperando el mismo valor.

    Has verificado que la consutla que llena los datos sea correcta?

    dtCarros, es una clases de acceso a datos ?  has probado tomar la consulta sql y ejecutarla en un query analizer, no se si estas usando SQL Server, o alguna otra base de datos.



    bueno se me courre solo esto por ahora.
    Saludos

    Leandro Tuttini
    miércoles, 18 de marzo de 2009 16:30
  • no programo formularios pero... que tengas el displaymember identico en los dos combos no afecta?
    Blog de desarrollo / Development blog
    • Propuesto como respuesta Jesús Bosch viernes, 22 de mayo de 2009 7:04
    viernes, 27 de marzo de 2009 17:43
  • Buenas tardes.

    A mi me pasaba lo mismo en un formulario. Varios combos que comparten el DataSource, y contienen idénticos valores en DisplayMember y ValueMember.
    Al cambiar el elemento de uno de ellos, el resto se cambia también. Esto es porque tienes que establecer un BindingContext distinto para cada combo uno de ellos.
    Te pongo un ejemplito:

    'Carga de ComboBox
        ComboBox1.BindingContext = New BindingContext
        ComboBox1.DataSource = DataSource
        ComboBox1.DisplayMember = strDisplayMemberString
        ComboBox1.ValueMember = strValueMemberString
        ComboBox1.DataBindings.Add("SelectedValue", BindingSource, DataMember)
    'Siguiente ComboBox
        ComboBox2.BindingContext = New BindingContext
        ComboBox2.DataSource = DataSource
        ComboBox2.DisplayMember = strDisplayMemberString
        ComboBox2.ValueMember = strValueMemberString
        ComboBox2.DataBindings.Add("SelectedValue", BindingSource, DataMember)

    Las propiedades de enlace en los dos combos son idénticas, pero al tener un BindingContext distinto, funcionan correctamente.
    Otra cosa me da a mi que es implementarlo en un DataGridView... pero vamos, creo que por aquí andan los tiros...

    Un saludo!!
    • Propuesto como respuesta Jesús Bosch viernes, 22 de mayo de 2009 7:04
    viernes, 8 de mayo de 2009 15:01