none
Como recorrer las filas de un DataGridView mediante un button? RRS feed

  • Pregunta

  • Como recorrer las filas de un DataGridView mediante un button?

    estoy haciendo un proyecto donde cargo los registro de la base de datos en un DataGridView, pero quisiera es mediante dos button recorrer las filas de los registros cargados mediantes el boton de siguiente y atras. espero que alguien me pueda ayudar, ya que ando aprendiendo

    jueves, 2 de junio de 2016 23:47

Respuestas

  • Hola Como recorrer las filas de un DataGridView ,

    Primero te recomendaría que actives esta propiedad del DataGridView.

    'Seleccionar toda la fila
    SelectionMode = FullRowSelect

    Ya que ambos botones tienen la misma lógica, en el Load del form creo un Handler para los dos.

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            AddHandler btnAnterior.Click, AddressOf recorrerFila
            AddHandler btnSiguiente.Click, AddressOf recorrerFila
        End Sub

    Y el método :

        Private Sub recorrerFila(sender As Object, e As EventArgs)
    
            Dim btn As Button = DirectCast(sender, Button)
    
            Dim filaActual As Integer = DataGridView1.CurrentRow.Index
    
            'Si hay datos
            If DataGridView1.Rows.Count > 0 Then
    
                If btn.Name = "btnAnterior" Then
                    'Si no es la fila 0
                    If filaActual <> 0 Then
                        DataGridView1.Rows(filaActual).Selected = False
                        'Restamos la fila
                        filaActual -= 1
                    End If
                Else 'Es btnSiguiente
                    'Si estamos en la ultima fila no hay siguiente
                    If filaActual <> DataGridView1.Rows.Count - 1 Then
                        DataGridView1.Rows(filaActual).Selected = False
                        'Sumamos la fila
                        filaActual += 1
                    End If
                End If
            End If
    
    
            'Seleccionamos la fila
            DataGridView1.Rows(filaActual).Selected = True
            'Nos movemos a la fila
            DataGridView1.CurrentCell = DataGridView1(0, filaActual)
    
        End Sub

    En este caso el Handler es para los dos botones, por lo que si en el IF es btnAnterior el ELSE será para btnSiguiente.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 3 de junio de 2016 0:15
  • Hola Como recorrer las filas de un DataGridView,

    Supongo que tu celda ya tiene un ancho y alto para ver la imagen?

    Solo sería cuestión de formatear el layout después de cargar los datos :

           Dim colImagen As DataGridViewImageColumn =
                                    DirectCast(DataGridView1.Columns("NombreColumna"),
                                                              DataGridViewImageColumn)
    
            If colImagen IsNot Nothing Then
                colImagen.ImageLayout = DataGridViewImageCellLayout.Stretch
            End If


    Con esto la imagen se adaptará al tamaño de la celda.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 3 de junio de 2016 1:01
  • Hola Como recorrer las filas de un DataGridView,

    Puedes obtener los bytes() de la imagen y mostrarla en el PictureBox cada vez que cambie la selección, mediante el evento SelectionChanged de tu DGV.

     Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) _
              Handles DataGridView1.SelectionChanged
    
            If Not IsDBNull(DataGridView1.CurrentRow.Cells("miColumna").Value) Then
                'Obtenemos los bytes de la celda
                Dim bytes As Byte() = CType(DataGridView1.CurrentRow.Cells("miColumna").Value, Byte())
                'Si no es nulo
                If bytes IsNot Nothing Then
                    Dim ms As New MemoryStream(bytes)
                    PictureBox1.Image = Image.FromStream(ms)
                Else
                    PictureBox1.Image = Nothing
                End If
            End If
    
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 3 de junio de 2016 2:16

