- 題名: DataGridViewのDataErrorイベントについて
- 日時: 2009/04/09 15:52:32
- ID: 24388
- この記事の返信元:
- (なし)
- この記事への返信:
- [24389] Re[1]: DataGridViewのDataErrorイベントについて2009/04/10 10:50:54
- ツリーを表示
■No24388に返信(RENさんの記事) 「こんな現象が起こる」ことはわかりましたが、 現象を起こす原因があると思われるDataErrorイベントに どんなコードが書かれているのかわからないため正直なんともいえません。 とりあえず現在の質問文から読み取れる範囲内で、 以下の環境にて試してみましたが…… ・VS2005:C#(こちらで試しやすいので…。VBでも恐らく処理内容は同じです。) ・DataGridView×1 DataSet×1:内部に2列だけのDataTable(TableAdapterではない) ・DataGridViewの設定はデフォルトのまま ・DataTableの列は質問内容どおりにAllowDBNull = False、Nullvalue = Throw Exception ・バインドは画面Load時にDataGridViewのDataSourceに直に設定 ・読み込んで表示した直後に、任意のセル内のデータをNULLにすることでDataErrorを発生させる ・DataErrorイベントの内容は以下の通り (※この掲示板のホームであるどぼん!さんのTIPS http://dobon.net/vb/dotnet/datagridview/dataerror.html から拝借させて頂きました) private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) { if (e.Exception != null) { MessageBox.Show(this, string.Format("({0}, {1}) のセルでエラーが発生しました。\n\n説明: {2}", e.ColumnIndex, e.RowIndex, e.Exception.Message), "エラーが発生しました", MessageBoxButtons.OK, MessageBoxIcon.Error); } } 少なくとも以上の条件においては、 片方の列のDataTypeをDecimalからStringに変えただけでエラーが発生しなくなることはなく、 また両方ともDecimalの状態でもエラーを補足することができました。 一度、本番用とは別に 現象を追うための最低限のコントロールを置いたテスト用のプログラムを組んで 「どこでどんな処理を入れたときに」その現象がおきたか、を段階的に確認してみると良いかと思います。
分類:[.NET]
お世話になります。
DataGridViewを使って、入力された値が数値以外なら(=null)、DataErrorイベント
で拾ってエラーと表示させようとしているのですが、なぜか同じプロパティ
の設定でも、DataErrorイベントが拾えないセルが出ています。
DataGridViewには、DBを読込む際のデータセットがバインドしてあります。
データセットの数値はNsu1とNsu2で設定してあり、Nsu2の方は、思いとおり
nullならばエラーを拾ってくれます。Nsu1がうまく動いてくれません。
二つとも、”AllowDBNull”がFalse、”DataType”がSystem.Decimal”
”NullValue”は(Throw exception)です。
Nsu2の”DataType”をSystem.stringに変えるとエラーは拾えなくなります。
”DataType”が関係してるとおもうのですが同じ設定をしても
同じに動きになりません。
どこか他に考えられるところはありますでしょうか?