我试图遍历DataGridView
行,然后在我的SQL-DB中发送更新的值。我可以进行更新,但是当我到达行的末尾时程序崩溃,因为它读取了一个空值。
异常:System.NullReferenceException,附加信息:未将对象引用设置为对象的实例。
我有两个问题:
如何让循环在字符串中插入空值?一些 我的列可以发送空值。有些不是,是吗? 有什么办法可以选择哪个?
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);
}
}
答案 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);