none
Problemas de Paginacion DataGridView para mantener en cada Refresh y contadores de estado RRS feed

  • Pregunta

  • Esto viene en referencia a la pregunta:

    Tiene sus ventajas y desventajas creo la paginacion para casos asi se que todo tiene solucion, aparte de refrescar tiene un contador de cada estado/condicion (Columnas) me cuenta los datos de la primera pagina pero deberia contarme el total no solo de la primera pagina. y si en la pagina 2 hay un cambio de estado no lo considera solo toma en cuenta lo de la primera.

    Por ejemplo si tengo 5 pendientes,8 atendidos y 1 espera en la primera pagina y en la segunda pagina  tengo 1 pendiente, 3 atendidos y 3 en espera el resultado es: 

    5 pendientes,8 atendidos y 1 espera

    cuando deberia ser:

    6 pendientes,11 atendidos y 2 espera.

    Es otro erro visual y bueno no mantiene el refresh de la pagina en la que estoy ojala me entiendan,

    Añado una imagen para que puedan comprender:

    Gracias


    martes, 11 de abril de 2017 16:38

Respuestas

  • Los registros lo hacen otras personas cuando lo necesiten realizar en un día puede haber quizás 20 registros entonces como contabilizo esto? Y a la ves que se va atendiendo se va actualizando el contador y así llevar un control. 

    ¿Crear páginas de datos para un total de 20 filas o quizá algo mas? ¿Hay algo que no estoy entendiendo?

    Noto que muestras los estados de la atención de requerimientos por ticket, donde además estimas 20 o exagerando 50 solicitudes, ¿consideras necesario paginar el resultado?, yo no, como tampoco veo necesario incluir en la vista los requerimientos atendidos, podrías mostrar una vista adicional para ello, dale importancia a los requerimientos por atender.

    En cada carga -intervalo de 30 segundos o los que consideres- utiliza el conjunto de datos que estableces como fuente para obtener el resumen de cuentas por estado.

    OFF-TOPIC: las iniciales en mayúscula se permiten al inicio de una oración, para nombres propios o siglas, olvida la forma indiscriminada de iniciar cualquier palabra en mayúscula: Estamos verificando..., Solicitud aceptada, etc.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    • Marcado como respuesta Javier Roque miércoles, 12 de abril de 2017 1:33
    martes, 11 de abril de 2017 21:09

