Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
datagridviewのエラー処理に関して
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30459#CommentId83798
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2020/3/11 09:54:24
DataSet の EnforceConstraints プロパティをオフにした状態であれば、
その下の DataTable が制約違反な状態…たとえば主キー重複があっても
受け入れるようになります。
https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/dataset-datatable-dataview/datatable-constraints
EnforceConstraints プロパティを戻せばエラー判定が再開されて
例外として通知されます。
どの行でエラーになっているのかは、DataTable の GetErrors メソッドで得られます。
行にエラーがあるかは、DataRow の HasErrors プロパティで得られます。
行内のどの列がエラー要因なのかは、DataRow の GetColumnsInError メソッドで得られます。
エラー内容は、DataRow の GetColumnError メソッドで得られます。
DataGridView については、ShowCellErrors / ShowRowErrors プロパティの指定により、
こうしたエラー状態を表示するかどうかを制御できます。
DataGridView にエラーアイコンを表示する方法は、下記が参考になるかと思います。
https://dobon.net/vb/dotnet/datagridview/showcellerrors.html
> 自分で作ったボタンを押すとテーブルアダプタのアップデートメソッドが働き、
型付DataSet をお使いなのですね。
Update メソッドを呼びだす前に、入力内容の制約チェックを実施しておきましょう。
> 「Data Error イベントをハンドルしてください」と表示されてしまいました。
Data Error イベントではなく、
DataError イベントですね。
DataGridView の DataError イベントでは、引数 e から、
問題となった行・列・例外内容を拾うことができます。
そして、e.ThrowException と e.Cancel の組み合わせにより、
例外を握りつぶすのか、そのまま例外処理を続けるのかを指示できます。