Click here to Skip to main content
15,906,628 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I created a method to automatically generate a combo box in my datagridview, which works 100% now the story looks like this.

I created a table and using Databinding. I am very able to retrieve the values to my Winform and My table Looks Like this

Quote:
|ID| Visit Date | Visitor Name | sign in Time| vehicle Number | Organization | visit type| Reason | ID type | Whom to See |


Then I use this Method below to create an Extra Column which works fine

private void MeetingSelection()
{
    DataGridViewComboBoxColumn cmn = new DataGridViewComboBoxColumn();
    cmn.Items.Add("Please Select");
    cmn.Items.Add("Confirm Appointments");
    cmn.Items.Add("Reschedule");
    dataGridView1.Columns.Add(cmn);
    cmn.HeaderText = "Action";
    cmn.Name = "action";
}


Now I want it to be referenced from another method so that I can use it to make a choice, adding that cell 11 is the table where Action is, And it looks like this:

private void RowsColor()
{
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        string val = dataGridView1.Rows[i].Cells[11].Value.ToString();
        if (val == "Confirm Appointments")
        {
            dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
            MessageBox.Show("Its Red Now!");
        }
        else if (val == "Reschedule")
        {
            dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Yellow;
            MessageBox.Show("Its Yellow Now!");
        }
    }
}


I get this Exception when I try to make it see the Cell from the datagridview

System.NullReferenceException: Object reference not set to an instance of an object.
And it throws exception at this line string val = dataGridView1.Rows[i].Cells[11].Value.ToString(); Now i am thinking if i replace it with string val = dataGridView1.Rows[i].Cells["Action"].Value.ToString(); instead?

What I have tried:

I tried doing something like this
string val = dataGridView1.Rows[i].Cells["Action"].Value.ToString();
Posted
Updated 14-Oct-17 1:25am
Comments
Karthik_Mahalingam 14-Oct-17 8:27am    
does the datagridview contains 12 columns ?
Member 12735615 14-Oct-17 8:57am    
yes, 11 from the database , pulled by datagridview and one created by the meetingselection() above
Karthik_Mahalingam 14-Oct-17 9:11am    
try this and tell what you are getting
var val = dataGridView1.Rows[i].Cells[11];
Member 12735615 14-Oct-17 13:06pm    
doesnt show error there for now, but the error has moved to the if (val == "Confirm Appointments") . i get this error

cannot be applied to operands of type Datagridview and string
Karthik_Mahalingam 14-Oct-17 13:07pm    
put a breakpoint and see what you r getting in val

1 solution

This is one of the most common problems we get asked, and it's also the one we are least equipped to answer, but you are most equipped to answer yourself.

Let me just explain what the error means: You have tried to use a variable, property, or a method return value but it contains null - which means that there is no instance of a class in the variable.
It's a bit like a pocket: you have a pocket in your shirt, which you use to hold a pen. If you reach into the pocket and find there isn't a pen there, you can't sign your name on a piece of paper - and you will get very funny looks if you try! The empty pocket is giving you a null value (no pen here!) so you can't do anything that you would normally do once you retrieved your pen. Why is it empty? That's the question - it may be that you forgot to pick up your pen when you left the house this morning, or possibly you left the pen in the pocket of yesterdays shirt when you took it off last night.

We can't tell, because we weren't there, and even more importantly, we can't even see your shirt, much less what is in the pocket!

Back to computers, and you have done the same thing, somehow - and we can't see your code, much less run it and find out what contains null when it shouldn't.
But you can - and Visual Studio will help you here. Run your program in the debugger and when it fails, VS will show you the line it found the problem on. You can then start looking at the various parts of it to see what value is null and start looking back through your code to find out why. So put a breakpoint at the beginning of the method containing the error line, and run your program from the start again. This time, VS will stop before the error, and let you examine what is going on by stepping through the code looking at your values.

But we can't do that - we don't have your code, we don't know how to use it if we did have it, we don't have your data. So try it - and see how much information you can find out!
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900