none
Como puedo cambiar el color de las filas de un datagridview comparando dos columnas, probe con el CellFormating, pero solo puedo compara usando una celda RRS feed

Respuestas

  • Hola 

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te recomiendo probar el siguiente código

     

               foreach (DataGridViewRow row in dataGridView1.Rows) //Examinamos cada fila dentro del DataGrid             {                 string column1 = dataGridView1.Rows[0].Cells[3].Value.ToString(); //Almacenamos el dato de la celda que ocupamos comparar //(Depende de usted la posicion del dato en la tabla)

                    string column2 = dataGridView1.Rows[0].Cells[4].Value.ToString(); //Almacenamos el dato de la celda que ocupamos comparar                                                                                   //(Depende de usted la posicion del dato en la tabla)

                    if (column1 != column2) //Haces tu condición, en este caso si son distintos los datos que marque toda la fila de color ROJO                 {                     row.DefaultCellStyle.BackColor = Color.Red;                     row.DefaultCellStyle.ForeColor = Color.White;                 }                 else //SINO significa que están bien, entonces de color verde!                 {                     row.DefaultCellStyle.BackColor = Color.Green;                     row.DefaultCellStyle.ForeColor = Color.White;                 }             } //Fin del ciclo


    Nota: Acá todo está en el evento Load para que una vez que se muestran los datos ya vengan con el formato condicional. Quedo atento a cualquier duda.

    Gracias por usar los foros de MSDN.

     

    Oscar Navarro

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.



    viernes, 6 de marzo de 2020 19:44
    Moderador

Todas las respuestas

  • Hola   ruben97

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma,  te comento que para  que la comunidad de foros te pueda asesorar mejor, es necesario que nos compartas el form/code que estás desarrollando

     

     

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 6 de marzo de 2020 17:22
    Moderador
  • private void tabla_almacen_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                
                if (tabla_almacen.Columns[e.ColumnIndex].Name == "EXISTENCIA")
                {
                    if (Convert.ToInt32(e.Value) <= 10)
                    {
                        tabla_almacen.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.SeaGreen;
                    }
                }
    Lo que yo quiero es comparar el valor de existencia con el valor de otra columna de la tabla almacen, de hecho con la que le corresponde en esa fila, y no con un valor cualquiera definido en el codigo como es el caso
    viernes, 6 de marzo de 2020 18:31
  • Hola 

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te recomiendo probar el siguiente código

     

               foreach (DataGridViewRow row in dataGridView1.Rows) //Examinamos cada fila dentro del DataGrid             {                 string column1 = dataGridView1.Rows[0].Cells[3].Value.ToString(); //Almacenamos el dato de la celda que ocupamos comparar //(Depende de usted la posicion del dato en la tabla)

                    string column2 = dataGridView1.Rows[0].Cells[4].Value.ToString(); //Almacenamos el dato de la celda que ocupamos comparar                                                                                   //(Depende de usted la posicion del dato en la tabla)

                    if (column1 != column2) //Haces tu condición, en este caso si son distintos los datos que marque toda la fila de color ROJO                 {                     row.DefaultCellStyle.BackColor = Color.Red;                     row.DefaultCellStyle.ForeColor = Color.White;                 }                 else //SINO significa que están bien, entonces de color verde!                 {                     row.DefaultCellStyle.BackColor = Color.Green;                     row.DefaultCellStyle.ForeColor = Color.White;                 }             } //Fin del ciclo


    Nota: Acá todo está en el evento Load para que una vez que se muestran los datos ya vengan con el formato condicional. Quedo atento a cualquier duda.

    Gracias por usar los foros de MSDN.

     

    Oscar Navarro

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.



    viernes, 6 de marzo de 2020 19:44
    Moderador
  • muchas gracias, ahora que lo veo, me doy cuenta, lo probé y me funciono correctamente. Muchas gracias por su ayuda, excelentepor su parte.

    Saludos

    viernes, 6 de marzo de 2020 21:20
  • una duda, el codigo funciona correctamente pero no lo ejecuta en el Load, sin embargo lo puse dentro de un button_Click y si me funciona, sabe esto porque podria ser, que solucion tendria
    • Editado ruben97 sábado, 7 de marzo de 2020 1:48
    sábado, 7 de marzo de 2020 1:40