2016-09-10 2 views
0

이 코드는 메시지 상자에 나를 나타냅니다. "System.NullReferenceException : 개체 참조가 개체에 인스턴스로 설정되지 않았습니다." 이 솔루션은 다른 질문에서 온 것이지만 작동하지 않습니다 . 실수를 숨기는 사람이 있을지도 모릅니다. 나는 이미 내 의견에 말했듯이 당신이 셀의 값을 읽기 전에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); 
      } 
관련 문제