2017-01-10 4 views
2

DataGridViewからデータを取得し、そのデータを後でグリッドにロードできるようにtxtファイルに保存しようとしています。今のところ、それは、ファイルを保存しますが、エラーが原因"datagridviewcell型の値を文字列に変換できません" vb.net

「タイプのDataGridViewCellの値が文字列に変換することができません」または

「type'Systemの未処理の例外のファイルへの書き込みはありません。 FormatException 'がmscorlib.dllで発生しました 追加情報:入力文字列が正しい形式ではありませんでした。

私は何をすべきか分かりませんし、どこでも解決策を見つけることができませんでした。

Private Sub SaveButton_Click(sender As Object, e As EventArgs) Handles SaveButton.Click 
    'SGD is my save file dialog box 
    SGD.ShowDialog() 
    Using writer As New StreamWriter(SGD.FileName) 
     For Each row As DataGridViewRow In QAfield.Rows 
      writer.WriteLine(row.Cells.Item("AgentColumn").ToString, row.Cells.Item("ScoreColumn"), row.Cells.Item("PassColumn"), row.Cells.Item("FailColumn")) 

     Next 
    End Using 
End Sub 
+2

row.Cells.Item(「AgentColumn」)...それを文字列にキャストする前にこのvalueをチェックすることになる。Value.ToStringはあなたが後にしているものと考えられます。 – Bugs

+0

[C# - DataGridViewをファイルに保存して読み込む]の重複の可能性があります(http://stackoverflow.com/questions/2952161/c-sharp-saving-a-datagridview-to-file-and-loading) – Slai

答えて

2

あなたはセル自体はむしろDataGridViewCellvalueにアクセスしていないため、エラーがあなたがToStringを追加すると、あなたがしようとしている。このリターンはDataGridViewCell

row.Cells.Item("AgentColumn") 

だ...

ですこのオブジェクトを取って文字列に変換すると、それはうまく動作せず、正確なエラーが表示されます。 ValueがNULLの場合

row.Cells.Item("AgentColumn").ToString 

は、あなたがNULLをキャストすることはできませんのでToStringを追加するとき、それは例外がスローされます、別のノートにも

row.Cells.Item("AgentColumn").Value.ToString() 

... value自体にアクセスする必要があります空の文字列に変換します。私は

If row.Cells.Item("AgentColumn").Value IsNot DBNull.Value Then .... 
+0

ありがとうございます多分! – jdwee

+0

ようこそ、私はあなたを助けることができてうれしい – Codexer

関連する問題