Todas las respuestas

  • Javier Rocco

    Lo que sucede es que los registros puedes manejar con paginación, si quieres contar solo los de la página activa, entonces cuenta del datagridview(control). Pero si olo que buscas es contar en general, deberás realizar una consulta por estado y eso traer aparte, y cada que impactes volver a refrescar solo el valor de esos contadores.

    Una cosa es la paginación y otra es tus contadores

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    martes, 11 de abril de 2017 16:48
  • Quiero que el contador sea general mi código es asi:

    Pero solo cumple para la pagina activa la que muestro en la imagen quiero que sea general este o no activa la pagina

    Private Sub CuentaStatus()
    
            
            Dim a As Integer = 0
            Dim b As Integer = 0
            Dim c As Integer = 0
    
            For Each r As DataGridViewRow In dgvStatus.Rows
                If r.Cells(7).Value.ToString().Contains("Atendido") Then
                    a = a + 1
                ElseIf r.Cells(7).Value.ToString().Contains("Pendiente") Then
                    b = b + 1
                ElseIf r.Cells(7).Value.ToString().Contains("En Espera") Then
                    c = c + 1
                End If
            Next
            lblAtendido.Text = a
            lblPendiente.Text = b
            lblEspera.Text = c
        End Sub

    y lo otro es si estoy en la pagina 2 al pasar los 15 seg de refresh este se mantenga en la pagina 2 sin embargo se regresa a la 1.

    Ahora si yo agrego la funcion cuentastatus() dentro del LoadPage() y al cambiar de pagina lo hace cuenta los status segun la pagina activa pero quisiera mostrarlos generalizados o que opina?

    Gracias





    martes, 11 de abril de 2017 17:04
  • Javier Rocco

    No comprendo por que motivo recorres toda la grilla para contar todos los estados y mostrarlos, cuando tranquilamente lo traes en la misma consulta del paginado (si al final lo haces de ese paginado), por otro lado el refrescar la pagina, guarda tu numero de pagina como te dije y viaja a la bd con ese numero de pagina para que a tu consulta como parametro.

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    martes, 11 de abril de 2017 18:06
  • Hola, opino que es una mala practica contar el estatus a partir de lo que tengas en el DataGridView.

    Deberias hacer el conteo en tu BD, y despues representar el resultado.

    Los controles de interface grafica, deben utilizarse como eso, como una interface grafica para tu sistema, No deben usarse para controlar la aplicacion, pues para eso debes tener una parte de logica de negocio.

    Saludos.

    martes, 11 de abril de 2017 18:26
  • Estos registros se hacen desde otra aplicacion no es de la misma.

    Entonces si tengo muchos registros como se cuantos hay pendientes y cuantos en espera existen? Filtrar podria ser pero igual se escapa del resto de las paginas.

     El contador dice que tengo en este ejemplo 15 registros por tanto si todos estan ok deberia mostrarme 15 atendidos / cerrados. 

    Aqui el tema mas es x la parte resfresh que hace que no se vea. Porque x cada refresh se regresa a la misma pagina en este caso 1. 

    Los registros lo hacen otras personas cuando lo necesiten realizar en un dia puede haber quizas 20 registros entoces como contabilizo esto? Y a la ves que se va atendiendo se va actualizando el contador y asi llevar un control. Si esta mal eso entonces de que forma debo aplicarlo. Ejemplos.

    martes, 11 de abril de 2017 19:51
  • Los registros lo hacen otras personas cuando lo necesiten realizar en un día puede haber quizás 20 registros entonces como contabilizo esto? Y a la ves que se va atendiendo se va actualizando el contador y así llevar un control. 

    ¿Crear páginas de datos para un total de 20 filas o quizá algo mas? ¿Hay algo que no estoy entendiendo?

    Noto que muestras los estados de la atención de requerimientos por ticket, donde además estimas 20 o exagerando 50 solicitudes, ¿consideras necesario paginar el resultado?, yo no, como tampoco veo necesario incluir en la vista los requerimientos atendidos, podrías mostrar una vista adicional para ello, dale importancia a los requerimientos por atender.

    En cada carga -intervalo de 30 segundos o los que consideres- utiliza el conjunto de datos que estableces como fuente para obtener el resumen de cuentas por estado.

    OFF-TOPIC: las iniciales en mayúscula se permiten al inicio de una oración, para nombres propios o siglas, olvida la forma indiscriminada de iniciar cualquier palabra en mayúscula: Estamos verificando..., Solicitud aceptada, etc.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    • Marcado como respuesta Javier Roque miércoles, 12 de abril de 2017 1:33
    martes, 11 de abril de 2017 21:09
  • Ok. Respecto al off-topic. Es una costumbre mía ortografica lo corregire.

    Respecto a la paginacion al inicio no lo usaba antes pero al no ver una forma de lograr algo lo puse pero me complique mas creo, respecto a dar importancia a los no atendidos suena bastante mejor y lo hare asi. Como seria el pendiente y los de espera. Entonces cuando tenga mayor nunero de atendidos completos edtas filas va ha ir disminuyendo es asi como te capto o estoy mal? 

    Si tengo 10 requerimiento por atender y se veran en la grilla los 10 registros pero si atiendo 8 entonces solo ocupare dos al final esta quedara vacia. Eso si esta bastante mejor. 

    Gracias de verdad que no se me paso por la mente.

    Asi evitare el problema de la paginacion y el de contabilizar.

    martes, 11 de abril de 2017 21:45
  • ...Entonces cuando tenga mayor número de atendidos completos estas filas van a ir disminuyendo..

    Efectivamente, debes enfocar la atención en los eventos que interesan, en este caso los requerimientos pendientes por atender, los requerimientos atendidos los puedes mostrar incluso filtrando por fecha, imagino tres controles RadioButton: [Ver requerimientos por atender] (vista por defecto), [Ver requerimientos atendidos], [Ver todos], lo dejo a tu criterio.

    ...Así evitare el problema de la paginacion y el de contabilizar.

    Quizá el problema radica en que tomas lo primero que tienes en mano sin antes analizar si es la solución adecuada para el problema que presentas, toda decisión pasa por un previo análisis de factibilidad. Con independencia de los datos que muestras en la grilla yo veo interesante que muestres las cuentas de resumen, para dicho caso debes realizar dos consultas: una consulta que recupera los datos de la vista y otra consulta que recupera las cuentas de resumen. Finalmente, considero que un minuto es tiempo prudente para refrescar los datos, antes es innecesario y podría resultar contraproducente.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 11 de abril de 2017 22:37
  • Listo lo que hice es cargar la consulta solo con estado Pendiente y En espera

    "Select * from Tickets where Estado IN 'Pendiente', 'En Espera'"

    Ya con esto no tengo paginación y bueno no es tan necesario el contabilizar ya que abajo me muestra los registros activos, a medida que voy atendiendo los requerimientos esto disminuiran y visualmente si tenia 9 como el ejemplo esto ira decreciendo hasta quedar vacio lo que significa que esta atendidos.

    La columna condicion creo esta por demas mostrar.

    Si quiero saber los ya atendidos estos los puedo visualizar en otra ventana como en ese caso es un reporte con filtro por estados

    Lo que si quisiera saber es como no perder el foco de selección al refrescar claro que esto no me dificulta en nada responder  pero si tuviera muchos registros perdería el foco o la idea de saber a cual estoy dando respuesta. 

    Gracias


    martes, 11 de abril de 2017 22:46
  • OK. no habia visto que habias contestado tomare en cuenta eso y lo aplicare de inmediato sino me olvido.

    Ya he dejado las cuentas, ya hice otra consulta pero no lo he filtrado porque no quiero ver eso como lo trabajaria para la funcion CuentaStatus()? Tendria que poner otro datagridview? no visible?

    Quedaría así:

    Solo falta no perder el foco de seleccion al refrescar la info del dgv pasado el 1min


    martes, 11 de abril de 2017 23:20