2014-02-13 3 views
1

Я использую цикл foreach, чтобы получить данные из моего datagridview, используя следующий код.Для каждого цикла NullReferenceException

foreach (DataGridViewRow row in this.dataGridMultiSubmit.Rows) 
{ 
    Model = row.Cells[0].Value.ToString(); 
    Module = row.Cells[1].Value.ToString(); 
    Section = row.Cells[2].Value.ToString(); 
    FunctionValue = row.Cells[3].Value.ToString(); 
    NewValue = row.Cells[4].Value.ToString(); 
    DefaultValue = row.Cells[5].Value.ToString(); 
    Description = row.Cells[6].Value.ToString(); 

    MessageBox.Show(Model + Module + Section + FunctionValue + NewValue + DefaultValue + Description); 
} 

Он возвращает все строки правильно в MessageBox, но когда его запустить корыто всех строк это дает мне NullReferenceException было необработанным, как я могу это исправить?

+0

В какой строке возникает ошибка? – waka

+0

Model = row.Cells [0] .Value.ToString(); – PandaNL

+0

Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – nvoigt

ответ

10

Если какой-либо из этих Value имеет значение null, пока вы повторяете все строки, вызов ToString() вызовет исключение.

Попробуйте вместо этого:

Model = Convert.ToString(row.Cells[0].Value); 

Метод Convert.ToString() делает дополнительную проверку.

  • Если значение null, оно возвращает пустую строку.
  • Если это не null, то он выполняет ToString().

Из ваших комментариев, вы также хотите, чтобы убедиться, что вы не перебирать новую строку, которая отображает в нижней части сетки. Существует встроенное свойство, называемое IsNewRow.

Получает значение, указывающее, является ли строка строкой для новых записей.

foreach (DataGridViewRow row in this.dataGridMultiSubmit.Rows) 
{ 
    if (row.IsNewRow) 
     continue;  // skip row, continue on to the next iteration 

    ... 
} 
+0

Это работает, однако он также показывает пустую строку в окне сообщений (строка в datagrid, где вы можете добавить новую строку). – PandaNL

+0

Я не уверен, что вы имеете в виду ... если нет никакой ценности, вы хотите присвоить ей значение по умолчанию? –

+0

В datagridview вы можете добавить новую строку: http://i60.tinypic.com/2egciz8.png – PandaNL

Смежные вопросы