无法循环DataGridView null值

时间:2015-02-17 17:01:28

标签: c# datagridview

我试图遍历DataGridView行,然后在我的SQL-DB中发送更新的值。我可以进行更新,但是当我到达行的末尾时程序崩溃,因为它读取了一个空值。

  

异常:System.NullReferenceException,附加信息:未将对象引用设置为对象的实例。

我有两个问题:

  • 为什么我不能用if返回方法(见下文) 声明?
  • 如何让循环在字符串中插入空值?一些 我的列可以发送空值。有些不是,是吗? 有什么办法可以选择哪个?

    private void editEmployeeDGV()
    {
        foreach (DataGridViewRow row in employeeDataGridView.Rows)
        {
            if (row.Cells["SocialSNColumn"].Value.ToString() == null)
            {
                return;
            }
    
            string SocialSN = row.Cells["SocialSNColumn"].Value.ToString();
            string Name = row.Cells["nameColumn"].Value.ToString();
            string Surname = row.Cells["SurnameColumn"].Value.ToString();
            string Email = row.Cells["EmailColumn"].Value.ToString();
            string TelNr = row.Cells["TelNrColumn"].Value.ToString();
            string Gender = row.Cells["GenderColumn"].Value.ToString();
            string ECName = row.Cells["ECNameColumn"].Value.ToString();
            string ECNumber = row.Cells["ECNumberColumn"].Value.ToString();
    
            cont.editEmployeeDGV(SocialSN, Name, Surname, Email, TelNr, Gender, ECName, ECNumber);
        }
    }
    

1 个答案:

答案 0 :(得分:1)

异常的原因是您尝试在ToString()属性上调用Value方法,但它是null

if (row.Cells["SocialSNColumn"].Value.ToString() == null)
{
    return;
}

没有理由先投射到一个字符串;只测试null

if (row.Cells["SocialSNColumn"].Value == null)
{
    return;
}

如果其他任何Value属性为null,您的其他代码行都会冒同样的风险。为避免这些问题,您可能希望将ToString()替换为Convert.ToString()方法,该方法将null替换为空字符串:

string SocialSN = Convert.ToString(row.Cells["SocialSNColumn"].Value);
string Name = Convert.ToString(row.Cells["nameColumn"].Value);