2016-09-10 9 views
0

を返すこのコードは、メッセージボックスで私を与える:「System.NullReferenceExceptionを:オブジェクトのインスタンスに設定されていないオブジェクト参照」 は、このソリューションは、別の質問から私からですが、doesnの `tの仕事。誰かが知っているかもしれませんが、間違いはどこに隠れていますか?DataGridViewのはSystem.NullReference例外

private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 

       //Setup list object 
       var llist = new List<MyClass>(); 
       //Loop through datagridview rows 
       foreach (DataGridViewRow row in dataGridView1.Rows) 
       { 
        var obj = new MyClass() 
        { 
         Datum = row.Cells["Datum"].Value.ToString(), 
         Nachricht = row.Cells["Nachricht"].Value.ToString() 
        }; 
        llist.Add(obj); 
       } 
       //Write out JSON file 
       string export = JsonConvert.SerializeObject(new { types = llist }, Formatting.Indented); 
       File.WriteAllText(@"C:\test\upload" + "\\" + "export.json", export); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.ToString()); 
      } 



     } 
     public class MyClass 
     { 
      public string Datum { get; set; } 
      public string Nachricht { get; set; } 

     } 
+0

このエラーが発生した行を正確に知ることができますか?グリッドセルからデータを読み込んでいるラインで推測していますが、値を読み取る前に 'null'チェックを入れてください。 – sallushan

+0

@sallushan例外は、行" var obj = new MyClass() – Francis

+0

"MyClass"コードを表示します。 –

答えて

1

私はすでにあなたがセルから値を読む前にチェックnullを追加し、私のコメントで言ったように。

  //Setup list object 
      var llist = new List<MyClass>(); 
      //Loop through datagridview rows 
      foreach (DataGridViewRow row in dataGridView1.Rows) 
      { 
       // ------------------ changed code ---------------------- 
       string datNum = null;  // by-default we say it will be null 
       string nachricht = null; // same with other field 
       // now we will check if cell does NOT have a null value 
       if (row.Cells["Datum"].Value != null) 
        // then we will put it in a variable 
        datNum = row.Cells["Datum"].Value.ToString(); 
       // similarly for other variable as well 
       if (row.Cells["Nachricht"].Value != null) 
        nachricht = row.Cells["Nachricht"].Value.ToString(); 
       var obj = new MyClass() 
       { 
        Datum = datNum, 
        Nachricht = nachricht 
       }; 
       // ------------------------------------------------------ 
       llist.Add(obj); 
      }