none
C# Cómo cambiar de color a una celda y no a la columna entera de un dataGridView RRS feed

  • Pregunta

  • 

    Buenas necesito modificar mi código porque quiero que cuando la columna de stock sea menos o igual que la Cantidad minima que se requiere de un producto esta se ponga en rojo. Aqui les dejo lo que tengo:

    int stocky = 0;
                Int32.TryParse(txtStock.Text, out stocky);
                int cantMinima = 0;
                Int32.TryParse(txtCantidadMin.Text, out cantMinima);


                if (stocky = cantMinima)
                {
                    dataGridView1.Columns[8].DefaultCellStyle.BackColor = Color.Red;
                }
                else 
                {
                    dataGridView1.Columns[8].DefaultCellStyle.BackColor = Color.Beige;
                }

       Disculpen si no es muy elaborado, además esta en una base de datos en access         
    viernes, 11 de agosto de 2017 22:54

Respuestas

  • Deleted
    sábado, 12 de agosto de 2017 1:27
  • private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
            { 
                     foreach (DataGridViewRow row in dataGridView1.Rows)
                     {
                        if (Convert.ToInt32(row.Cells[9].Value.ToString()) <= Convert.ToInt32(row.Cells[7].Value.ToString()))                    
                         row.Cells[9].Style.BackColor = Color.Red;
                     }           
            }
    • Marcado como respuesta Alicia910 martes, 29 de agosto de 2017 16:27
    • Editado Alicia910 martes, 29 de agosto de 2017 16:28
    martes, 29 de agosto de 2017 16:27

Todas las respuestas

  • ¿Cuál es el contexto del código que adjuntas?, ¿se encuentra dentro de un handler de evento?

    Puedes ocupar el evento 'CellFormatting' para pintar las celdas respecto a una condición, por ejemplo:

    private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {            
    	if ((sender as DataGridView).Columns[e.ColumnIndex].Name == "NombreColumna")
    	{
    		int cantMinima;
    		if (Int32.TryParse(txtCantidadMin.Text, out cantMinima))
    		{
    			e.CellStyle.BackColor = Convert.ToInt32(e.Value) <= cantMinima 
    				? Color.Red : (sender as DataGridView).DefaultCellStyle.BackColor;
    		}
    	}
    }


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    sábado, 12 de agosto de 2017 0:25
  • Deleted
    sábado, 12 de agosto de 2017 1:27
  • private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
            { 
                     foreach (DataGridViewRow row in dataGridView1.Rows)
                     {
                        if (Convert.ToInt32(row.Cells[9].Value.ToString()) <= Convert.ToInt32(row.Cells[7].Value.ToString()))                    
                         row.Cells[9].Style.BackColor = Color.Red;
                     }           
            }
    • Marcado como respuesta Alicia910 martes, 29 de agosto de 2017 16:27
    • Editado Alicia910 martes, 29 de agosto de 2017 16:28
    martes, 29 de agosto de 2017 16:27