none
Necesito pintar y despintar, filas en el datagridview RRS feed

  • Pregunta

  • Me gustaria saber como despintar la fila seleccionada en mi datagridview .

    Por ejemplo al poner el numero de documento y después al tocar buscar automáticamente se pinta la fila con el color correspondiente a la fecha de expiracion. 

    el probema esta cuando busco de nuevo con otro documento y no se me despinta el anterior

    2) tengo otra pregunta, como hago para que apenas abra el form se marquen las filas dependiendo la fecha de vencimiento. por que intente y me agarra solamente la primera columna

    private void obexpiracion()
            {
                string feSQL = "select dni, datediff(feexp, curdate()) AS expiracion from gimnasio.cliente where dni=" + textdni.Text;
                dt = new DataTable();
                objDatos = new DatosMySQL();
    
                dt = objDatos.traerDataTable(feSQL, cadCn);
                foreach (DataGridViewRow fila in dataGridView1.Rows)
                {
                    if (fila.Cells[3].Value.ToString() == textdni.Text)
                    {
    
                        if (Convert.ToInt32(dt.Rows[0]["expiracion"].ToString()) < 0)
                        {
                            fila.DefaultCellStyle.BackColor= Color.IndianRed;
                        }
                        else if (Convert.ToInt32(dt.Rows[0]["expiracion"].ToString()) == 0)
                        {
                            fila.DefaultCellStyle.BackColor = Color.GreenYellow;
                        }
                        else
                        {
                            fila.DefaultCellStyle.BackColor = Color.LimeGreen;
                        }
    
                    }
                   
                }
                
            }


    • Editado Facu D jueves, 12 de octubre de 2017 3:08 POR LA IMAGEN
    martes, 10 de octubre de 2017 19:43

Respuestas

  • Siguiendo el código que adjuntas puedes hacer dos cosas:

    - Antes de iterar por las filas del control DataGridView (foreach(...) {...}) puedes establecer el color de fondo para las celdas de todas las filas: dataGridView1.RowsDefaultCellStyle.BackColor = Color.White;

    - Si el valor de la celda de índice 3 no es igual al valor que contiene el cuadro de texto 'textdni' puedes pintar la fila de color blanco: if (fila.Cells[3]...) {...} else { fila.DefaultCellStyle.Backcolor = Color.White }


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    martes, 10 de octubre de 2017 20:07

Todas las respuestas

  • No necesitas usar defaulcellstyle , te aconsejo darle por diseñador al deafult un color y solo 

    darle un fullrowselect asi cuando busques solo pintaras el row o los rows dependiendo ala busqueda . 

    Estas con VS cierto?

    Puedes subir un pantallaso ? de tu tabla en ejecucion? 


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!


    martes, 10 de octubre de 2017 19:54
  • Siguiendo el código que adjuntas puedes hacer dos cosas:

    - Antes de iterar por las filas del control DataGridView (foreach(...) {...}) puedes establecer el color de fondo para las celdas de todas las filas: dataGridView1.RowsDefaultCellStyle.BackColor = Color.White;

    - Si el valor de la celda de índice 3 no es igual al valor que contiene el cuadro de texto 'textdni' puedes pintar la fila de color blanco: if (fila.Cells[3]...) {...} else { fila.DefaultCellStyle.Backcolor = Color.White }


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    martes, 10 de octubre de 2017 20:07