datagridviewにデータをバインドした時のこと。データグリッドへバインドされたテーブルのセルの値を変更しようと思って文字列を挿入しようとしたら
System.ArgumentException: 入力文字列の形式が正しくありません。列 initial_money に <-11809 -11809> を格納できませんでした。 必要な型は Double です。 —> System.FormatException: 入力文字列の形式が正しくありません。
(省略)
というエラーが出て挿入することができなかった。エラーの意味はわかるけれど、わからないのはいつの間にか列の型がdoubleという風に指定されていたということ。これは一体いつの間に決まってしまったのだろう。
そもそもデータグリッドの列に型が存在することをこの時に始めて知った。文字列とか数値とか画像とかいろいろ入れることができるのでobject型のようなものが設定されているかと思ったらもっと厳密に文字列ならstring型、数値ならdouble型という風にできている模様。
この今回のエラーのdouble型じゃないから数値を格納できないという、doubleという型が勝手に決められてしまったことが一番わからない。私はdouble型なんてどこにも使ってないのだから。
データグリッドにバインドした時に列の値が数値ならdouble型と判定されてしまうのか、それともdatasetを作成した時にそれは判定されてしまうのか、それとも何か他の知らないルールがあるのか。調査中。
その後
こんなエラーが発生した。
プロバイダで Double 値を特定できませんでした。たとえば、行が作成されたときに Double 列の既定値が使用できない状態で、使用者が新しい Double 値を設定していなかった場合が考えられます。