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());
}
}
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;
}
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?
Shouldn't you be checking if the cell's value is empty not the size?
if(String.IsNullOrEmpty(cell.Value.ToString()))
continue;
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());
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With