对象引用未设置为访问DataGridView的对象的实例

时间:2013-03-25 07:44:59

标签: c# exception-handling datagridview ado.net nullreferenceexception

我想将数据从DataGridView传输到另一个,这是我的代码示例:

private void btnShow(object sender, EventArgs e)
{
    DataTable dtr = new DataTable();
    dtr.Columns.Add(new DataColumn("Name", typeof(string)));
    dtr.Columns.Add(new DataColumn("Label", typeof(string)));
    dtr.Columns.Add(new DataColumn("Domain", typeof(string)));

    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        DataRow erow = dtr.NewRow();
        erow[0] = dataGridView1.Rows[i].Cells[0].Value.ToString();
        erow[1] = dataGridView1.Rows[i].Cells[1].Value.ToString();
        erow[2] = dataGridView1.Rows[i].Cells[2].Value.ToString();
        dtr.Rows.Add(erow);
    }

    dataGridView2.DataSource = dtr;
 }

我仍在第11行收到NullReferenceException

1 个答案:

答案 0 :(得分:2)

您的一个或多个单元格包含NULL值 您读取该NULL值,然后尝试在NULL引用上调用方法ToString() 当然,这会因提到的异常而失败

所以,如果你想在空

的情况下存储一个空字符串
erow[0] = dataGridView1.Rows[i].Cells[0].Value == null ? 
          string.Empty : dataGridView1.Rows[i].Cells[0].Value.ToString();
erow[1] = dataGridView1.Rows[i].Cells[1].Value == null ? 
          string.Empty : dataGridView1.Rows[i].Cells[1].Value.ToString();
erow[2] = dataGridView1.Rows[i].Cells[2].Value == null ? 
          string.Empty : dataGridView1.Rows[i].Cells[2].Value.ToString();;