none
Aplicar una condicion a DataGridView si las celdas son Nulas C# RRS feed

  • Pregunta

  • Hola a todos comunidad,

    Necesito de su apoyo ya que quiero realizar una condicion para un datagridview que importo desde un excel.

    Pasa que lo mando a llamar desde excel pero tengo celdas "Null" y quisiera aplicar una condicion de que si es Nula

    Se pinte la celda de color rojo, me puede pasar que al usuario se le pueda olvidad poner un dato y como se sube siendo Nulo se colore la celda de color rojo.

    Lo estoy haciendo en C# espero y me puedan ayudar.

    viernes, 4 de mayo de 2018 0:01

Respuestas

  • Es el nombre no te va dar error aunque la columna no exista revisa el nombre de la columna ...

    Mira otra forma de hacerlo

     private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                if (e.ColumnIndex == 1)// Index de la columna
                {
                    if(e.Value.ToString()=="") e.CellStyle.BackColor =Color.Red;
                }
            }

    viernes, 4 de mayo de 2018 14:48

Todas las respuestas

  • crea el evento del datagridview "CellFormatting" y haz algo como esto... donde dice nombre es el nombre de la columan a la que le quiere dar el formato..

     private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Nombre")
                {
                    if (e.Value == null)
                    {
                        e.CellStyle.BackColor = Color.Red;
                    }
                }
            }


    viernes, 4 de mayo de 2018 1:24
  • No me funciono amigo,

    asi tengo mi codigo.

    private void button1_Click(object sender, EventArgs e)
            {

                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Filter = "Documentos(*.xls, *.xlsx ) | *.xls; *.xlsx";
                string ruta = "";
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    ruta = ofd.FileName;
                    string strConnnectionOle = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " + ruta + ";Extended Properties = " + '"' + "Excel 12.0 Xml;HDR = YES" + '"';
                    string sqlExcel = "Select * From [asignacion$]";
                    DataTable DS = new DataTable();
                    OleDbConnection oledbConn = new OleDbConnection(strConnnectionOle);
                    try
                    {
                        oledbConn.Open();
                        OleDbCommand oledbCmd = new OleDbCommand(sqlExcel, oledbConn);
                        OleDbDataAdapter da = new OleDbDataAdapter(oledbCmd);




                        da.Fill(DS);
                        dataGridView1.DataSource = DS;
                        //      dataGridView1.AutoResizeColumns();
                        dataGridView1.AutoSizeColumnsMode =
                         DataGridViewAutoSizeColumnsMode.AllCells;



                        // foreach (DataGridViewRow row in dataGridView1.Rows)
                        //{

                        //  foreach (DataGridViewColumn col in dataGridView1.Columns)
                        //{
                        //  DataGridViewCell cell = row.Cells[col.Name];

                        //if (cell.Value == DBNull.Value)
                        //{
                        //  cell.Value = "0";


                        //}
                        //}


                        //}

                        //      int valor01 = 0; //esto es solo un ejemplo
                        //  foreach (DataGridViewRow row in dataGridView1.Rows) //
                        //{

                        //      if (Convert.ToInt32(row.Cells["AsignacionNombre"].Value) == valor01)
                        //  {

                        //    row.DefaultCellStyle.BackColor = Color.Red;
                        //}
                        //else

                        ///  {

                        //                        }
                        //                  }













                        button2.Enabled = !button2.Enabled;

                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
     
          public void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                if (this.dataGridView1.Columns[e.ColumnIndex].Name == "AsignacionNombre")
                {
                    if (e.Value == null) 
                    {
                        e.CellStyle.BackColor = Color.Red;
                    }
                }
            }

    viernes, 4 de mayo de 2018 13:26
  • Puede que no te funcione por que escribiste mal el nombre que recibe la columna del datagridview
    viernes, 4 de mayo de 2018 14:37
  • La columna es "dataGridView1" a parte le ize un debug al codigo y al momento de poner el nombre de la celda no avanza en el proceso o sea solamente lee columnas y cuando es true solo sigue en la misma fila. 

    No se si me explico mas o menos

    viernes, 4 de mayo de 2018 14:42
  • Es el nombre no te va dar error aunque la columna no exista revisa el nombre de la columna ...

    Mira otra forma de hacerlo

     private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                if (e.ColumnIndex == 1)// Index de la columna
                {
                    if(e.Value.ToString()=="") e.CellStyle.BackColor =Color.Red;
                }
            }

    viernes, 4 de mayo de 2018 14:48
  • Este codigo si me funciono pero debo de declarar en el IF todas las columnas a evaluar?
    viernes, 4 de mayo de 2018 15:15
  • Si ... exactamente. Pero si son todas elimina el if de index de columna  
    private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
              
                    if(e.Value.ToString()=="") e.CellStyle.BackColor =Color.Red;
                
            }

    viernes, 4 de mayo de 2018 15:19
  • Ok muchas gracias ya le doy votar
    viernes, 4 de mayo de 2018 15:21