Pregunta

Tengo un problema con una declaración de continuación en mi bucle Foreach de C #.

Quiero que verifique si hay una celda en blanco en la vista de datos, y si es así, omita la impresión del valor y continúe para verificar la siguiente celda.

Ayuda muy apreciada.

Aquí está el código:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (cell.Size.IsEmpty)
        {
            continue;
        }
        MessageBox.Show(cell.Value.ToString());
    }
}
¿Fue útil?

Solución

Bueno, actualmente estás verificando si el tamaño de la celda es cero. En una cuadrícula, cada celda de una columna tiene el mismo ancho y cada celda de una fila tiene la misma altura (normalmente, de todos modos).

Desea realizar la comprobación en función del valor de la celda. Por ejemplo:

if (cell.Value == null || cell.Value.Equals(""))
{
    continue;
}

Ajusta esto para cualquier otra representación de " vacío " valores en los que está interesado. Si hay muchos, es posible que desee escribir un método específico para esto y llamar al cheque:

if (IsEmptyValue(cell.Value))
{
    continue;
}

Otros consejos

No necesita usar la palabra clave continue aquí, solo puede hacer esto:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (!cell.Size.IsEmpty) MessageBox.Show(cell.Value.ToString()); // note the ! operator
    }
}

Además, está comprobando si el tamaño de la celda está vacío. ¿Es esto realmente lo que quieres hacer?

¿Qué errores obtienes?

¿No deberías estar comprobando si el valor de la celda está vacío, no el tamaño?

if(String.IsNullOrEmpty(cell.Value.ToString()))
    continue;

quiero leer solo los datos de la celda [1] ... olny

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells[1])
    {
       if (cell[1].Value == null || cell.Value.Equals(""))
{
    continue;
}

        MessageBox.Show(cell[1].Value.ToString());
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top