none
Contar Numero de elimentos bindingsource RRS feed

  • Pregunta

  • buenos dias como estan mi pregunta es la siguiente

    Estoy haciendo una especie de bindingnavigator con botones y label los cuales cumplen la misma funcion, navegan por todos los registros de la tabla de la base de datos, elimina registros agrega registros guarda registrtos mientras los muestra en varios textbox como muestro en la imagen, como pueden ver en ese label utilizo un bindingsource para contar el numero total de elementos en la tabla de la base de datos pero quiero que al hacer click en siguiente o atras o primero o ultimo me vaya contando el registro en el que esta, es decir que si estoy parado en el registro 1 me muestre mas o menos asi: 1/4 si estoy en el registro 2 que sea asi: 2/4 que si estoy en el registro 3 que sea asi 3/4 y asi sucesivamente.

    espero puedan ayudarme, y gracias de antemano.


    Ivan Mauricio Marin

    miércoles, 23 de marzo de 2016 14:34

Respuestas

  • Hola,

    Pero si estás usando BindingSource, tus datos provienen de un DataTable o me equivoco?, porque si es así solo tienes que hacer esto.


    Ese control lo llamaré lblConteo.

                comando.Fill(ds)
                miBS.DataSource = ds.Tables(0)
    
                'Al cargar el form siempre cargará en el primero registro
                'Por eso pongo 1 / Total
                lblConteo.Text = "1 / " & ds.Tables(0).Rows.Count
    
                'Como comienza, obvio no hay elementos antes,
                'deshabilitamos el boton
                btnAnterior.Enabled = False

    Resultado :


    Y para sumar y restar según sea el caso, tienes que obtener el valor en cada uno de los eventos click de ANTERIOR y SIGUIENTE, solo es cuestión de validarlos :

        Private Sub btnSiguiente_Click(sender As Object, e As EventArgs) Handles btnSiguiente.Click
    
            Dim valor As String() = Split(lblConteo.Text, "/")
    
            Dim valorActual As Integer = Convert.ToInt32(valor(0).Trim)
            Dim totalRegistros As Integer = Convert.ToInt32(valor(1).Trim)
            Dim valorSiguiente As Integer = valorActual + 1
    
            If valorSiguiente <= totalRegistros Then
                If valorSiguiente = totalRegistros Then
                    'Deshabilitamos el btn porque ya no hay más registros
                    btnSiguiente.Enabled = False
                End If
    
                'Cambiamos el Texto del LABEL
                lblConteo.Text = valorSiguiente & " / " & totalRegistros
    
                'Habilitamos el boton anterior
                btnAnterior.Enabled = True
            End If
    
            'Aquí nuestro código que se ejecute
    
        End Sub

    Y el ANTERIOR que es casi lo mismo

    Private Sub btnAnterior_Click(sender As Object, e As EventArgs) Handles btnAnterior.Click
    
            Dim valor As String() = Split(lblConteo.Text, "/")
    
            Dim valorActual As Integer = Convert.ToInt32(valor(0).Trim)
            Dim totalRegistros As Integer = Convert.ToInt32(valor(1).Trim)
            Dim valorAnterior As Integer = valorActual - 1
    
            If valorAnterior >= 1 Then
                If valorAnterior = 1 Then
                    'Deshabilitamos el btn porque llegó al registro 1
                    btnAnterior.Enabled = False
                End If
    
                'Cambiamos el Texto del LABEL
                lblConteo.Text = valorAnterior & " / " & totalRegistros
                'Habilitamos el boton siguiente
                btnSiguiente.Enabled = True
            End If
    
            'Aquí nuestro código que se ejecute
        End Sub

    Espero te sirva para que te des una idea.

    Saludos.


    JC NaupaCrispín


    miércoles, 23 de marzo de 2016 18:32

Todas las respuestas

  • Hola,

    Pero si estás usando BindingSource, tus datos provienen de un DataTable o me equivoco?, porque si es así solo tienes que hacer esto.


    Ese control lo llamaré lblConteo.

                comando.Fill(ds)
                miBS.DataSource = ds.Tables(0)
    
                'Al cargar el form siempre cargará en el primero registro
                'Por eso pongo 1 / Total
                lblConteo.Text = "1 / " & ds.Tables(0).Rows.Count
    
                'Como comienza, obvio no hay elementos antes,
                'deshabilitamos el boton
                btnAnterior.Enabled = False

    Resultado :


    Y para sumar y restar según sea el caso, tienes que obtener el valor en cada uno de los eventos click de ANTERIOR y SIGUIENTE, solo es cuestión de validarlos :

        Private Sub btnSiguiente_Click(sender As Object, e As EventArgs) Handles btnSiguiente.Click
    
            Dim valor As String() = Split(lblConteo.Text, "/")
    
            Dim valorActual As Integer = Convert.ToInt32(valor(0).Trim)
            Dim totalRegistros As Integer = Convert.ToInt32(valor(1).Trim)
            Dim valorSiguiente As Integer = valorActual + 1
    
            If valorSiguiente <= totalRegistros Then
                If valorSiguiente = totalRegistros Then
                    'Deshabilitamos el btn porque ya no hay más registros
                    btnSiguiente.Enabled = False
                End If
    
                'Cambiamos el Texto del LABEL
                lblConteo.Text = valorSiguiente & " / " & totalRegistros
    
                'Habilitamos el boton anterior
                btnAnterior.Enabled = True
            End If
    
            'Aquí nuestro código que se ejecute
    
        End Sub

    Y el ANTERIOR que es casi lo mismo

    Private Sub btnAnterior_Click(sender As Object, e As EventArgs) Handles btnAnterior.Click
    
            Dim valor As String() = Split(lblConteo.Text, "/")
    
            Dim valorActual As Integer = Convert.ToInt32(valor(0).Trim)
            Dim totalRegistros As Integer = Convert.ToInt32(valor(1).Trim)
            Dim valorAnterior As Integer = valorActual - 1
    
            If valorAnterior >= 1 Then
                If valorAnterior = 1 Then
                    'Deshabilitamos el btn porque llegó al registro 1
                    btnAnterior.Enabled = False
                End If
    
                'Cambiamos el Texto del LABEL
                lblConteo.Text = valorAnterior & " / " & totalRegistros
                'Habilitamos el boton siguiente
                btnSiguiente.Enabled = True
            End If
    
            'Aquí nuestro código que se ejecute
        End Sub

    Espero te sirva para que te des una idea.

    Saludos.


    JC NaupaCrispín


    miércoles, 23 de marzo de 2016 18:32
  • Oye muchisimas gracias super bien explicado me sirvio de maravilla

    Ivan Mauricio Marin

    miércoles, 23 de marzo de 2016 19:27