我试图将我的datagridview dgvInput
从Form1
转换为另一个类Queries
中的DataTable
以准备SqlBulkCopy
。我将dgvInput
传递给我的中的方法SaveAll
,其参数为DataGridView dgv
。将未绑定的DataGridView转换为DataTable
Form1中:
public void convert2DT(DataGridView dgv)
{
Queries qry = new Queries();
qry.SaveAll(dgvInput);
}
类:
class Queries {
public void SaveAll(DataGridView dgv)
{
foreach (DataGridViewRow dr in dgv.Rows)
{
//Create table and insert into cell value.
DataRow dataRow = dt.NewRow();
for (int i = 0; i < noOfColumns; i++)
{
if (i == 0)
>> { dataRow[i] = DateTime.Parse(dr.Cells[i].Value.ToString()); }
else if (i == 7)
{ dataRow[i] = int.Parse(dr.Cells[i].Value.ToString()); }
else
{ dataRow[i] = dr.Cells[i].Value.ToString(); }
}
dt.Rows.Add(dataRow);
}
//SqlBulkCopy Codes
}
}
我上线>>
得到的NullReferenceException。
错误消息:对象引用未设置为对象的实例。 我曾尝试将New
设置为dgv
。不过,我仍然得到一个例外。从我研究过的嵌套for循环中,应该做好工作。
我该如何解决这个问题?
“dr.Cells [i]'或'dr.Cells [i] .Value'为'null'。可能是'dr.Cells [i]'。使用空条件运算符。 – Ian
谢谢! 'dr.Cells [i] .Value'是'null'。具体来说,它生成的第一行是空的。我可以以某种方式删除该空行? – Hexxed
@ Ian NVM。我刚刚发现为什么它是空的。我最后一行是空白的。只需设置'AllowUserToAddRows = false'。感谢您的帮助。请在下面发布您的答案。所以我可以接受它。 – Hexxed