Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Foreach Loop - Continue Issue

I have a problem with a continue statement in my C# Foreach loop.

I want it to check if there is a blank cell in the datagridview, and if so, then skip printing the value out and carry on to check the next cell.

Help appreciated greatly.

Here is the code:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (cell.Size.IsEmpty)
        {
            continue;
        }
        MessageBox.Show(cell.Value.ToString());
    }
}
like image 359
Goober Avatar asked May 02 '09 16:05

Goober


4 Answers

Well, you're currently checking whether the cell's size is zero. In a grid, every cell in a column has the same width and every cell in a row has the same height (typically, anyway).

You want to be checking based on the value of the cell. For example:

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

Tweak this for any other representations of "empty" values that you're interested in. If there are lots, you might want to write a specific method for this, and call it in the check:

if (IsEmptyValue(cell.Value))
{
    continue;
}
like image 158
Jon Skeet Avatar answered Sep 27 '22 20:09

Jon Skeet


You don't need to use the continue keyword here, you could just do this:

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
    }
}

Also, you're checking whether the size of the cell is empty. Is this really what you want to do?

What errors are you getting?

like image 43
Rik Avatar answered Sep 27 '22 19:09

Rik


Shouldn't you be checking if the cell's value is empty not the size?

if(String.IsNullOrEmpty(cell.Value.ToString()))
    continue;
like image 37
Pat Avatar answered Sep 27 '22 21:09

Pat


i want to read only cell[1] data...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());
    }
}
like image 28
harish Avatar answered Sep 27 '22 21:09

harish