質問: "3" End If とも書いてみたのですが、 「型 'System.InvalidCastException' のハンドルされていない例外が Microsoft.VisualBasic.dll で発生しました。追加情報:演算子 '<>' は 型 'DBNull' と 文字列 "2" に対して定義されていません。」 と、怒られます。 CellClickのイベントはたまたま調べていて見つけたので使ってみたのですが、そもそもこれが希望の処理に対して適切なのかわかりません。 上記の処理のあとに、保存ボタンを押下することで、変更内容や追加内容をDBのテーブルへ反映させる処理をしようと思っているので、保存ボタンを押した際にフラグ3が反映する方法もありそうなのですが、いかんせん書きぶりがひらめきません。 GridViewの処理記述に手を加えて、何とか希望通りに動くよう、何かヒントをご教示いただけませんでしょうか。 よろしくお願いいたします。
回答: ソースコード的になんとなくVB.NETかな?と思ったので、 VB.NETだろうという形で、答えさせていただきます。 (ASP.NETとかもあるだろ!とか言わないで...) 原因ですが、間違いなく ``` グリッドビューでセルの値が変更された場合、更新列に3を表示する Private Sub DataDridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataDridView1.CellClick If e.RowIndex >= 0 Then DataDridView1.Rows(e.RowIndex).Cells(4).Value = "3" End If ``` これが原因です。 あくまでも、考え方というか、私だったらこうやるかなというやり方ですと、 SQLサーバー(データベース)から取得時にDataTableを使い、 それを、GridViewへ突っ込みます。 そして、GridView上で変更された値と、DataTable上の値を比較し、 変更されていた場合、その列の対象の行のみ更新(UPDATE)するという処理にします。 (VB.NETだったらの話です) (ASP.NETではそもそもDataTableが使えなかった覚えがあるので...うろ覚え)