- 題名: 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”が関係してるとおもうのですが同じ設定をしても
同じに動きになりません。
どこか他に考えられるところはありますでしょうか?