Я пытаюсь преобразовать мой DataGridView dgvInput
от Form1
к DataTable
в другом классе Queries
в рамках подготовки к SqlBulkCopy
. Я передаю dgvInput
методу SaveAll
в моем классе Queries
с параметром 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
. Тем не менее, я все еще получаю исключение. Из того, что я исследовал, петли Nested для СЛЕДУЕТ делать правильную работу.
Как я могу это решить?
либо 'dr.Cells [i]', либо 'dr.Cells [i] .Value' является' null'. Вероятно, это 'dr.Cells [i]'. Использовать нулевой условный оператор. – Ian
Спасибо! 'dr.Cells [i] .Value' является' null'. В частности, первая строка, которую он генерирует, равна null. Могу ли я как-то удалить эту нулевую строку? – Hexxed
@Ian NVM. Я только узнал, почему его нулевой. моя последняя строка пуста. Просто установите 'AllowUserToAddRows = false'. Спасибо за помощь. Пожалуйста, напишите свой ответ ниже. Поэтому я мог бы принять это. – Hexxed