Todas las respuestas

  • Hola Como recorrer las filas de un DataGridView ,

    Primero te recomendaría que actives esta propiedad del DataGridView.

    'Seleccionar toda la fila
    SelectionMode = FullRowSelect

    Ya que ambos botones tienen la misma lógica, en el Load del form creo un Handler para los dos.

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            AddHandler btnAnterior.Click, AddressOf recorrerFila
            AddHandler btnSiguiente.Click, AddressOf recorrerFila
        End Sub

    Y el método :

        Private Sub recorrerFila(sender As Object, e As EventArgs)
    
            Dim btn As Button = DirectCast(sender, Button)
    
            Dim filaActual As Integer = DataGridView1.CurrentRow.Index
    
            'Si hay datos
            If DataGridView1.Rows.Count > 0 Then
    
                If btn.Name = "btnAnterior" Then
                    'Si no es la fila 0
                    If filaActual <> 0 Then
                        DataGridView1.Rows(filaActual).Selected = False
                        'Restamos la fila
                        filaActual -= 1
                    End If
                Else 'Es btnSiguiente
                    'Si estamos en la ultima fila no hay siguiente
                    If filaActual <> DataGridView1.Rows.Count - 1 Then
                        DataGridView1.Rows(filaActual).Selected = False
                        'Sumamos la fila
                        filaActual += 1
                    End If
                End If
            End If
    
    
            'Seleccionamos la fila
            DataGridView1.Rows(filaActual).Selected = True
            'Nos movemos a la fila
            DataGridView1.CurrentCell = DataGridView1(0, filaActual)
    
        End Sub

    En este caso el Handler es para los dos botones, por lo que si en el IF es btnAnterior el ELSE será para btnSiguiente.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 3 de junio de 2016 0:15
  • eres un genio amigo, me funciono a la perfección...

    NECESITO OTRA AYUDA... mi base de datos también guarda imágenes, pero cuando  visualizo la tabla en el DataGridView, las imágenes en dicho DataGridView no se adaptan a la celda. estuve viendo unos vídeos que cuando los registran automáticamente en el DataGridView ya le aparece las imágenes ajustada a la celda. como puedo hacer eso?... AYUDAME CON ESO PARA DEJARLO DE ESA FORMA

     
    viernes, 3 de junio de 2016 0:28
  • Hola Como recorrer las filas de un DataGridView,

    Supongo que tu celda ya tiene un ancho y alto para ver la imagen?

    Solo sería cuestión de formatear el layout después de cargar los datos :

           Dim colImagen As DataGridViewImageColumn =
                                    DirectCast(DataGridView1.Columns("NombreColumna"),
                                                              DataGridViewImageColumn)
    
            If colImagen IsNot Nothing Then
                colImagen.ImageLayout = DataGridViewImageCellLayout.Stretch
            End If


    Con esto la imagen se adaptará al tamaño de la celda.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 3 de junio de 2016 1:01
  • eres un genio. muchísimas gracias
    viernes, 3 de junio de 2016 1:11
  • AMIGO NECESITO OTRA AYUDA. JEJEJE

    ESTA VEZ QUIERO MOSTRAR EN UN PICTUREBOX LA IMAGEN GUARDADA QUE TENGO EN LA BASE DE DATOS SQL SERVER, PERO QUIERO QUE CUANDO HAGA CLIC EN EL  DATAGRUDVIEW SE MUESTRE LA IMAGEN SEGÚN DONDE HAGA CLIC EN EL REGISTRO. NO SE SI ME HICE ENTENDER. Y MIL GRACIAS POR LAS OTRAS AYUDAS, SIGUEME AYUDANDO ASI JAJAJA

    viernes, 3 de junio de 2016 2:00
  • Hola Como recorrer las filas de un DataGridView,

    Puedes obtener los bytes() de la imagen y mostrarla en el PictureBox cada vez que cambie la selección, mediante el evento SelectionChanged de tu DGV.

     Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) _
              Handles DataGridView1.SelectionChanged
    
            If Not IsDBNull(DataGridView1.CurrentRow.Cells("miColumna").Value) Then
                'Obtenemos los bytes de la celda
                Dim bytes As Byte() = CType(DataGridView1.CurrentRow.Cells("miColumna").Value, Byte())
                'Si no es nulo
                If bytes IsNot Nothing Then
                    Dim ms As New MemoryStream(bytes)
                    PictureBox1.Image = Image.FromStream(ms)
                Else
                    PictureBox1.Image = Nothing
                End If
            End If
    
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 3 de junio de 2016 2:16
  • DE NUEVO MUCHÍSIMAS GRACIAS, LA VERDAD QUE ME HA AYUDADO MUCHISIMO.
    viernes, 3 de junio de 2016 2:21