Detectar el cambio de valor en una columna de un datagridview

Respondida Detectar el cambio de valor en una columna de un datagridview

  • miércoles, 02 de mayo de 2012 15:47
     
     

    Tengo un datagridview al que voy añadiendo filas cada vez que hago un cálculo. Algunas celdas de la fila cambian de valor y otras no y las que cambian no son siempre las mismas. ¿Cómo puedo detectar, en una columna que ese valor ha cambiado con respecto a la fila anterior?. Quiero detectar el cambio para cambiar el color de fondo de la nueva celda si tiene un valor diferente a la de la fila anterior.

    Muchas gracias

Todas las respuestas

  • miércoles, 02 de mayo de 2012 15:53
    Moderador
     
     

    ¿Cómo puedo detectar, en una columna que ese valor ha cambiado con respecto a la fila anterior?.

    como seria eso de la fila anterior ? por anterior apuntas a la misma fila pero original o a la fila de arriba de la que editas

    si es la misma fila podrias usar el

    http://social.msdn.microsoft.com/Forums/es/vbes/thread/e350cde4-b2a6-42ad-8a29-ed0f56728eab

    podrias usar los eventos CellBeginEdit y CellEndEdit para detectar cuado cambia un valor y alli mismo cambiar el color


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


  • miércoles, 02 de mayo de 2012 16:32
     
     
    Me refiero a la fila de arriba de la que edito
  • miércoles, 02 de mayo de 2012 17:14
    Moderador
     
     Respondida Tiene código

    podrias usar los eventos que menciono, especialmente el CellEndEdit

    pero para validar y acceder a la fila superior usarias

    e.RowIndex

    restandole uno

    DataGridView1.Rows(e.RowIndex -1)

    por supuesto valida sino es la priemr fila la que editas, digo si el

    e.RowIndex -1 no toma un valor negativo o si e.RowIndex = 0 es la primer fila

    tomando la fila superior y comparando con la que estas editando

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Manuel Roca miércoles, 02 de mayo de 2012 23:31
    •  
  • miércoles, 02 de mayo de 2012 22:03
     
     

    Estoy haciendo esto

                If Convert.ToDouble(DataGridView1.Rows(rowindex(2)).Cells(2).Value) <> Convert.ToDouble(DataGridView1.Rows(rowindex(2) - 1).Cells(2).Value) Then
                    DataGridView1.Rows(rowindex(2)).Cells(2).Style.BackColor = Color.Yellow
                End If

    para detectar que el valor de una celda ha cambiado con respecto a la celda situada en la fila superior. ¿Qué estoy haciendo mal?, porque me da el error

    No se controló ArgumentOutOfRangeException El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.
    Nombre del parámetro: index

               

               

  • miércoles, 02 de mayo de 2012 22:20
    Moderador
     
     

    esta pregunta no se relaciona con esta otra

    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/8cbe0eeb-71ca-4611-a03e-e7a933e4a42c

    recuerda cerrar un hilo antes de abrir otro, sino es dificil dar seguimiento

    ---------------

    No se controló ArgumentOutOfRangeException El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.Nombre del parámetro: index

    que seria rowindex(2)  ? de donde sale ese arrayen que evento es que defines ese codigo ? recuerda mencionar el contexto compelto para saber dodne lo utilizas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina