Question

I'm checking the cell values of cells of a column that might or not be empty/null so I needed something to avoid a NullReferenceException.

How do I do that since even with the IsNullOrWhiteSpace() and IsNullOrEmpty() I get that exception somehow.

Here's part of the code I'm using:

s = "Total = " + dataGridView1.Rows[0].Cells.Count +
    "0 = " + dataGridView1.Rows[0].Cells[0].Value.ToString() +
    "/n  1 = " + dataGridView1.Rows[0].Cells[1].Value.ToString() +
    "/n  2= " + dataGridView1.Rows[0].Cells[2].Value.ToString() +
    "/n  3 = " + dataGridView1.Rows[0].Cells[3].Value.ToString() +
    "/n  4= " + dataGridView1.Rows[0].Cells[4].Value.ToString() +
    "/n  5 = " + dataGridView1.Rows[0].Cells[5].Value.ToString() +
    "/n  6= " + dataGridView1.Rows[0].Cells[6].Value.ToString() +
    "/n  7 = " + dataGridView1.Rows[0].Cells[7].Value.ToString();

    if (string.IsNullOrEmpty(dataGridView1.Rows[0].Cells[8].Value.ToString()))
    {

    }
    else
    {
        s += "/n  8 = " + dataGridView1.Rows[0].Cells[8].Value.ToString();
    }

I've tried those methods I've tried putting it ==null, I've tried !=null. What else is there or what am I doing wrong exactly and how do I do it right?

Was it helpful?

Solution

the are a lot of places you code could throw that exception ..

dataGridView1.Rows[0]  //here
             .Cells[0] //here
             .Value    //and here
             .ToString() 

I belive you don't need the ToString() just type:

"... "+ dataGridView1.Rows[0].Cells[0].Value

in your ifstatement do this:

if (string.IsNullOrEmpty(dataGridView1.Rows[0].Cells[8].Value as string))

OTHER TIPS

Many people don't understand how to diagnose a NullReferenceException. Consider the following:

dataGridView1.Rows[0].Cells[3].Value.ToString()

Many parts of this could be null. It's the same thing as

var a = dataGridView1.Rows;
var b = a[0];
var c = b.Cells;
var d = c[3];
var e = d.Value;
var f = e.ToString();

If a is null, then a[0] will throw a NullReferenceException. If b is null, then b.Cells will throw a NullReferenceException, etc.

You simply have to figure out which of these is null in your particular situation. The simplest way is to use the debugger. Set a breakpoint before the line that throws the exception. Then hover the mouse over various parts of the expression to see which are null, or use the "Watch" window to enter parts of the expression.

When you find a null, you can stop looking for your NullReferenceException.

You can add an extra line of code to check and handle the null case.

var value = dataGridView1.Rows[0].Cells[0].Value;
string s = (value == null ? string.Empty : value.ToString());

If value is null, then ToString() will not be evaluated and the program cannot throw NullReferenceException.

I think in dataGridView1.Rows[0].Cells[8].Value.ToString() you will get a NullReferenceException if the Value is null. So you should check for dataGridView1.Rows[0].Cells[8].Value != null and then you can convert it to a string

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top