none
Error al desplegar combobox RRS feed

  • Pregunta

  • Buenas tengo este pequeño problema

    cuando doy click en el datagriview me señala el mismo index en el combobox 

    y cuando elijo el index en el combobox me elige el mismo en el datagridview 

    todo correcto, el problema viene cuando despliego el combobox 

    tego los index 19,20 y 21 con este nombre (American Lager)

    si yo señalo el 21 que es (American Lager), cuando despliego el combobox me sale señalado 

    el 19 que tambien es (American Lager)

    Gracias

     Private Sub ComboBox8_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox8.SelectedIndexChanged
                    DGV_Levaduras.Rows(ComboBox8.SelectedIndex).Selected = True
            DGV_Levaduras.CurrentCell = DGV_Levaduras.Rows(ComboBox8.SelectedIndex).Cells(0)
            Label35.Text = ComboBox8.SelectedIndex
            Label36.Text = DGV_Levaduras.CurrentRow.Index.ToString
        End Sub
        Private Sub DGV_Levaduras_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DGV_Levaduras.CellMouseClick
            MsgBox(DGV_Levaduras.CurrentRow.Index.ToString)
            ComboBox8.SelectedIndex = DGV_Levaduras.CurrentRow.Index.ToString
            Label35.Text = ComboBox8.SelectedIndex
            Label36.Text = DGV_Levaduras.CurrentRow.Index.ToString
        End Sub

    domingo, 5 de junio de 2016 8:44

Respuestas

  • JETET,

    En principio, creo que no es correcto que selecciones un elemento del objeto ComboBox en base al índice del objeto DataGridView porque el índice -del objeto DataGridView- corresponde a la posición de la fila en un determinado momento, si el usuario ordena el objeto DataGridView por una columna distinta a la actual sucederá que el índice se actualizará y en ese caso no tendrá ninguna coherencia con el índice de los elementos del objeto ComboBox.

    Por otro lado, tampoco encuentro sentido que una lista desplegable contenga elementos iguales, puedes concatenar el valor del laboratorio para que cada elemento del desplegable sea diferente. 

    Nombre1 - Lab1
    Nombre1 - Lab2
    Nombre1 - Lab3

    En caso sigas el consejo y dejes la referencia por el índice una forma de encontrar un elemento coincidente en un objeto ComboBox es a través del método FindString():

    Dim index As Integer = ComboBox8.FindString("Nombre1 - Lab1")
    
    ComboBox8.SelectedIndex = index

    • Marcado como respuesta JETET lunes, 6 de junio de 2016 16:09
    domingo, 5 de junio de 2016 15:45
  • JETET,

    Puedes realizar la búsqueda con LinQ, intenta hacer lo siguiente:

    Dim row As DataGridViewRow = DGV_Levaduras.Rows.Cast(Of DataGridViewRow)().FirstOrDefault(Function(x) String.Concat(x.Cells(3).Value, " - ", x.Cells(0).Value) = ComboBox8.Text)
    
    If row IsNot Nothing Then
    	DGV_Levaduras.ClearSelection()
    	row.Selected = True
    End If
    

    • Marcado como respuesta JETET miércoles, 8 de junio de 2016 15:12
    lunes, 6 de junio de 2016 18:59

Todas las respuestas

  • En realidad te selecciona el elemento correcto pero al desplegar en la lista aparece seleccionado el primero que coincide con el texto. Es un "problema" del control ComboBox, no funciona correctamente cuando se repiten valores.

    Pongo lo de "problema" entre comillas porque realmente no le veo mucho sentido a tener valores repetidos en un ComboBox. Si son valores diferentes el texto a mostrar debería ser diferente para que el usuario sea capaz de distinguirlos, si el mismo valor sobraría una de las entradas.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Propuesto como respuesta Sergio Parra domingo, 5 de junio de 2016 8:56
    domingo, 5 de junio de 2016 8:53
  • Gracias por responder pero es que el producto tiene el mismo nombre pero los demas datos son diferentes

    es que esta levadura la fabrica varios laboratorios los laboratorios si son diferentes

    no se si se prodra hacer una busqueda conjunta

    domingo, 5 de junio de 2016 10:19
  • No entiendo muy bien el interfaz que intentas hacer.

    ¿Los campos de debajo del grid sirven para editar las líneas y también para buscar en el grid?


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    domingo, 5 de junio de 2016 11:02
  • La pregunta es si se podria hacer una busqueda con 2 criterios asi no abria posivilidad de repetir 

    domingo, 5 de junio de 2016 11:13
  • La verdad es que no acabo de entender bien cómo quieres que funcione.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    domingo, 5 de junio de 2016 13:08
  • JETET,

    En principio, creo que no es correcto que selecciones un elemento del objeto ComboBox en base al índice del objeto DataGridView porque el índice -del objeto DataGridView- corresponde a la posición de la fila en un determinado momento, si el usuario ordena el objeto DataGridView por una columna distinta a la actual sucederá que el índice se actualizará y en ese caso no tendrá ninguna coherencia con el índice de los elementos del objeto ComboBox.

    Por otro lado, tampoco encuentro sentido que una lista desplegable contenga elementos iguales, puedes concatenar el valor del laboratorio para que cada elemento del desplegable sea diferente. 

    Nombre1 - Lab1
    Nombre1 - Lab2
    Nombre1 - Lab3

    En caso sigas el consejo y dejes la referencia por el índice una forma de encontrar un elemento coincidente en un objeto ComboBox es a través del método FindString():

    Dim index As Integer = ComboBox8.FindString("Nombre1 - Lab1")
    
    ComboBox8.SelectedIndex = index

    • Marcado como respuesta JETET lunes, 6 de junio de 2016 16:09
    domingo, 5 de junio de 2016 15:45
  • Gracias por responder Wiliams, lo e solucionado como tu me as dicho de esta manera

    hay alguna manera para buscar en el datagridview)

    Gracias

    Private Sub DGV_Levaduras_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DGV_Levaduras.CellMouseClick
            
            Dim index As String = ComboBox8.FindString(DGV_Levaduras.CurrentRow.Cells(3).Value & " - " & DGV_Levaduras.CurrentRow.Cells(0).Value)
    
            ComboBox8.SelectedIndex = index
        End Sub

    lunes, 6 de junio de 2016 7:41
  • JETET,

    Puedes realizar la búsqueda con LinQ, intenta hacer lo siguiente:

    Dim row As DataGridViewRow = DGV_Levaduras.Rows.Cast(Of DataGridViewRow)().FirstOrDefault(Function(x) String.Concat(x.Cells(3).Value, " - ", x.Cells(0).Value) = ComboBox8.Text)
    
    If row IsNot Nothing Then
    	DGV_Levaduras.ClearSelection()
    	row.Selected = True
    End If
    

    • Marcado como respuesta JETET miércoles, 8 de junio de 2016 15:12
    lunes, 6 de junio de 2016 18:59